ログシッピングの実行状態を確認する

SQLServerのログシッピングは、トランザクションバックアップの出力、コピー、リストアが別々のジョブで実行される。

デフォルトでログシッピングを作成した場合、15分間隔でジョブが作成されるが、MasterとSlaveのデータ差異が15分とは限らない為、Slave機で以下のクエリを流して同期状態を確認する。

[code]

SET NOCOUNT ON
USE master

/* DB名を入れる変数 */
DECLARE @dbname varchar(80);

/* DB一覧 */
DECLARE DBnameList CURSOR FOR
select name from sys.databases

/* sp_help_log_shipping_secondary_databaseの結果を入れる */
CREATE TABLE #TMP (
secondary_id nchar(128)
,primary_server nchar(128)
,primary_database nchar(128)
,backup_source_directory nchar(128)
,backup_destination_directory nchar(128)
,file_retention_period int
,copy_job_id nchar(128)
,restore_job_id nchar(128)
,monitor_server nchar(128)
,monitor_server_security_mode nchar(128)
,secondary_database nchar(128)
,restore_delay int
,restore_all int
,restore_mode int
,disconnect_users int
,block_size int
,buffer_count int
,max_transfer_size int
,restore_threshold int
,threshold_alert int
,threshold_alert_enabled int
,last_copied_file nchar(128)
,last_copied_date datetime2
,last_copied_date_utc datetime2
,last_restored_file nchar(128)
,last_restored_date datetime2
,last_restored_date_utc datetime2
,history_retention_period int
,last_restored_latency int
)

/* ループ処理開始 */
OPEN DBnameList;
FETCH NEXT FROM DBnameList INTO @dbname

WHILE (@@FETCH_STATUS = 0)
BEGIN
print @dbname
INSERT INTO #TMP EXEC sp_help_log_shipping_secondary_database @dbname
FETCH NEXT FROM DBnameList INTO @dbname
END

CLOSE DBnameList
DEALLOCATE DBnameList

/* 一覧出力 */

select
secondary_database as ‘DB名’
,last_copied_date as ‘最終コピー時刻’
,last_restored_date as ‘最終リストア時刻’
,last_restored_file as ‘最終リストアファイル名’
from #TMP

/* TMPDB削除 */
DROP TABLE #TMP

[/code]

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です