我试图备份我的所有SQL Server数据库,并从here遇到以下脚本:
DECLARE @name VARCHAR(50) -- database name
DECLARE @path VARCHAR(256) -- path for backup files
DECLARE @fileName VARCHAR(256) -- filename for backup
DECLARE @fileDate VARCHAR(20) -- used for file name
SET @path = 'C:\Backup\'
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)
DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE name NOT IN ('master','model','msdb','tempdb')
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @fileName = @path + @name + '_' + @fileDate + '.BAK'
BACKUP DATABASE @name TO DISK = @fileName
FETCH NEXT FROM db_cursor INTO @name
END
CLOSE db_cursor
DEALLOCATE db_cursor
除非我认为在恢复数据库之后我必须重建数据库的所有索引,否则它的工作原理非常好。我想知道是否可以转储所有索引的CREATE
语句,以便在恢复所有这些数据库之后可以一次性重新运行它们?
答案 0 :(得分:2)
这是定期维护备份操作吗?如果没有,则必须添加WITH COPY_ONLY
子句,否则会破坏备份链。
作为常规维护备份,这很差:
[a:b]
的数据库将创建无效的文件名并始终失败)。但最终的根本问题是你从错误的角度看待它。您的目标不是制定备份计划,而是制定恢复计划。在这里阅读更多内容:Importance of testing your disaster recovery plan。顺便说一句,您还需要master
的恢复计划。
关于索引的问题,我认为您根本不了解SQL Server备份的工作原理。从这里开始:SQL Server: Recovering from Disasters Using Backups