CentOS Stream 8
Sponsored Link

SQL Server 2019 : SQL Server Agent2021/05/30

 
SQL Server Agent を有効化すると、ジョブの定期実行ができるようになります。
[1] SQL Server Agent を有効化します。
[root@dlp ~]#
/opt/mssql/bin/mssql-conf set sqlagent.enabled true

SQL Server needs to be restarted in order to apply this setting. Please run
'systemctl restart mssql-server.service'.
[root@dlp ~]#
systemctl restart mssql-server

[2] テストジョブを登録して動作確認します。
[root@dlp ~]#
sqlcmd -S localhost -U SA

Password:

# テスト DB 作成
1> create database TestDB_DailyJob; 
2> go 

1> select name,create_date from sys.databases; 
2> go 
name                            create_date
------------------------------- -----------------------
master                          2003-04-08 09:13:36.390
tempdb                          2021-05-28 02:23:50.063
model                           2003-04-08 09:13:36.390
msdb                            2021-03-22 18:49:30.403
SampleDB                        2021-05-28 01:36:41.637
SampleDB2                       2021-05-28 01:57:46.577
TestDB_DailyJob                 2021-05-28 02:24:21.970

(7 rows affected)

# システム DB にスイッチ
1> use msdb; 
2> go 
Changed database context to 'msdb'.

# ジョブ名を登録
1> exec dbo.sp_add_job @job_name = N'Daily Backup for TestDB'; 
2> go 

# テスト DB のバックアップを取得するジョブを登録
1> exec sp_add_jobstep 
2> @job_name = N'Daily Backup for TestDB', @step_name = N'Backup database', @subsystem = N'TSQL', 
3> @command = N'backup database TestDB_DailyJob to disk = \ 
4~ N''/var/opt/mssql/data/TestDB_DailyJob.bak'' with noformat, noinit, \ 
5~ name = ''TestDB-full'', skip, norewind, nounload, stats = 10', 
6> @retry_attempts = 5, @retry_interval = 5; 
7> go 

# 日次スケジュールを登録 (23:50 実行)
1> exec dbo.sp_add_schedule 
2> @schedule_name = N'Daily Backup for TestDB', @freq_type = 4, @freq_interval = 1, @active_start_time = 235000; 
3> go 

# 登録したスケジュールとジョブと関連付ける
1> exec sp_attach_schedule 
2> @job_name = N'Daily Backup for TestDB', @schedule_name = N'Daily Backup for TestDB'; 
3> go 

# ローカルサーバーにスケジュールを割り当てる
1> exec dbo.sp_add_jobserver 
2> @job_name = N'Daily Backup for TestDB', @server_name = N'(LOCAL)'; 
3> go 

# ジョブを開始する
1> exec dbo.sp_start_job N'Daily Backup for TestDB'; 
2> go 
Job 'Daily Backup for TestDB' started successfully.

# 登録確認
1> select * from sysjobschedules; 
2> go 
schedule_id job_id                               next_run_date next_run_time
----------- ------------------------------------ ------------- -------------
          8 276506CE-4D8B-48FD-BFCA-126DC2CD287A             0             0

(1 rows affected)

1> select job_id,name from sysjobs; 
2> go 
job_id                               name                                    
------------------------------------ ----------------------------------------
276506CE-4D8B-48FD-BFCA-126DC2CD287A Daily Backup for TestDB                 

(1 rows affected)
[3] Windows クライアントの SSMS からも登録や確認が可能です。
関連コンテンツ