活动
在 Linux 上创建和运行 SQL Server 代理作业
适用于: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 计算机:
- 下载用于可选 SSMS 步骤的 SQL Server Management Studio。
若要在 Linux 上使用 SQL Server 代理,必须先在安装了 SQL Server 的计算机上启用 SQL Server 代理。
若要启用 SQL Server 代理,请执行以下步骤。
Bashsudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true
使用以下命令重新启动 SQL Server:
Bashsudo systemctl restart mssql-server
备注
从 SQL Server 2017 (14.x) CU4 开始,SQL Server 代理包含在包 mssql-server
中,默认情况下处于禁用状态。 对于 CU4 之前的代理安装,请访问在 Linux 上安装 SQL Server 代理。
使用以下步骤创建名为 SampleDB
的示例数据库。 此数据库用于每日备份作业。
在 Linux 计算机上,打开 bash 终端会话。
使用 sqlcmd 运行 Transact-SQL
CREATE DATABASE
命令。Bash/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -Q 'CREATE DATABASE SampleDB'
通过列出服务器上的数据库来验证是否已创建该数据库。
Bash/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -Q 'SELECT Name FROM sys.Databases'
以下步骤使用 Transact-SQL 命令在 Linux 上创建 SQL Server 代理作业。 该作业运行示例数据库 SampleDB
的每日备份。
提示
可以使用任何 T-SQL 客户端运行这些命令。 例如,在 Linux 上,可以使用在 Linux 上安装 SQL Server 命令行工具 sqlcmd 和 bcp 或适用于 Visual Studio Code 的 SQL Server 扩展 。 在远程 Windows Server 中,还可以在 SQL Server Management Studio (SSMS) 中运行查询,或使用 UI 界面进行作业管理,下一部分将对此进行说明。
使用 sp_add_job 创建名为
Daily SampleDB Backup
的作业。SQL-- Adds a new job executed by the SQLServerAgent service -- called 'Daily SampleDB Backup' USE msdb; GO EXEC dbo.sp_add_job @job_name = N'Daily SampleDB Backup'; GO
调用 sp_add_jobstep 创建一个作业步骤,该步骤用于创建
SampleDB
数据库备份。SQL-- Adds a step (operation) to the job EXEC 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 为作业创建每日计划。
SQL-- Creates a schedule called 'Daily' EXEC 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 将作业计划附加到作业。
SQL-- Sets the 'Daily' schedule to the 'Daily SampleDB Backup' Job EXEC sp_attach_schedule @job_name = N'Daily SampleDB Backup', @schedule_name = N'Daily SampleDB'; GO
使用 sp_add_jobserver 将作业分配到目标服务器。 此示例中的目标是本地服务器。
SQLEXEC dbo.sp_add_jobserver @job_name = N'Daily SampleDB Backup', @server_name = N'(local)'; GO
使用 sp_start_job 启动作业。
SQLEXEC dbo.sp_start_job N' Daily SampleDB Backup' ; GO
还可以在 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 创建和管理作业
接下来,探索用于创建和管理作业的其他功能:
其他资源
培训
认证
Microsoft Certified: Azure Database Administrator Associate - Certifications
使用 Microsoft PaaS 关系数据库产品/服务,管理云、本地和混合关系数据库的 SQL Server 数据库基础结构。
文档
-
在 Linux 上配置 SQL Server 代理 - SQL Server
了解如何在 Linux 上启用或安装 SQL Server 代理。 从 SQL Server 2017 CU4 开始,SQL Server 代理包含在 mssql-server 包中。
-
在 Linux 上配置 SQL Server 设置 - SQL Server
本文介绍如何使用 mssql-conf 工具在 Linux 上配置 SQL Server 设置。
-
在 Linux 上启动、停止和重启 SQL Server 服务 - SQL Server
了解如何在 Linux 上启动、停止或重启各种 SQL Server 服务。 了解如何使用 Transact-SQL 和命令行工具来执行这些操作。