IF OBJECT_ID('tempdb.dbo.#BackupHistory', 'U') IS NOT NULL
DROP TABLE #BackupHistory;
create table #BackupHistory(
DatabaseName varchar(100),
LogicalName varchar(max),
LastBackupDate date,
BackupPath varchar(max))
INSERT #BackupHistory(DatabaseName, LogicalName, LastBackupDate, BackupPath)
SELECT a.database_name, b.name, a.backup_finish, b.physical_device_name FROM
( SELECT
bset.database_name,
max(bset.backup_finish_date) as backup_finish
FROM msdb.dbo.backupmediafamily bfamily
INNER JOIN msdb.dbo.backupset bset ON bfamily.media_set_id = bset.media_set_id
WHERE bset.type = 'I'
OR bset.type = 'D'
GROUP BY bset.database_name
) a
INNER JOIN
( SELECT bset.database_name,
bset.name,
bset.backup_finish_date,
bfamily.physical_device_name
FROM msdb.dbo.backupmediafamily bfamily
INNER JOIN msdb.dbo.backupset bset ON bfamily.media_set_id = bset.media_set_id
) b
ON a.database_name = b.database_name
AND a.backup_finish = b.backup_finish_date
DECLARE @sqlStr varchar(max), @dbname varchar(50), @path varchar(max), @LogicalName varchar(max)
DECLARE db_cursor CURSOR FOR
SELECT DatabaseName from #BackupHistory ORDER BY DatabaseName;
OPEN db_cursor;
FETCH NEXT FROM db_cursor INTO @dbname;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @path = (SELECT BackupPath from #BackupHistory WHERE DatabaseName = @dbname)
SET @LogicalName = (SELECT LogicalName from #BackupHistory WHERE DatabaseName = @dbname)
SET @sqlStr= 'BACKUP LOG '+@dbname+'
TO DISK = '+@path+'
WITH NAME = '+@LogicalName+', COMPRESSION'
print @sqlStr
--EXEC (@sqlStr)
print char(13) + 'Looping.... Iteration.... Changing Database.....' + char(13) + char(13)
FETCH NEXT FROM db_cursor INTO @dbname;
END;
CLOSE db_cursor;
DEALLOCATE db_cursor;
DROP TABLE #BackupHistory
DROP TABLE #BackupHistory;
create table #BackupHistory(
DatabaseName varchar(100),
LogicalName varchar(max),
LastBackupDate date,
BackupPath varchar(max))
INSERT #BackupHistory(DatabaseName, LogicalName, LastBackupDate, BackupPath)
SELECT a.database_name, b.name, a.backup_finish, b.physical_device_name FROM
( SELECT
bset.database_name,
max(bset.backup_finish_date) as backup_finish
FROM msdb.dbo.backupmediafamily bfamily
INNER JOIN msdb.dbo.backupset bset ON bfamily.media_set_id = bset.media_set_id
WHERE bset.type = 'I'
OR bset.type = 'D'
GROUP BY bset.database_name
) a
INNER JOIN
( SELECT bset.database_name,
bset.name,
bset.backup_finish_date,
bfamily.physical_device_name
FROM msdb.dbo.backupmediafamily bfamily
INNER JOIN msdb.dbo.backupset bset ON bfamily.media_set_id = bset.media_set_id
) b
ON a.database_name = b.database_name
AND a.backup_finish = b.backup_finish_date
DECLARE @sqlStr varchar(max), @dbname varchar(50), @path varchar(max), @LogicalName varchar(max)
DECLARE db_cursor CURSOR FOR
SELECT DatabaseName from #BackupHistory ORDER BY DatabaseName;
OPEN db_cursor;
FETCH NEXT FROM db_cursor INTO @dbname;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @path = (SELECT BackupPath from #BackupHistory WHERE DatabaseName = @dbname)
SET @LogicalName = (SELECT LogicalName from #BackupHistory WHERE DatabaseName = @dbname)
SET @sqlStr= 'BACKUP LOG '+@dbname+'
TO DISK = '+@path+'
WITH NAME = '+@LogicalName+', COMPRESSION'
print @sqlStr
--EXEC (@sqlStr)
print char(13) + 'Looping.... Iteration.... Changing Database.....' + char(13) + char(13)
FETCH NEXT FROM db_cursor INTO @dbname;
END;
CLOSE db_cursor;
DEALLOCATE db_cursor;
DROP TABLE #BackupHistory