How to check the status of automatic seeding in SQL Server
Automatic seeding for SQL Always On is nice, but in the case of big databases this can take some time. Of course, it can be annoying if something is running and you don't see the status of it. The query below will show you the status of the automatic seeding and the throughput.
IF OBJECT_ID('tempdb..#Seeding') IS NOT NULL DROP TABLE #Seeding;
SELECT GETDATE() AS CollectionTime,
instance_name,
cntr_value
INTO #Seeding
FROM sys.dm_os_performance_counters
WHERE counter_name = 'Backup/Restore Throughput/sec';
WAITFOR DELAY '00:00:10'
SELECT LTRIM(RTRIM(p2.instance_name)) AS [DatabaseName],
(p2.cntr_value - p1.cntr_value) / (DATEDIFF(SECOND,p1.CollectionTime,GETDATE()))/1024/1024 AS ThroughputMBytesSec
FROM sys.dm_os_performance_counters AS p2
INNER JOIN #Seeding AS p1
ON p2.instance_name = p1.instance_name
WHERE p2.counter_name LIKE 'Backup/Restore Throughput/sec%'
ORDER BY
ThroughputMBytesSec DESC;