MSSQL Server Alwayson ve StandAlone Yapısındaki Veritabanlarını Listelemek

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

Author: Yunus YÜCEL

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir