0
我们有一项工作,每天晚上运行脚本以在我们所有数据库上进行完整备份。最近,我们注意到有时会跳过最后两个数据库,但不是全部。我们有一个跟踪表,我们在进行备份时插入每个数据库的状态。在最后两个数据库被跳过的晚上,这些数据库的状态也不会记录在跟踪表中。我们无法弄清楚为什么会跳过这些数据库。这是我们所使用的备份脚本:完整备份偶尔会跳过某些数据库
DECLARE @dbname VARCHAR(100),
@dbid INT,
@rcmodel VARCHAR(50),
@state VARCHAR(60),
@date VARCHAR(50),
@time VARCHAR(50),
@sql VARCHAR(3000),
@dir VARCHAR(1000),
@path VARCHAR(100),
@type VARCHAR(10)
SET @path = 'E:\Backups\'
SET @type = 'Full'
SET @date = REPLACE(CONVERT(date,GETDATE(),101),'-','_')
SET @time = REPLACE(CONVERT(TIME(0), GETDATE()),':','_')
SET @path = @path + CONVERT(VARCHAR(30),@@SERVERNAME) + '\' + @type + '\'
DECLARE BackupCur CURSOR FOR
SELECT NAME, database_id, recovery_model_desc, state_desc
FROM sys.databases
WHERE NAME <> 'tempdb'
OPEN BackupCur
FETCH NEXT FROM BackupCur INTO @dbname, @dbid, @rcmodel, @state
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO backuptrackingtable (db, statedesc, datecreated)
values (@dbname, @state, GETDATE())
IF @type = 'Full' AND @state = 'ONLINE'
BEGIN
SET @dir = 'EXECUTE master.dbo.xp_create_subdir N'''[email protected][email protected]+''''
SET @sql = 'BACKUP DATABASE '[email protected]+' TO DISK = N'''[email protected][email protected]+'\'[email protected]+'_'[email protected]+'.bak'' WITH NOFORMAT, INIT, SKIP, REWIND, NOUNLOAD, COMPRESSION'
PRINT 'Backing up ' + @dbname
EXEC (@dir)
EXEC (@sql)
END
IF @type = 'Log' AND @dbid > 4 AND @rcmodel = 'FULL' AND @state = 'ONLINE'
BEGIN
SET @dir = 'EXECUTE master.dbo.xp_create_subdir N'''[email protected][email protected]+''''
SET @sql = 'BACKUP LOG '[email protected]+' TO DISK = N'''[email protected][email protected]+'\'[email protected]+'_'[email protected]+'__'[email protected]+'.bak'' WITH NOFORMAT, INIT, SKIP, REWIND, NOUNLOAD, COMPRESSION'
PRINT 'Backing up ' + @dbname
EXEC (@dir)
EXEC (@sql)
END
FETCH NEXT FROM BackupCur INTO @dbname, @dbid, @rcmodel, @state
END
CLOSE BackupCur
DEALLOCATE BackupCur
属于http://dba.stackexchange.com/ – Aaron 2012-01-18 21:12:41