0
在MYSQL服務器中,通過查看「第二位主服務器」的值,可以知道從服務器與主服務器的差距。那麼,MSSQL中是否有類似的東西,這樣就可以知道從服務器如何落後於其主服務器?如何在SQL Server中查找複製延遲?
在MYSQL服務器中,通過查看「第二位主服務器」的值,可以知道從服務器與主服務器的差距。那麼,MSSQL中是否有類似的東西,這樣就可以知道從服務器如何落後於其主服務器?如何在SQL Server中查找複製延遲?
在這個問題上有一些爭議,但我喜歡定期使用貼圖示蹤標記。也就是說,您可以在發佈服務器上調用sp_posttracertoken過程,並且它會一直髮送一個令牌給訂閱者。您可以在分銷商數據庫中查看所有令牌的歷史記錄。我寫了下面的觀點,使數據更容易溝谷:
create view [dbo].[tokens] as
select
ps.name as [publisher],
p.publisher_db,
p.publication,
ss.name as [subscriber],
da.subscriber_db,
t.publisher_commit,
t.distributor_commit,
h.subscriber_commit,
datediff(second, t.publisher_commit, t.distributor_commit) as [pub to dist (s)],
datediff(second, t.distributor_commit ,h.subscriber_commit) as [dist to sub (s)],
datediff(second, t.publisher_commit, h.subscriber_commit) as [total latency (s)]
from mstracer_tokens t
inner join MStracer_history h
on t.tracer_id = h.parent_tracer_id
inner join mspublications p
on p.publication_id = t.publication_id
inner join sys.servers ps
on p.publisher_id = ps.server_id
inner join msdistribution_agents da
on h.agent_id = da.id
inner join sys.servers ss
on da.subscriber_id = ss.server_id
另一種方法是使用什麼是通常稱爲金絲雀表。這個想法是,你有一個專門用於監視複製的表,通常只有一行帶有日期時間字段。您在發佈商處更新專欄,然後通過查看訂閱者該專欄的價值來監控訂閱者距離多遠。
最後,有一些perfmon計數器,你可以看看。根據我的經驗,他們並不那麼棒。未完成命令的數量是準確的數字,但延遲作爲持續時間的度量通常非常不準確。
我認爲,您將在[數據庫管理員StackExchange站點](http://dba.stackexchange.com/help/on-topic)上獲得更多運氣。您可以通過標記「管理員注意力」來讓管理員遷移您的問題。 – Pred