使用 cron 排程 Linux 上的 SQL Server Integration Services 套件執行

適用於:SQL Server - Linux

當您在 Windows 上執行 SQL Server Integration Services (SSIS) 和 SQL Server 時,可以使用 SQL Server Agent 自動執行 SSIS 套件。 不過,當您在 Linux 上執行 SQL Server 和 SSIS 時,SQL Server Agent 公用程式無法在 Linux 上排程作業。 因此,您可以改用在 Linux 平台上廣泛使用的 cron 服務來自動執行套件。

本文提供的範例會示範如何自動執行 SSIS 套件。 這些範例是針對在 Red Hat Enterprise 上執行所撰寫。 若要用於其他 Linux 發行版本 (例如 Ubuntu),可採用類似的程式碼。

必要條件

使用 cron 服務執行作業之前,請先檢查您的電腦是否正在執行 cron 服務。

若要檢查 cron 服務的狀態,請使用下列命令:

systemctl status crond.service

如果服務並不在作用中狀態 (也就是未執行),請洽詢您的系統管理員以正確設定 cron 服務。

建立作業

cron 作業是一項可以設定為以指定間隔定期執行的工作。 此作業可以非常簡單,就像您直接在主控台中鍵入或以殼層指令碼形式執行的命令一般。

為了方便管理和維護,建議您將套件執行命令放在包含描述性名稱的指令碼中。

以下是執行套件的簡單殼層指令碼範例。 它只包含一個命令,但您可以視需要新增更多命令。

# 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 檔案的作業行格式描述。

Screenshot of the format description for a crontab file entry.

若要取得 crontab 檔案格式的詳細描述,請使用下列命令:

man 5 crontab

以下是輸出的部分範例,其有助於說明本文中的範例:

Screenshot of a detailed partial description of crontab format.