- 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')
| 155 | |
| 156 | |
| 157 | def 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 |
nothing calls this directly
no test coverage detected