MCPcopy Create free account
hub / github.com/ActiveState/code / BuildTlogSQL

Function BuildTlogSQL

recipes/Python/578977_Python_SQLSMO_/recipe-578977.py:157–207  ·  view source on GitHub ↗

- check for log backups DECLARE backupFiles CURSOR FOR SELECT backupFile FROM @fileList WHERE backupFile LIKE '%.TRN' AND backupFile LIKE @dbName + '%' AND backupFile > @lastFullBackup OPEN backupFiles -- Loop through all the files for the database FETCH NEXT

(dbname, sourcedb, bkfolder, recovery = 'NORECOVERY', BACKUP_MASK = '_backup_20*.BAK', LOG_MASK = '_backup_20*.TRN')

Source from the content-addressed store, hash-verified

155
156
157def BuildTlogSQL(dbname, sourcedb, bkfolder, recovery = 'NORECOVERY', BACKUP_MASK = '_backup_20*.BAK', LOG_MASK = '_backup_20*.TRN'):
158 """
159 - check for log backups
160 DECLARE backupFiles CURSOR FOR
161 SELECT backupFile
162 FROM @fileList
163 WHERE backupFile LIKE '%.TRN'
164 AND backupFile LIKE @dbName + '%'
165 AND backupFile > @lastFullBackup
166 OPEN backupFiles
167 -- Loop through all the files for the database
168 FETCH NEXT FROM backupFiles INTO @backupFile
169 WHILE @@FETCH_STATUS = 0
170 BEGIN
171 SET @cmd = 'RESTORE LOG ' + @dbName + ' FROM DISK = '''
172 + @backupPath + @backupFile + ''' WITH NORECOVERY'
173 PRINT @cmd
174 FETCH NEXT FROM backupFiles INTO @backupFile
175 END
176 CLOSE backupFiles
177 DEALLOCATE backupFiles
178 -- 6 - put database in a useable state
179 SET @cmd = 'RESTORE DATABASE ' + @dbName + ' WITH RECOVERY'
180 PRINT @cmd
181 """
182
183 BKFILE = '____.BAK'
184 try:
185 BKFILE = GetLatestBackup(bkfolder, '\\' + sourcedb + BACKUP_MASK)[-1] # BACKUP_MASK = '_backup_20*.BAK'
186 except IndexError:
187 pass
188
189 s = ''
190
191 filter = '\\' + sourcedb + LOG_MASK
192 filelist = GetLatestBackup(bkfolder, filter )
193
194 if len(filelist) == 0:
195 print('No log files for ' + sourcedb)
196 if recovery == 'RECOVERY':
197 s = 'RESTORE DATABASE ' + dbname + ' WITH RECOVERY' + chr(13) + chr(10) + 'GO ' + chr(13) + chr(10)
198 return s
199 else:
200 for x in filelist:
201 if x[:-4] > BKFILE[:-4]: # this means the log file is older than the latest full backup file
202 s += 'RESTORE LOG ' + dbname + ' FROM DISK = ' + chr(39) + x + chr(39) + \
203 ' WITH NORECOVERY' + chr(13) + chr(10) + 'GO ' + chr(13) + chr(10)
204 if x[:-4] > BKFILE[:-4]:
205 if recovery == 'RECOVERY':
206 s += 'RESTORE DATABASE ' + dbname + ' WITH RECOVERY' + chr(13) + chr(10) + 'GO ' + chr(13) + chr(10)
207 return s
208
209# ----------------End of functions----------------------------------------
210

Callers

nothing calls this directly

Calls 2

GetLatestBackupFunction · 0.85
printFunction · 0.85

Tested by

no test coverage detected