2009-08-04 43 views
1

我们需要在SQL Server实例内备份40个数据库。我们互为备用数据库与下面的脚本:如何构建一个脚本来备份SQL Server中的所有数据库?

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

...并恢复;你如何用脚本恢复? – 2014-06-25 11:10:15

回答

1

也许你可以检查sp_MSForEachDB存储过程。

EXEC sp_MSForEachDB 'EXEC sp_backup ?' 

哪里有?标记代表每次迭代中的当前数据库。

0

喜欢的东西:

DECLARE @SQL varchar(max) 
SET @SQL = '' 

SELECT @SQL = @SQL + 'BACKUP ' + Name + ' To Disk=''c:\' + Name + '.bak'';' 
    FROM sys.sysdatabases 

EXEC(@SQL) 
2

使用SqlBackupAndFTP,选择“备份所有非系统数据库”

+2

这太棒了,谢谢! – jrummell 2010-02-16 14:20:32

0

SQL Backup Master能够备份给定服务器实例上的所有数据库,然后将备份发送到Dropbox,FTP,Amazon S3,Google Drive或本地/网络文件夹。

相关问题