CentOS 7
Sponsored Link

SQL Server 2017 : SQL Server Agent
2017/10/08
 
SQL Server Agent をインストールして、ジョブの定期実行ができるようにします。
[1] SQL Server Agent をインストールします。(MS SQL 2017 リポジトリより)
[root@dlp ~]#
yum -y install mssql-server-agent
[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                           2017-10-06 13:53:18.030
model                            2003-04-08 09:13:36.390
msdb                             2017-08-22 19:39:22.887
SampleDB                         2017-10-05 16:22:42.643
TestDB_DailyJob                  2017-10-06 14:10:16.500

(6 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', 
3> @step_name = N'Backup database', 
4> @subsystem = N'TSQL', 
5> @command = N'backup database TestDB_DailyJob to disk = \ 
6~ N''/var/opt/mssql/data/TestDB_DailyJob.bak'' with noformat, noinit, \ 
7~ name = ''TestDB-full'', skip, norewind, nounload, stats = 10', 
8> @retry_attempts = 5, 
9> @retry_interval = 5; 
10> go 

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

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

# ローカルサーバーにスケジュールを割り当てる
1> exec dbo.sp_add_jobserver 
2> @job_name = N'Daily Backup for TestDB', 
3> @server_name = N'(LOCAL)'; 
4> 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
----------- ------------------------------------ ------------- -------------
         10 C75EB787-B3D6-4242-915B-BF426AFB6871      20171006        235000

(1 rows affected)

1> select job_id,name from sysjobs; 
2> go 
job_id                               name
------------------------------------ ----------------------------
C75EB787-B3D6-4242-915B-BF426AFB6871 Daily Backup for TestDB

(1 rows affected)
[3] Windows クライアントの SSMS からも確認できます。
 
Tweet