在 SQL Server Express 中计划和自动备份 SQL Server 数据库

本文介绍如何使用 Transact-SQL 脚本和 Windows 任务计划程序按计划自动备份 SQL Server Express 数据库。

原始产品版本:SQL Server
原始 KB 数: 2019698

总结

SQL Server Express 版本不提供计划作业或维护计划的方法,因为这些版本中不包括SQL Server 代理组件。 因此,在使用这些版本时,必须采用不同的方法来备份数据库。

目前,SQL Server Express 用户可以使用下列方法之一备份其数据库:

使用 SQL Server Management StudioAzure Data Studio。 有关如何使用这些工具备份数据库的详细信息,请查看以下链接:

本文介绍如何将 Transact-SQL 脚本与任务计划程序一起使用,以便按计划自动备份 SQL Server Express 数据库。

备注

这仅适用于 SQL Server Express 版本,不适用于 SQL Server Express LocalDB。

如何在 SQL Express 中创建计划备份

必须使用 Windows 任务计划程序执行以下四个步骤来备份 SQL Server 数据库:

步骤 1:创建用于备份数据库的存储过程

使用以下位置的脚本连接到 SQL 快速实例并在 master 数据库中创建 sp_BackupDatabases 存储过程:

SQL_Express_Backups

步骤 2:下载 SQLCMD 客户端实用工具

sqlcmd 实用工具允许你输入 Transact-SQL 语句、系统过程和脚本文件。 在 SQL Server 2014 和更低版本中,实用工具作为产品的一部分提供。 从 SQL Server 2016 开始, sqlcmd 实用工具作为单独的下载提供。 有关详细信息,请查看 sqlcmd 实用工具

步骤 3:使用文本编辑器创建批处理文件

在文本编辑器中,创建一 个名为Sqlbackup.bat的批处理文件,然后根据方案,将以下示例中的一个文本复制到该文件中:

  • 以下所有方案都用作 D:\SQLBackups 位置持有者。 脚本需要调整到环境中正确的驱动器和备份文件夹位置。

  • 如果使用 SQL 身份验证,请确保对文件夹的访问仅限于经过授权的用户,因为密码以明文形式存储。

备注

可执行文件的文件夹 SQLCMD 通常位于安装 SQL Server 后或安装为独立工具后服务器的 Path 变量中。 但是,如果 Path 变量未列出此文件夹,则可以将其位置添加到 Path 变量或指定实用工具的完整路径。

示例 1:使用 Windows 身份验证对 SQLEXPRESS 本地命名实例中的所有数据库进行完整备份

 // Sqlbackup.bat
 sqlcmd -S .\SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation='D:\SQLBackups\', @backupType='F'"

示例 2:使用 SQLLogin 及其密码对 SQLEXPRESS 本地命名实例中的所有数据库进行差异备份

 // Sqlbackup.bat
sqlcmd -U <YourSQLLogin> -P <StrongPassword> -S .\SQLEXPRESS -Q "EXEC sp_BackupDatabases @backupLocation ='D:\SQLBackups', @BackupType='D'"

备注

SQLLogin 至少应在 SQL Server 中具有备份操作员角色。

示例 3:使用 Windows 身份验证记录 SQLEXPRESS 本地命名实例中所有数据库的备份

 // Sqlbackup.bat
 sqlcmd -S .\SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation='D:\SQLBackups\',@backupType='L'"

示例 4:使用 Windows 身份验证在 SQLEXPRESS 的本地命名实例中完整备份数据库 USERDB

 // Sqlbackup.bat
 sqlcmd -S .\SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation='D:\SQLBackups\', @databaseName='USERDB', @backupType='F'"

同样,可以通过将 @backupType 参数的“D”粘贴到“D”,将 USERDB 的日志备份粘贴到@backupType参数的“L”中,从而创建 USERDB 的差异备份。

步骤 4:使用 Windows 任务计划程序计划作业来执行在步骤 2 中创建的批处理文件

执行以下步骤:

  1. 在运行 SQL Server Express 的计算机上,在文本框中选择“开始”并键入任务计划程序

    开始菜单搜索栏中“任务计划程序桌面”应用选项的屏幕截图。

  2. 在“最佳匹配”下,选择“任务计划程序”以启动它。

  3. 任务计划程序中,右键单击 “任务计划程序”(本地), 然后选择“ 创建基本任务”。

  4. 输入新任务的名称(例如 SQLBackup),然后选择“ 下一步”。

  5. 为任务触发器选择 “每日 ”,然后选择“ 下一步”。

  6. 将重复周期设置为一天,然后选择“ 下一步”。

  7. 选择“ 启动程序 ”作为操作,然后选择“ 下一步”。

  8. 选择“浏览”,选择在步骤 3 中创建的批处理文件,然后选择“打开”。

  9. 单击“完成”复选框时,选择此任务的“打开属性”对话框。

  10. “常规 ”选项卡中:

    • 查看“安全”选项,确保运行该任务的用户帐户(在运行任务时列出),用户以下用户帐户:

      该帐户至少应具有“读取”和“执行”权限才能启动 sqlcmd 该实用工具。 另外,

      • 如果在批处理文件中使用 Windows 身份验证,请确保任务所有者有权执行 SQL 备份。

      • 如果在批处理文件中使用 SQL 身份验证,SQL 用户应具有执行 SQL 备份所需的权限。

    • 根据要求调整其他设置。

提示

作为测试,请从 步骤 3 中从命令提示符运行批处理文件,该命令提示符以拥有该任务的同一用户帐户启动。

要求

使用本文中所述的过程时,请注意以下要求:

  • 任务计划程序服务必须在计划作业运行时运行。 建议将此服务的启动类型设置为 “自动”。 这可确保即使在重启时服务也会运行。

  • 必须在写入备份的驱动器上创建足够的空间。 建议定期清理备份文件夹中的旧文件,以确保磁盘空间不足。 该脚本不包含清理旧文件的逻辑。

其他参考

任务计划程序概述