#INCLUDE DEFINES.H
PARAMETER cScrptName, cAppName, cDbName, cInstallPath
** cScrptType is 'FULL' or 'AUDIT'
PUBLIC oSqlSrvr, oDb
STORE .F. TO llError, lRelease, llSchemaAdded
ON ERROR llError = .T.
lnParams = PARAMETERS()
IF lnParams < 3
WAIT WINDOW "Usage: Onlyindx <Script Name>, <App Name>, <Database Name>"
ON ERROR
RETURN
ENDIF
IF TYPE('osqlsrvr') <> 'O'
WAIT WINDOW NOWAIT "Connecting to SQL Server..."
osqlsrvr = createobject('sqlole.sqlserver')
IF TYPE('oSQLSrvr') <> 'O'
WAIT WINDOW "Unable to create SQL Server OLE object." TIME 2.0
RELEASE osqlSrvr
ON ERROR
RETURN
ENDIF
ret =osqlsrvr.connect(_SQL_SERVER, _SQL_LOGIN, _SQL_PASSWORD)
lRelease = .T.
ENDIF
oDb = osqlsrvr.databases(cDbName)
IF TYPE('oDb') <> 'O'
WAIT WINDOW "Unable to create SQL Server Database object." TIME 2.0
RELEASE osqlSrvr, oDb
ON ERROR
RETURN
ENDIF
WAIT WINDOW NOWAIT "Obtaining Tables List..."
STORE FCREATE(_LOG_PATH + "\" + cAppName + ' TableIndexes Error.log') TO eh
STORE FCREATE(cScrptName) TO _TEXT
STORE FCREATE(_LOG_PATH + "\" + UPPER(cAppName) + ' TableIndexes Audit.log') TO ah
IF _TEXT = -1
WAIT WINDOW "Unable to create output file." TIMEOUT 2.0
RELEASE ALL
ON ERROR
RETURN
ENDIF
SET TEXTMERGE ON NOSHOW
TEXT
/******************** Script Started: <<TTOC(DATETIME())>> ********************/
ENDTEXT
USE (IIF(TYPE('cInstallPath') = 'C', cInstallPath, _INSTALL_PATH) + "\" + cAppName + "_Tables")
lcCount = ALLT(STR(RECCOUNT()))
lnRecCount = 0
SELECT COUNT(*) FROM (cAppName + "_Tables") WHERE UPPER(ALLT(Type)) = 'VIEW' INTO ARRAY alnViewCnt
IF _TALLY = 0
DIMENSION alnViewCnt[1]
alnViewCnt[1] = 0
ENDIF
** Only for full scripting with DRI
TEXT
PRINT 'Creating Indexes for Tables...'
GO
ENDTEXT
** Generate indexes for the tables now.
lcCount = ALLT(STR(RECCOUNT()))
lnRecCount = 0
SCAN FOR Order > 0
lnRecCount = lnRecCount + 1
jcType = UPPER(EVALUATE(cAppName + "_Tables.Type"))
cTblName = "dbo." + ALLT(EVALUATE(cAppName + "_Tables.Name"))
WAIT WINDOW NOWAIT "Generating indexes for " + cTblName + "..." + ;
ALLT(STR(lnRecCount)) + "/" + lcCount
IF jcType = 'TABLE'
TEXT
<<oDb.Tables(cTblName).Script(_INDEX_SCRIPT)>>
ENDTEXT
ENDIF
IF llError
llError = .F.
= FPUTS(eH, cTblName + ":" + MESS())
= FFLUSH(eH)
ELSE
= FPUTS(ah, cTblName)
= FFLUSH(ah)
ENDIF
= FFLUSH(_TEXT)
ENDSCAN
** Only for full scripting with DRI
USE
TEXT
/******************** Script Ended: <<TTOC(DATETIME())>> ********************/
PRINT 'Creation of Indexes Completed.'
GO
ENDTEXT
= FCLOSE(ah)
SET TEXTMERGE OFF
SET TEXTMERGE TO
IF FSEEK(eh, 0, 2) > 0
= FCLOSE(eh)
cLogFile = _LOG_PATH + "\" + cAppName + ' TableIndexes Error.log'
MODI FILE &cLogFile NOWAIT
ELSE
= FCLOSE(eh)
ENDIF
IF lRelease
WAIT WINDOW NOWAIT "Releasing Resources..."
osqlsrvr.Close
RELEASE ALL
CLEAR ALL
WAIT CLEAR
ON ERROR
RETURN
ENDIF
MODI FILE (cScrptName)
This page was last updated on May 01, 2006 04:28 PM.