在Linux上创建和运行SQL Server 2017代理作业

本文介绍如何在SQLServer中通过T-SQL语句和SSMS工具创建作业,包括启用SQLServer代理、创建示例数据库、定义作业及作业步骤、设置作业计划,并启动作业。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

启用SQL Server代理

sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true
sudo systemctl restart mssql-server

备注:从 SQL Server 2017 CU4 开始,SQL Server 代理是附带mssql server打包并默认处于禁用状态。


创建示例数据库

/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 创建作业

1. 使用sp_add_job若要创建一个名为作业Daily SampleDB Backup。

-- 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

2. 调用sp_add_jobstep若要创建的备份创建的作业步骤SampleDB数据库。

-- 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

3. 然后创建与作业的每日计划sp_add_schedule。

-- 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

4. 将作业计划附加到作业sp_attach_schedule。

-- 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

5. 使用sp_add_jobserver若要将作业分配到目标服务器。 在此示例中,目标是本地服务器。

EXEC dbo.sp_add_jobserver
@job_name = N'Daily SampleDB Backup',
@server_name = N'(LOCAL)';
GO

6. 启动的作业sp_start_job。

EXEC dbo.sp_start_job N' Daily SampleDB Backup' ;
GO

使用 SSMS 创建作业

1. 在 Windows 上启动 SSMS 并连接到 Linux SQL Server 实例。

2. 验证是否已创建一个名为的示例数据库SampleDB。

clip_image002

3. 验证 SQL 代理是否安装并正确配置。 查找在对象资源管理器中的 SQL Server 代理旁边的加号。 如果未启用 SQL Server 代理,请尝试重新启动mssql server Linux 上的服务。

clip_image004

4. 新建作业。

clip_image006

5. 指定作业名称并创建作业步骤。

clip_image008

6. 指定要使用的子系统和应执行的作业步骤。

clip_image010

clip_image012

7. 新建作业计划。

clip_image014

clip_image016

8. 启动作业。

clip_image017

### 正确配置运行 Flume-ng Agent 为了正确启动 `flume-ng` 代理并指定配置文件路径以及设置日志级别为 `INFO`,可以按照以下方法操作: #### 设置日志级别 Flume 的日志级别可以通过修改 `log4j.properties` 文件实现。通常情况下,该文件位于 `$FLUME_HOME/conf/log4j.properties` 路径下。打开此文件并将日志级别更改为 `INFO`,如下所示: ```properties log4j.rootLogger=INFO, CONSOLE ``` #### 启动命令 在设置了日志级别之后,使用以下命令启动 Flume-ng 代理,并指定配置文件路径 `dir-memory-hdfs.conf` 代理名称 `a1`[^5]。 ```bash bin/flume-ng agent \ --name a1 \ --conf conf \ --conf-file conf/dir-memory-hdfs.conf \ -Dflume.log.file=flume-agent-a1.log \ -Dflume.root.logger=INFO,CONSOLE ``` 上述命令中各参数的作用说明如下: - `--name a1`: 指定 Flume 中的代理名为 `a1`。 - `--conf conf`: 指向 Flume 配置目录的位置。 - `--conf-file conf/dir-memory-hdfs.conf`: 指定使用的配置文件为 `dir-memory-hdfs.conf`。 - `-Dflume.log.file=flume-agent-a1.log`: 定义日志文件名以便于区分不同代理的日志记录。 - `-Dflume.root.logger=INFO,CONSOLE`: 将根日志器设置为 `INFO` 级别,并将日志输出到控制台。 #### 故障排查 如果在启动过程中遇到错误,可以根据以下提示进行排查: 1. 如果发现 HDFS 上的状态异常(如 Active 变成 Standby),需检查 NameNode 是否正常工作[^4]。 2. 若两个 NameNode 均处于 Standby 状态,则应确认 ZKFC 是否已成功启动。必要时可尝试重启 ZKFC 服务。 #### 示例代码片段 以下是完整的启动脚本示例: ```bash #!/bin/bash export FLUME_HOME=/path/to/apache-flume $FLUME_HOME/bin/flume-ng agent \ --name a1 \ --conf $FLUME_HOME/conf \ --conf-file $FLUME_HOME/conf/dir-memory-hdfs.conf \ -Dflume.log.file=flume-agent-a1.log \ -Dflume.root.logger=INFO,CONSOLE ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值