备份所有数据库的脚本

Jer*_*dge 2 sql-server backup scripting automation

我正在 SQL 2008 R2 Express 上自动备份 SQL Server 数据库。这些备份由 Windows 任务计划程序每天启动,它执行一个批处理文件,然后执行一个 SQL 脚本。我无法使用 SQL 代理,因为这是快速版本。

目前,我正在编写一个脚本,一个一个备份每个数据库。然而,这是相当高的维护 - 每次添加、删除或重命名数据库时,我都必须修改此脚本以反映这些更改。相反,我想编写一个 SQL 脚本来一次备份所有数据库,而不需要一个一个地明确备份每个数据库。

这是当前用于备份单个数据库的脚本:

Print 'Backing up MyDatabase...'
BACKUP DATABASE MyDatabase
TO DISK = 'F:\Backups\SQL Databases\MyDatabase.bak'
   WITH FORMAT,
      NAME = 'Full Backup of MyDatabase';
GO
Run Code Online (Sandbox Code Playgroud)

如何枚举所有数据库的列表并执行循环以对所有数据库执行此备份?

只是备份过程的一些附加说明:

  • Windows 中的计划任务每​​天晚上 9:00 执行批处理文件
  • 批处理文件调用执行 SQL 脚本的 OSQL
  • OSQL 输出保存结果的文本文件
  • 大约有30个数据库需要备份
  • 一些数据库超过 2GB(所以需要一些时间)
  • 第三方备份服务获取生成的备份文件,并在每晚午夜将其推送到异地

KAS*_*DBA 5

相信你可以参考ola.hallengren。SQL 服务器备份脚本。

如关于如何使用 SQL server Express 所述:

SQL Server Express 没有 SQL Server 代理。因此,必须使用 cmd 文件和 Windows 计划任务来计划存储过程的执行。按着这些次序。

  • 下载维护解决方案.sql。
  • 执行 MaintenanceSolution.sql。此脚本创建您需要的存储过程。
  • 创建cmd文件来执行存储过程;例如:sqlcmd -E -S .\SQLEXPRESS -d master -Q "EXECUTE dbo.DatabaseBackup
    @Databases = 'USER_DATABASES', @Directory = N'C:\Backup', @BackupType = 'FULL'" -b -o C:\Log\DatabaseBackup.txt
  • 在 Windows 计划任务中,创建任务以调用 cmd 文件。
  • 安排任务。
  • 启动任务并验证它们是否成功完成。

现在您可以根据需要轻松修改它。

注意:在维护解决方案中,您只能单独下载 SQL 服务器备份脚本。