Ajouter une base à un AG (automatic seeding) et suivre la progression du seeding
SQL ServerAlways On et HACommande
-- 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;Ce que fait la commande
Ajoute la base à l'AG en la diffusant vers les secondaires via l'endpoint (VDI) sans sauvegarde/restauration manuelle ; affiche le débit du seeding, l'achèvement estimé et le motif d'échec.
Quand l'utiliser
Lors de l'ajout d'une nouvelle base à un AG, de l'ajout d'un nouveau réplica ou de la reconstruction d'une base secondaire cassée.
Attention
Le seeding sature le lien de l'endpoint et n'est pas compressé par défaut ; pour les très grandes bases ou un WAN faible, une sauvegarde/restauration manuelle + JOIN est plus prévisible. Le journal du primaire n'est pas tronqué pendant le seeding (log_reuse_wait_desc = AVAILABILITY_REPLICA). En 2016, le secondaire doit avoir les mêmes chemins de dossiers données/journal que le primaire ; en 2017+, si les fichiers du primaire sont dans les chemins par défaut de l'instance, le secondaire utilise ses propres chemins par défaut. Pour une base TDE, le certificat doit d'abord être restauré sur chaque secondaire. Sans GRANT CREATE ANY DATABASE sur le secondaire, le seeding reste en attente.