备份日志文件时,用于备份数据文件的游标脚本失败

时间:2019-06-23 00:25:24

标签: cursor database-backups

我在这里找到了一个方便的脚本,该脚本允许我通过游标备份所有非系统数据库。我在这里找到它: https://solutioncenter.apexsql.com/create-daily-database-backups-with-unique-names-in-sql-server/

我只更改了脚本中的一件事: 这样成功:        SET @fileName = @path + @name +'_'+ @dayname +'.BAK'
       备份数据库@name到磁盘= @fileName,带有NOFORMAT,INIT,SKIP,REWIND,NOUNLOAD,COM​​PRESSION,STATS = 10

这将备份所有日志,但是完成后,作业将报告失败状态。        SET @fileName = @path + @name +'_'+ @dayname +'.TRN'
       备份日志@name到磁盘= @fileName,带有NOFORMAT,INIT,SKIP,REWIND,NOUNLOAD,COM​​PRESSION,STATS = 10

我也删除了所有参数,但完成后仍然失败。

-上面网站的完整脚本在这里。

-脚本2:备份所有非系统数据库

-1。变量声明

DECLARE @path VARCHAR(500)
DECLARE @name VARCHAR(500)
DECLARE @filename VARCHAR(256)
DECLARE @time DATETIME
DECLARE @year VARCHAR(4)
DECLARE @month VARCHAR(2)
DECLARE @day VARCHAR(2)
DECLARE @hour VARCHAR(2)
DECLARE @minute VARCHAR(2)
DECLARE @second VARCHAR(2)

-2.设置备份路径

SET @path = 'E:\Backup\'  

-3.获取时间值

SELECT @time = GETDATE()
SELECT @year   = (SELECT CONVERT(VARCHAR(4), DATEPART(yy, @time)))
SELECT @month  = (SELECT CONVERT(VARCHAR(2), FORMAT(DATEPART(mm,@time),'00')))
SELECT @day    = (SELECT CONVERT(VARCHAR(2), FORMAT(DATEPART(dd,@time),'00')))
SELECT @hour   = (SELECT CONVERT(VARCHAR(2), FORMAT(DATEPART(hh,@time),'00')))
SELECT @minute = (SELECT CONVERT(VARCHAR(2), FORMAT(DATEPART(mi,@time),'00')))
SELECT @second = (SELECT CONVERT(VARCHAR(2), FORMAT(DATEPART(ss,@time),'00')))

-4.定义光标操作

DECLARE db_cursor CURSOR FOR  
SELECT name 
FROM master.dbo.sysdatabases 
WHERE name NOT IN ('master','model','msdb','tempdb')  -- system databases     are excluded

-5。初始化光标操作

OPEN db_cursor   
FETCH NEXT FROM db_cursor INTO @name   

WHILE @@FETCH_STATUS = 0   
BEGIN

-6.定义文件名格式

   SET @fileName = @path + @name + '_' + @year + @month + @day + @hour + @minute + @second + '.BAK'  
   BACKUP DATABASE @name TO DISK = @fileName  


   FETCH NEXT FROM db_cursor INTO @name   
END   
CLOSE db_cursor   
DEALLOCATE db_cursor

我从DATABASE更改了数据库备份。成功。 记录。成功后失败。 回到数据库。成功。

尽管LOG成功,但最后的失败使我无法进行下一步。

0 个答案:

没有答案