适用于:SQL Server 在 Linux 上
SQL Server作业用于在SQL Server数据库中定期执行相同的命令序列。 本教程示例展示了如何在Linux上同时使用 Transact-SQL(T-SQL)和SQL Server Management Studio(SSMS)创建SQL Server 代理作业。
- 在Linux上启用SQL Server 代理
- 创建新作业以执行每日数据库备份
- 计划并运行作业
- 在 SSMS 中执行相同的步骤(可选)
有关 Linux 上的SQL Server 代理的已知问题,请参阅 Linux 上的 SQL Server:已知问题。
先决条件
若要完成本教程,需满足以下先决条件:
满足以下先决条件的 Linux 计算机:
- Quickstart:在 Red Hat Enterprise Linux 上安装SQL Server并创建数据库
- Quickstart:在 SUSE Linux Enterprise Server 上安装SQL Server并创建数据库
- Quickstart:使用命令行工具在 Ubuntu 上安装SQL Server并创建数据库。
注意
从 SQL Server 2025(17.x)开始,不支持 SUSE Linux Enterprise Server (SLES)。
以下先决条件是可选的:
- 使用 SSMS Windows计算机:
- 对于可选的 SSMS 步骤,Install SQL Server Management Studio。
启用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) CU 4 开始,SQL Server 代理包含在 mssql-server 包中,默认禁用。 关于 CU 4 之前的 SQL Server 代理 on SQL Server,请参见“在 Linux 上安装 SQL Server 代理”。
创建示例数据库
使用以下步骤创建名为 SampleDB 的示例数据库。 此数据库用于每日备份作业。
在 Linux 计算机上,打开 bash 终端会话。
使用
sqlcmd运行 T-SQLCREATE 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 创建作业
以下步骤在Linux上创建SQL Server 代理作业,使用T-SQL命令。 该作业运行示例数据库 SampleDB 的每日备份。
提示
可以使用任何 T-SQL 客户端运行这些命令。 例如,在 Linux 上,你可以使用 在 Linux 上安装 sqlcmd 和 bcp SQL Server 命令行工具 或 适用于 Visual Studio Code 的 MSSQL 扩展。 从远程 Windows Server 上,你也可以在 SQL Server Management Studio(SSMS)中运行查询,或使用 SSMS 接口进行作业管理,具体内容将在下一节描述。
使用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 SampleDB' 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 SampleDB' 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 Server 代理安装和配置正确。 在对象资源管理器中,查找 SQL Server 代理 旁边的加号。 如果 SQL Server 智能体未启用,请尝试在 Linux 上重新启动
mssql-server服务。
创建新作业。
指定作业名称并创建作业步骤。
指定要使用的子系统以及作业步骤应执行的操作。
创建新的作业计划。
开始工作。
下一步
在本教程中,你了解了如何执行以下操作:
- 在Linux上启用SQL Server 代理
- 使用 T-SQL 和系统存储过程来创建作业
- 创建用于执行每日数据库备份的作业
- 使用 SSMS UI 创建和管理作业
接下来,探索用于创建和管理作业的其他功能: