【1】啟用SQL Server代理
備注:從 SQL Server 2017 CU4 開始,SQL Server 代理是附帶mssql server打包並默認處於禁用狀態。
【2】使用T-SQL創建作業
--創建示例數據庫 --《1》linux環境下創建 --/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' --《2》登錄上sql server 后創建 CREATE DATABASE SampleDB GO SELECT Name FROM sys.Databases GO 使用 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