此代码在 SQL 2005 中运行良好,但似乎错过了 SQL 2008 或 SQL 2008R2 中选择末尾的随机记录数。我使用此代码备份生产服务器上的数据库。2008 服务器上有 37 个 db(不包括 tempdb),它每天备份 17 到 35 个这些 db(即使我运行选择,我总是返回 37 行)。它所在的作业完成且没有错误,但不会备份所有数据库。
DECLARE @today VARCHAR(10)
SELECT @today = Convert(varchar(10),dateadd(day,0,Dateadd(day,datediff(day,0,getdate()),0)),120)
DECLARE @DBName varchar(500)
DECLARE DB_Cursor CURSOR FOR
SELECT name FROM sys.databases
OPEN DB_Cursor;
FETCH NEXT FROM DB_Cursor INTO @DBNAME
WHILE @@FETCH_STATUS = 0
BEGIN
IF @DBNAME <> 'tempdb'
BEGIN
declare @Path varchar(500)
select @Path = 'g:\DBBackups\'
declare @FileName varchar(4000)
select @FileName = @Path + @DBNAME + '_Full_' + @today + '.bak'
BACKUP DATABASE @DBName
TO DISK = @FileName
WITH NoInit, NoFormat, SKIP
END
FETCH NEXT FROM DB_Cursor INTO @DBNAME;
END;
CLOSE DB_Cursor;
DEALLOCATE DB_Cursor;