Bu makalede Alwayson ve StandAlone Yapısında olan Veritabanlarını Listelemek konusunu ele almış olacağız. Hangi veritabanının hangi AG altında olduğu veya AG altında olmayan stand alone veritabanlarını göstermiş olacağız.
Aşağıdaki komut sayesinde veritabanı Alwayson altında olan veritabanlarımızı listeyebiliriz. Ayrıca hangi Ag altında olduklarını görebiliriz. Dönen sonuçta LocalReplica 1 primary 2 secondary olduğunu göstermektedir.
SELECT
AG.name AS [AvailabilityGroupName],
ISNULL(agstates.primary_replica, '') AS [PrimaryReplicaServerName],
ISNULL(arstates.role, 3) AS [LocalReplicaRole],
dbcs.database_name AS [DatabaseName],
ISNULL(dbrs.synchronization_state, 0) AS [SynchronizationState],
ISNULL(dbrs.is_suspended, 0) AS [IsSuspended],
ISNULL(dbcs.is_database_joined, 0) AS [IsJoined]
FROM master.sys.availability_groups AS AG
LEFT OUTER JOIN master.sys.dm_hadr_availability_group_states as agstates
ON AG.group_id = agstates.group_id
INNER JOIN master.sys.availability_replicas AS AR
ON AG.group_id = AR.group_id
INNER JOIN master.sys.dm_hadr_availability_replica_states AS arstates
ON AR.replica_id = arstates.replica_id AND arstates.is_local = 1
INNER JOIN master.sys.dm_hadr_database_replica_cluster_states AS dbcs
ON arstates.replica_id = dbcs.replica_id
LEFT OUTER JOIN master.sys.dm_hadr_database_replica_states AS dbrs
ON dbcs.replica_id = dbrs.replica_id AND dbcs.group_database_id = dbrs.group_database_id
ORDER BY AG.name ASC, dbcs.database_name

Aşağıdaki komut ile instance altında Alwayson, database mirroing yapısına dahil olmayan veritabanlarını getirmektedir. Sadece aktif çalışan stand alone veritabanları döner. Restoring modda olan veritabanları dönmez.
SELECT
db.name AS DatabaseName
FROM
sys.databases db
LEFT JOIN
sys.dm_hadr_availability_replica_states ars
ON db.replica_id = ars.replica_id
LEFT JOIN
sys.database_mirroring dm
ON db.database_id = dm.database_id
WHERE db.database_id>4 and
ars.replica_id IS NULL -- Always On'da olmayan
AND dm.mirroring_guid IS NULL -- Mirroring yapılmayan
AND db.state_desc = 'ONLINE'; -- Çevrimiçi olan veritabanları
İnstance altındaki stand alone veritabanlarını getiren bir başka script. Alwayson yapısında olan veritabanlarını getirmez. Restoring modda olan veritabanları döndürür.
select name from sys.sysdatabases where name not in( SELECT DISTINCT dbcs.database_name AS name
FROM master.sys.availability_groups AS AG
LEFT OUTER JOIN master.sys.dm_hadr_availability_group_states as agstates
ON AG.group_id = agstates.group_id
INNER JOIN master.sys.availability_replicas AS AR
ON AG.group_id = AR.group_id
INNER JOIN master.sys.dm_hadr_availability_replica_states AS arstates
ON AR.replica_id = arstates.replica_id AND arstates.is_local = 1
INNER JOIN master.sys.dm_hadr_database_replica_cluster_states AS dbcs
ON arstates.replica_id = dbcs.replica_id
LEFT OUTER JOIN master.sys.dm_hadr_database_replica_states AS dbrs
ON dbcs.replica_id = dbrs.replica_id AND dbcs.group_database_id = dbrs.group_database_id
WHERE ISNULL(arstates.role, 3) = 1 OR ISNULL(dbcs.is_database_joined, 0) = 1
)and dbid >4 order by name asc
Bu makalede İnstance üzerindeki veritabanlarının alwayson yapısına veya standalone yapısına dahil olup olmadığını gözlemleyebiliriz.
Başka bir makalede görüşmek üzere..
Soyunla övünme, Ebû Leheb’e bak! Tebbet / 3