データベースを AG に追加し (自動シード処理)、シード処理の進捗を監視する
SQL ServerAlways On と HAコマンド
-- Prerequisite (primary): FULL recovery and at least one FULL backup
SELECT name, recovery_model_desc FROM sys.databases WHERE name = N'Musteri';
BACKUP DATABASE [Musteri] TO DISK = N'D:\Backup\Musteri_pre_ag.bak' WITH COMPRESSION, CHECKSUM, INIT;
-- 1) Primary: switch the replica to automatic seeding
ALTER AVAILABILITY GROUP [AG_Musteri]
MODIFY REPLICA ON N'SQL02' WITH (SEEDING_MODE = AUTOMATIC);
-- 2) On each secondary: allow the AG to create databases
ALTER AVAILABILITY GROUP [AG_Musteri] GRANT CREATE ANY DATABASE;
-- 3) Primary: add the database
ALTER AVAILABILITY GROUP [AG_Musteri] ADD DATABASE [Musteri];
-- 4) Progress (primary or secondary):
SELECT local_database_name, role_desc, internal_state_desc,
transferred_size_bytes / 1048576 AS transferred_mb,
database_size_bytes / 1048576 AS db_mb,
transfer_rate_bytes_per_second / 1048576 AS mb_s,
estimate_time_complete_utc, failure_message
FROM sys.dm_hadr_physical_seeding_stats;
-- 5) Seeding history and failure reason:
SELECT s.start_time, s.completion_time, adc.database_name, ar.replica_server_name,
s.current_state, s.failure_state_desc, s.error_code, s.number_of_attempts
FROM sys.dm_hadr_automatic_seeding s
JOIN sys.availability_databases_cluster adc ON adc.group_database_id = s.ag_db_id
JOIN sys.availability_replicas ar ON ar.replica_id = s.ag_remote_replica_id
ORDER BY s.start_time DESC;概要
手動のバックアップ / リストアなしで、エンドポイント (VDI) 経由でセカンダリにストリーミングしてデータベースを AG に追加する。シード処理のスループット、推定完了時刻、失敗理由を表示する。
使用する場面
AG に新しいデータベースを追加する場合、新しいレプリカを追加する場合、または壊れたセカンダリデータベースを再構築する場合。
注意
シード処理はエンドポイントのリンクを飽和させ、デフォルトでは非圧縮である。非常に大きなデータベースや低速な WAN では、手動のバックアップ / リストア + JOIN の方が予測しやすい。シード処理中はプライマリのログが切り捨てられない (log_reuse_wait_desc = AVAILABILITY_REPLICA)。2016 ではセカンダリにプライマリと同じデータ / ログフォルダーパスが必要。2017 以降は、プライマリのファイルがインスタンスの既定パスにある場合、セカンダリは自身の既定パスを使用する。TDE データベースでは、先にすべてのセカンダリで証明書をリストアする必要がある。セカンダリで GRANT CREATE ANY DATABASE がないと、シード処理は保留のままとなる。