reklam

Manşet

Transactional Replication - Replike olan tabloların Hız-Eşleşme değerleri

Yazar Unknown 10 Ekim 2011 Pazartesi 0 yorum
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: