适用于:SQL Server - Linux
SQL Server 作业用于在 SQL Server 数据库中定期执行相同的命令序列。 本教程提供使用 Transact-SQL 和 SQL Server Management Studio (SSMS) 在 Linux 上创建 SQL Server 代理作业的示例。
- 在 Linux 上安装 SQL Server 代理
- 创建新作业以执行每日数据库备份
- 计划并运行作业
- 在 SSMS 中执行相同的步骤(可选)
有关 Linux 上的 SQL Server 代理的已知问题,请参阅 Linux 上的 SQL Server 2017 发行说明。
先决条件
若要完成本教程,需满足以下先决条件:
满足以下先决条件的 Linux 计算机:
以下先决条件是可选的:
- 带有 SSMS 的 Windows 计算机:
- 下载 SQL Server Management Studio (SSMS) 以获取可选的 SSMS 步骤。
启用 SQL Server 代理
若要在 Linux 上使用 SQL Server 代理,必须先在安装了 SQL Server 的计算机上启用 SQL Server 代理。
若要启用 SQL Server 代理,请执行以下步骤。
sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true
使用以下命令重新启动 SQL Server:
sudo systemctl restart mssql-server
注意
从 SQL Server 2017 (14.x) CU4 开始,SQL Server 代理包含在包 mssql-server
中,默认情况下处于禁用状态。 有关 CU 4 之前的代理设置,请参阅 在 Linux 上安装 SQL Server 代理。
创建示例数据库
使用以下步骤创建名为 SampleDB
的示例数据库。 此数据库用于每日备份作业。
在 Linux 计算机上,打开 bash 终端会话。
使用 sqlcmd 运行 Transact-SQL
CREATE DATABASE
命令。/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -Q 'CREATE DATABASE SampleDB'
通过列出服务器上的数据库来验证是否已创建该数据库。
/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -Q 'SELECT name FROM sys.databases'
使用 Transact-SQL 创建作业
以下步骤使用 Transact-SQL 命令在 Linux 上创建 SQL Server 代理作业。 该作业运行示例数据库 SampleDB
的每日备份。
提示
可以使用任何 T-SQL 客户端运行这些命令。 例如,在 Linux 上,你可以使用安装 SQL Server 命令行工具 sqlcmd 和 bcp或适用于 Visual Studio Code 的 SQL Server 扩展。 在远程 Windows Server 中,还可以在 SQL Server Management Studio (SSMS) 中运行查询,或使用 UI 界面进行作业管理,下一部分将对此进行说明。
使用sp_add_job创建名为
Daily SampleDB Backup
的作业。-- Adds a new job executed by the SQLServerAgent service -- called 'Daily SampleDB Backup' USE msdb; GO EXECUTE dbo.sp_add_job @job_name = N'Daily SampleDB Backup'; GO
调用 sp_add_jobstep 来创建
SampleDB
数据库的备份。EXECUTE sp_add_jobstep @job_name = N'Daily SampleDB Backup', @step_name = N'Backup database', @subsystem = N'TSQL', @command = N'BACKUP DATABASE SampleDB TO DISK = \ N''/var/opt/mssql/data/SampleDB.bak'' WITH NOFORMAT, NOINIT, \ NAME = ''SampleDB-full'', SKIP, NOREWIND, NOUNLOAD, STATS = 10', @retry_attempts = 5, @retry_interval = 5; GO
然后使用 sp_add_schedule为作业创建每日计划。
-- Creates a schedule called 'Daily' EXECUTE dbo.sp_add_schedule @schedule_name = N'Daily SampleDB', @freq_type = 4, @freq_interval = 1, @active_start_time = 233000; USE msdb; GO
使用 sp_attach_schedule将作业计划附加到作业。
-- Sets the 'Daily' schedule to the 'Daily SampleDB Backup' Job EXECUTE sp_attach_schedule @job_name = N'Daily SampleDB Backup', @schedule_name = N'Daily SampleDB'; GO
使用 sp_add_jobserver 将作业分配给目标服务器。 此示例中的目标是本地服务器。
EXECUTE dbo.sp_add_jobserver @job_name = N'Daily SampleDB Backup', @server_name = N'(local)'; GO
使用 sp_start_job启动作业。
EXECUTE dbo.sp_start_job N' Daily SampleDB Backup'; GO
使用 SSMS 创建作业
还可以在 Windows 上使用 SQL Server Management Studio (SSMS) 远程创建和管理作业。
在 Windows 上启动 SSMS 并连接到 Linux SQL Server 实例。 有关详细信息,请参阅 在 Windows 上使用 SQL Server Management Studio 管理 Linux 上的 SQL Server。
验证是否已创建名为
SampleDB
的示例数据库。验证 SQL 代理是否已 在 Linux 上安装 SQL Server 代理 并正确配置。 在对象资源管理器中,找到 SQL Server 代理旁边的加号。 如果未启用 SQL Server 代理,请尝试在 Linux 上重启 mssql-server 服务。
创建新作业。
指定作业名称并创建作业步骤。
指定要使用的子系统以及作业步骤应执行的操作。
创建新的作业计划。
启动作业。
下一步
在本教程中,你了解了如何执行以下操作:
- 在 Linux 上安装 SQL Server 代理
- 使用 Transact-SQL 和系统存储过程来创建作业
- 创建用于执行每日数据库备份的作业
- 使用 SSMS UI 创建和管理作业
接下来,探索用于创建和管理作业的其他功能: