在 Linux 上建立並執行 SQL Server Agent 工作

適用於:SQL Server 在 Linux 上

SQL Server 工作用於在你的 SQL Server 資料庫中定期執行相同的指令序列。 本教學提供如何在 Linux 上使用 Transact-SQL 與 SQL Server Management Studio(SSMS)建立 SQL Server Agent 作業的範例。

  • 在 Linux 上安裝 SQL Server Agent
  • 建立新作業以執行每日資料庫備份
  • 對作業進行排程並執行該作業
  • 在 SSMS 中執行相同的步驟 (選擇性)

關於 Linux 上已知的 SQL Server Agent 問題,請參見 SQL Server on Linux: Known issues

必要條件

必須擁有下列先決條件,才能完成本教學課程:

下列先決條件為選擇性:

啟用 SQL Server Agent

要在 Linux 上使用 SQL Server Agent,必須先在已安裝 SQL Server 的機器上啟用 SQL Server Agent。

  1. 要啟用 SQL Server Agent,請執行以下指令。

    sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true
    
  2. 請使用以下指令重新啟動 SQL Server:

    sudo systemctl restart mssql-server
    

注意

從 SQL Server 2017(14.x)CU 4 起,SQL Server Agent 隨 mssql-server 套件一併啟用,且預設為停用。 關於在 CU 4 之前設定的代理程式,請參閱在 Linux 上安裝 SQL Server Agent

建立範例資料庫

使用下列步驟來建立名為 SampleDB 的範例資料庫。 此資料庫是用來進行每日備份作業。

  1. 在您的 Linux 電腦上,開啟 bash 終端機。

  2. 使用 sqlcmd 執行 Transact-SQL CREATE DATABASE 指令。

    /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -Q 'CREATE DATABASE SampleDB'
    
  3. 透過列出您伺服器上的所有資料庫來確認資料庫是否已建立。

    /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -Q 'SELECT name FROM sys.databases'
    

使用 Transact-SQL 建立工作

以下步驟需使用 Transact-SQL 指令在 Linux 上建立 SQL Server Agent 工作。 該作業會針對範例資料庫 SampleDB 執行每日備份。

提示

您可以使用任何 T-SQL 用戶端來執行這些命令。 例如,在 Linux 上你可以使用 在 Linux 上安裝 sqlcmd 和 bcp SQL Server 命令列工具Visual Studio Code 的 SQL Server 擴充功能。 從遠端 Windows Server,你也可以在 SQL Server Management Studio(SSMS)中執行查詢,或使用下一節將說明的 UI 介面來管理工作。

  1. 使用 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
    
  2. 呼叫 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
    
  3. 然後使用 sp_add_schedule 來針對您的作業建立每日排程。

    -- Creates a schedule called 'Daily'
    EXECUTE 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
    EXECUTE sp_attach_schedule
        @job_name = N'Daily SampleDB Backup',
        @schedule_name = N'Daily SampleDB';
    GO
    
  5. 使用 sp_add_jobserver 來將作業指派至目標伺服器。 在此範例中,目標是本機伺服器。

    EXECUTE dbo.sp_add_jobserver
        @job_name = N'Daily SampleDB Backup',
        @server_name = N'(local)';
    GO
    
  6. 使用 sp_start_job 來啟動作業。

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

使用 SSMS 建立作業

你也可以在 Windows 上使用 SQL Server Management Studio(SSMS)遠端建立和管理工作。

  1. 在 Windows 上啟動 SSMS,並連接到你的 Linux SQL Server 實例。 欲了解更多資訊,請參閱使用SQL Server Management Studio於Windows管理SQL Server on Linux

  2. 確認您已建立名為 SampleDB 的範例資料庫。

    建立 SampleDB 資料庫的螢幕快照。

  3. 確認是否已在 Linux 上安裝 SQL Server Agent 並且設定正確。 在 Object Explorer 裡找 SQL Server Agent 旁邊的加號。 如果SQL Server Agent沒有啟用,試著在 Linux 上重新啟動 mssql-server 服務。

    截圖顯示如何驗證 SQL Server Agent 的安裝。

  4. 建立新任務。

    顯示如何建立新工作的螢幕擷取畫面。

  5. 為您的工作取名,然後建立您的工作步驟。

    顯示如何建立工作步驟的螢幕擷取畫面。

  6. 指定您想要使用的子系統,以及作業步驟應該執行的動作。

    SSMS 中新工作對話框的截圖,顯示步驟頁面,並高亮新按鈕以建立工作步驟。

    新工作步驟對話框的截圖,顯示 SampleDB 的 T-SQL BACKUP DATABASE 指令,並標示了確定按鈕。

  7. 建立新的作業排程。

    [新增作業] 對話方塊的螢幕擷取畫面,其中已醒目提示 [排程] 選項,並已標註 [新增] 選項。

    [新增作業] 對話方塊的螢幕擷取畫面,其中已標註 [確定] 選項。

  8. 開始工作。

    截圖示範如何啟動SQL Server Agent工作。

後續步驟

在本教學課程中,您已了解如何:

  • 在 Linux 上安裝 SQL Server Agent
  • 使用 Transact-SQL 及系統儲存程序來建立工作
  • 建立能執行每日資料庫備份的任務
  • 使用 SSMS UI 來建立及管理作業

接下來,請探索建立及管理工作的不同功能: