分享方式:


在 Linux 上建立及執行 SQL Server Agent 作業

適用於:SQL Server - Linux

SQL Server 作業被用來在 SQL Server 資料庫中定期執行相同的命令序列。 本教學課程會提供如何使用 Transact-SQL 和 SQL Server Management Studio (SSMS) 在 Linux 上建立 SQL Server Agent 作業的範例。

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

如需 Linux 上 SQL Server Agent 的已知問題,請參閱 Linux 上的 SQL Server 2017 版本資訊

必要條件

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

下列先決條件為選擇性:

啟用 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 套件,而且預設為停用。 如需使用 CU4 之前的版本來設定 Agent 的相關資訊,請參閱在 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 上安裝 SQL Server 命令列工具 sqlcmd 和 bcp適用於 Visual Studio Code 的 SQL Server 延伸項目。 從遠端 Windows Server,您也可以在 SQL Server Management Studio 中執行查詢,或是使用 UI 介面來進行作業管理,其將於下一節中描述。

  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 建立作業

您也可以在 Windows 上使用 SQL Server Management Studio (SSMS) 來從遠端建立及管理作業。

  1. 在 Windows 上啟動 SSMS,然後連線至您的 Linux SQL Server 執行個體。 如需詳細資訊,請參閱使用 Windows 上的 SQL Server Management Studio 來管理 Linux 上的 SQL Server

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

    建立 SampleDB 資料庫
  3. 確認 SQL Agent 已在 Linux 上安裝 SQL Server Agent,並正確設定。 在 [物件總管] 中尋找位於 SQL Server Agent 旁邊的加號。 如果 SQL Server Agent 尚未啟用,請在 Linux 上嘗試重新啟動 mssql-server 服務。

    顯示如何確認已安裝 SQL Server Agent 的螢幕快照。

  4. 建立新作業。

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

  5. 為作業取名,並建立您的作業步驟。

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

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

    顯示工作子系統的螢幕快照。

    顯示工作步驟動作的螢幕快照。

  7. 建立新的作業排程。

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

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

  8. 啟動作業。

    顯示如何啟動 SQL Server Agent 工作的螢幕快照。

後續步驟

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

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

接下來,請探索建立及管理作業的其他功能: