在 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 Studio 或 Azure Data Studio。 有关如何使用这些工具备份数据库的详细信息,请查看以下链接:
使用使用 BACKUP DATABASE 系列命令的 Transact-SQL 脚本。 有关详细信息,请参阅 BACKUP (Transact-SQL)。
本文介绍如何将 Transact-SQL 脚本与任务计划程序一起使用,以便按计划自动备份 SQL Server Express 数据库。
备注
这仅适用于 SQL Server Express 版本,不适用于 SQL Server Express LocalDB。
如何在 SQL Express 中创建计划备份
必须使用 Windows 任务计划程序执行以下四个步骤来备份 SQL Server 数据库:
步骤 1:创建用于备份数据库的存储过程
使用以下位置的脚本连接到 SQL 快速实例并在 master 数据库中创建 sp_BackupDatabases
存储过程:
步骤 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 中创建的批处理文件
执行以下步骤:
在运行 SQL Server Express 的计算机上,在文本框中选择“开始”并键入任务计划程序。
在“最佳匹配”下,选择“任务计划程序”以启动它。
在 任务计划程序中,右键单击 “任务计划程序”(本地), 然后选择“ 创建基本任务”。
输入新任务的名称(例如 SQLBackup),然后选择“ 下一步”。
为任务触发器选择 “每日 ”,然后选择“ 下一步”。
将重复周期设置为一天,然后选择“ 下一步”。
选择“ 启动程序 ”作为操作,然后选择“ 下一步”。
选择“浏览”,选择在步骤 3 中创建的批处理文件,然后选择“打开”。
单击“完成”复选框时,选择此任务的“打开属性”对话框。
在 “常规 ”选项卡中:
查看“安全”选项,确保运行该任务的用户帐户(在运行任务时列出),用户以下用户帐户:
该帐户至少应具有“读取”和“执行”权限才能启动
sqlcmd
该实用工具。 另外,如果在批处理文件中使用 Windows 身份验证,请确保任务所有者有权执行 SQL 备份。
如果在批处理文件中使用 SQL 身份验证,SQL 用户应具有执行 SQL 备份所需的权限。
根据要求调整其他设置。
提示
作为测试,请从 步骤 3 中从命令提示符运行批处理文件,该命令提示符以拥有该任务的同一用户帐户启动。
要求
使用本文中所述的过程时,请注意以下要求:
任务计划程序服务必须在计划作业运行时运行。 建议将此服务的启动类型设置为 “自动”。 这可确保即使在重启时服务也会运行。
必须在写入备份的驱动器上创建足够的空间。 建议定期清理备份文件夹中的旧文件,以确保磁盘空间不足。 该脚本不包含清理旧文件的逻辑。