Manşet
Transactional Replication esnasında genelde hızı ve eşitlemeyi test etme ihtiyacı duyarsınız. Bunun için kullanabileceğiniz basit bir script hazırladım. Script’i çalıştırabilmeniz için, çalıştıracağınız sunucu diğerine linked server olarak ayarlanmalıdır. Sunucu ismi, Database, Schema ve Tablo isimlerini değiştirmelisiniz.
Script, belirtilen sunucu uzerindeki Database’deki replike olan tabloları saptayıp diğer sunucu üzerindeki kopyası ile eşleşme sayısını ve kalan eşlecek değer sayısını veriyor. Transaction’larınızı hızlı bir şekilde izlemenizi sağlayabilir.
WITH PublisherDB_CTE ( TableName, RowCnt ) AS ( SELECT PubTab. name , SUM (PubPar. rows ) RowCnt FROM [PubSrv].[RepDB].[sys].[tables] PubTab INNER JOIN [PubSrv].[RepDB].[sys].[partitions] PubPar ON PubPar.OBJECT_ID = PubTab.OBJECT_ID INNER JOIN [PubSrv].[RepDB].[sys].[schemas] PubSch ON PubTab.schema_id = PubSch.schema_id WHERE PubTab.is_ms_shipped = 0 AND PubPar.index_id IN ( 1, 0 ) AND PubTab.is_replicated = 1 GROUP BY PubSch. name , PubTab. name ) , SubscriberDB_CTE ( TableName, RowCnt ) AS ( SELECT SubTab. name , SUM (SubPar. rows ) RowCnt FROM [SubSrv].[RepDB].[sys].[tables] SubTab INNER JOIN [SubSrv].[RepDB].[sys].[partitions] SubPar ON SubPar.OBJECT_ID = SubTab.OBJECT_ID INNER JOIN [SubSrv].[RepDB].[sys].[schemas] SubSch ON SubTab.schema_id = SubSch.schema_id WHERE SubTab.is_ms_shipped = 0 AND SubPar.index_id IN ( 1, 0 ) GROUP BY SubSch. name , SubTab. name ) SELECT a.TableName AS [Replicated Tables], a.RowCnt AS [Publisher], b.RowCnt AS [Subscriber], a.RowCnt - b.RowCnt AS [Waiting] FROM PublisherDB_CTE a INNER JOIN SubscriberDB_CTE b ON a.TableName = b.TableName ORDER BY a.RowCnt DESC |
Hiç yorum yok: