Как проверить статус репликации SQL через T-SQL?

Я хочу иметь возможность проверять статус 9X_sqlselect публикации и подписки в SQL Server 2008 9X_sql-query T-SQL. Я хочу иметь возможность определить, все 9X_sql-select ли в порядке, когда была последняя успешная, синхронизация 9X_sql-server и т. Д. Возможно ли это?

20
0
2
Общее количество ответов: 2

Ответ #1

Ответ на вопрос: Как проверить статус репликации SQL через T-SQL?

Я знаю, что уже немного поздно ....

SELECT (CASE WHEN mdh.runstatus = '1' THEN 'Start - '+cast(mdh.runstatus as varchar) WHEN mdh.runstatus = '2' THEN 'Succeed - '+cast(mdh.runstatus as varchar) WHEN mdh.runstatus = '3' THEN 'InProgress - '+cast(mdh.runstatus as varchar) WHEN mdh.runstatus = '4' THEN 'Idle - '+cast(mdh.runstatus as varchar) WHEN mdh.runstatus = '5' THEN 'Retry - '+cast(mdh.runstatus as varchar) WHEN mdh.runstatus = '6' THEN 'Fail - '+cast(mdh.runstatus as varchar) ELSE CAST(mdh.runstatus AS VARCHAR) END) [Run Status], mda.subscriber_db [Subscriber DB], mda.publication [PUB Name], right(left(mda.name,LEN(mda.name)-(len(mda.id)+1)), LEN(left(mda.name,LEN(mda.name)-(len(mda.id)+1)))-(10+len(mda.publisher_db)+(case when mda.publisher_db='ALL' then 1 else LEN(mda.publication)+2 end))) [SUBSCRIBER], CONVERT(VARCHAR(25),mdh.[time]) [LastSynchronized], und.UndelivCmdsInDistDB [UndistCom], mdh.comments [Comments], 'select * from distribution.dbo.msrepl_errors (nolock) where id = ' + CAST(mdh.error_id AS VARCHAR(8)) [Query More Info], mdh.xact_seqno [SEQ_NO], (CASE WHEN mda.subscription_type = '0' THEN 'Push' WHEN mda.subscription_type = '1' THEN 'Pull' WHEN mda.subscription_type = '2' THEN 'Anonymous' ELSE CAST(mda.subscription_type AS VARCHAR) END) [SUB Type], mda.publisher_db+' - '+CAST(mda.publisher_database_id as varchar) [Publisher DB], mda.name [Pub - DB - Publication - SUB - AgentID] FROM distribution.dbo.MSdistribution_agents mda LEFT JOIN distribution.dbo.MSdistribution_history mdh ON mdh.agent_id = mda.id JOIN (SELECT s.agent_id, MaxAgentValue.[time], SUM(CASE WHEN xact_seqno > MaxAgentValue.maxseq THEN 1 ELSE 0 END) AS UndelivCmdsInDistDB FROM distribution.dbo.MSrepl_commands t (NOLOCK) JOIN distribution.dbo.MSsubscriptions AS s (NOLOCK) ON (t.article_id = s.article_id AND t.publisher_database_id=s.publisher_database_id ) JOIN (SELECT hist.agent_id, MAX(hist.[time]) AS [time], h.maxseq FROM distribution.dbo.MSdistribution_history hist (NOLOCK) JOIN (SELECT agent_id,ISNULL(MAX(xact_seqno),0x0) AS maxseq FROM distribution.dbo.MSdistribution_history (NOLOCK) GROUP BY agent_id) AS h ON (hist.agent_id=h.agent_id AND h.maxseq=hist.xact_seqno) GROUP BY hist.agent_id, h.maxseq ) AS MaxAgentValue ON MaxAgentValue.agent_id = s.agent_id GROUP BY s.agent_id, MaxAgentValue.[time] ) und ON mda.id = und.agent_id AND und.[time] = mdh.[time] where mda.subscriber_db<>'virtual' -- created when your publication has the immediate_sync property set to true. This property dictates whether snapshot is available all the time for new subscriptions to be initialized. This affects the cleanup behavior of transactional replication. If this property is set to true, the transactions will be retained for max retention period instead of it getting cleaned up as soon as all the subscriptions got the change. --and mdh.runstatus='6' --Fail --and mdh.runstatus<>'2' --Succeed order by mdh.[time] 

9X_sql-select

38
2

  • это отличный сценарий, единственное изменение, которое я сделал, - это сервер подписчика. Я заменил эту строку: `right (left (mda.name, LEN (md ...

Ответ #2

Ответ на вопрос: Как проверить статус репликации SQL через T-SQL?

Старое сообщение, но добавляемое для других. Следующая 9X_sql-statement хранимая процедура предоставит вам то, что 9X_sql-query вам нужно:

  • sp_replmonitorhelppublication (https://msdn.microsoft.com/en-us/library/ms186304.aspx)

Он позволяет просматривать состояние 9X_sql-syntax и другую информацию для всех публикаций 9X_ssms-2008 репликации для распространителя (запускать 9X_sql его в базе данных распространителя)

9
0