我们需要在SQL Server实例中备份40个数据库。我们使用以下脚本备份每个数据库:
BACKUP DATABASE [dbname1] TO DISK = N'J:\SQLBACKUPS\dbname1.bak' WITH NOFORMAT, INIT, NAME = N'dbname1-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
declare @backupSetId as int
select @backupSetId = position from msdb..backupset where database_name=N'dbname1' and backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=N'dbname1' )
if @backupSetId is null begin raiserror(N'Verify failed. Backup information for database ''dbname1'' not found.', 16, 1) end
RESTORE VERIFYONLY FROM DISK = N'J:\SQLBACKUPS\dbname1.bak' WITH FILE = @backupSetId, NOUNLOAD, NOREWIND
GO
我们希望在脚本中添加获取每个数据库并在上面的脚本中替换它的功能。基本上是一个脚本,它将从引擎创建并验证每个数据库备份。
我正在寻找类似的东西:
For each database in database-list
sp_backup(database) // this is the call to the script above.
End For
任何想法?
答案 0 :(得分:2)
使用SqlBackupAndFTP。选择“备份所有非系统数据库”
答案 1 :(得分:1)
答案 2 :(得分:1)
您也说“验证”......这需要每个数据库发送第2条语句(RESTORE VERIFYONLY,以及提供的其他答案。
我正在调查使用maintenance plans来包含索引维护......
答案 3 :(得分:0)
类似的东西:
DECLARE @SQL varchar(max)
SET @SQL = ''
SELECT @SQL = @SQL + 'BACKUP ' + Name + ' To Disk=''c:\' + Name + '.bak'';'
FROM sys.sysdatabases
EXEC(@SQL)
答案 4 :(得分:0)
SQL Backup Master能够备份给定服务器实例上的所有数据库,然后将备份发送到Dropbox,FTP,Amazon S3,Google Drive或本地/网络文件夹。