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

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

原始产品版本:SQL Server
原始 KB 编号: 2019698

摘要

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

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

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

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

注意

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

更多信息

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

步骤 A:创建存储过程以备份数据库。

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

SQL_Express_Backups

步骤 B: (下载 SQLCMD 工具(如果适用) )。

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

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

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

  • 以下所有情况都使用 D:\SQLBackups 作为占位符。 脚本需要调整到环境中右侧的驱动器和备份文件夹位置。

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

注意

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

示例 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”中,将 USERDB 的日志备份粘贴到 @backupType参数的 “L”中来创建 USERDB 的差异备份。

步骤 D:使用 Windows 任务计划程序计划作业以执行在步骤 B 中创建的批处理文件。要完成此操作,请执行以下步骤:

  1. 在运行SQL Server Express的计算机上,单击“开始”,然后在文本框中键入“任务计划程序”。

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

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

  3. 在“任务计划程序”中,右键单击“ 任务计划库 ”,然后单击“ 创建基本任务...”

  4. 输入新任务的名称(例如:SQLBackup),然后单击“下一步”

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

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

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

  8. 单击“浏览”,单击在步骤 C 中创建的批处理文件,然后单击“打开”

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

  10. 在“常规”选项卡中,

    1. 查看“安全”选项,确保运行任务的用户帐户的以下内容 (在“运行任务时,使用以下用户帐户:)

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

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

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

    2. 根据要求调整其他设置。

提示

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

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

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

  • 要将备份写入其中的驱动器上应存在大量空间。 建议定期清理“备份”文件夹中的旧文件,以确保磁盘空间不会耗尽。 该脚本不包含用于清理旧文件的逻辑。

其他参考

任务计划程序概述