使用 cron 在 Linux 上计划 SQL Server Integration Services 包执行
适用于:SQL Server - Linux
在 Windows 上运行 SQL Server Integration Services (SSIS) 和 SQL Server 时,可使用 SQL Server 代理自动执行 SSIS 包。 但是,在 Linux 上运行 SQL Server 和 SSIS 时,SQL Server 代理实用工具无法用于在 Linux 上计划作业。 可改为使用 cron 服务,其在 Linux 平台上广泛用于自动执行包。
本文提供演示如何自动执行 SSIS 包的示例。 这些示例为在 Red Hat Enterprise 上运行而编写。 代码与其他 Linux 分发版(例如 Ubuntu)类似。
先决条件
在使用 cron 服务运行作业前,请检查它是否在你的计算机上运行。
若要检查 cron 服务的状态,请使用以下命令:
systemctl status crond.service
如果服务未处于活动状态(即未在运行),请咨询管理员以正确设置和配置 cron 服务。
创建作业
Cron 作业是可以配置为按指定间隔定期运行的任务。 作业可以像通常直接在控制台中键入的命令一样简单,也可以作为 shell 脚本运行。
为了便于管理和维护,我们建议将包执行命令放在包含描述性名称的脚本中。
以下是用于运行包的简单 shell 脚本的示例。 它仅包含一个命令,但你可以根据需要添加更多命令。
# A simple shell script that contains a simple package execution command
# Script name: SSISpackageName.daily
/opt/ssis/bin/dtexec /F yourSSISpackageName.dtsx >> $HOME/tmp/out 2>&1
使用 cron 服务计划作业
定义作业后,可以使用 cron 服务将其安排为自动运行。
若要添加作业以供 cron 运行,请在 crontab 文件中添加该作业。 若要在可以添加或更新作业的编辑器中打开 crontab 文件,请使用以下命令:
crontab -e
若要将上述作业计划为每天凌晨 2:10 运行,请将以下行添加到 crontab 文件中:
# run <SSIS package name> at 2:10 AM every day
10 2 * * * $/HOME/SSIS/jobs/SSISpackageName.daily
保存 crontab 文件,然后退出编辑器。
若要了解示例命令的格式,请查看以下部分中的信息。
crontab 文件的格式
下图显示了添加到 crontab 文件中的作业行的格式说明。
若要获得有关 crontab 文件格式的更加详细的说明,请使用以下命令:
man 5 crontab
以下是有助于解释本文示例的输出的部分示例: