我在这里找到了一个方便的脚本,该脚本允许我通过游标备份所有非系统数据库。我在这里找到它: 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,COMPRESSION,STATS = 10
这将备份所有日志,但是完成后,作业将报告失败状态。
SET @fileName = @path + @name +'_'+ @dayname +'.TRN'
备份日志@name到磁盘= @fileName,带有NOFORMAT,INIT,SKIP,REWIND,NOUNLOAD,COMPRESSION,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成功,但最后的失败使我无法进行下一步。