Ich möchte in der Lage sein, den Status einer Publikation und eines Abonnements in SQL Server 2008 T-SQL zu überprüfen. Ich möchte in der Lage sein zu bestimmen, ob es in Ordnung ist, wann die letzte erfolgreich war, synchronisieren, etc .. Ist das möglich?Wie überprüfe ich den SQL-Replikationsstatus über T-SQL?
13
A
Antwort
27
Ich weiß, dass dies ein wenig zu spät ist ....
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]
2
Veröffentlichung oder Abonnementstatus prüfen Sie einfaches Dienstprogramm SQL Server Replication Explorer
4
Alte Post verwenden könnte, aber das Hinzufügen für andere - die folgende gespeicherte Prozedur wird geben Sie, was Sie brauchen:
- sp_replmonitorhelppublication (https://msdn.microsoft.com/en-us/library/ms186304.aspx)
Es ermöglicht Ihnen, den Status sowie weitere Informationen für alle Replikations Publikationen für einen Verteiler (führen Sie es auf der Verteilungsdatenbank)
Verwandte Themen
- 1. Wie überprüfe ich den Wert von PrintDialog.AllowCurrentPage?
- 2. Wie überprüfe ich den Inhalt eines Arrays?
- 3. Wie überprüfe ich ein Exchange-Postfach über die Powershell?
- 4. Wie überprüfe ich, ob jemand über IPv6/IPv4 verbunden ist?
- 5. Wie überprüfe ich Pelican-Variablen
- 6. Wie spüe ich den PRINT-Puffer in TSQL?
- 7. Wie überprüfe ich den Wert von Auxiliary Flag in 8086
- 8. Wie überprüfe ich den Internetzugriff mit Bash-Skript in Linux?
- 9. Wie überprüfe ich den aktuellen Status des Thread-Stacks?
- 10. Wie überprüfe ich den Status der Indexerstellung auf Oracle 11?
- 11. Wie überprüfe ich den Status der Verbindung einer TFTP-Verbindung?
- 12. Wie überprüfe ich den aktuellen Standort eines Nutzers?
- 13. Wie überprüfe ich den Namen eines übergeordneten Verzeichnisses?
- 14. Wie überprüfe ich den Typ eines View-Widgets?
- 15. SVN: Wie überprüfe ich den gesamten Quellbaum nur mit Amtsleitungen?
- 16. Wie überprüfe ich den Datenbanktyp in einer Rails Migration?
- 17. Wie überprüfe ich den Shake-Effekt im iPhone-Simulator?
- 18. Wie überprüfe ich den ursprünglichen Wert im Etikettenformatierer mit plottable.js?
- 19. Wie überprüfe ich den Dateityp in Drupal 6 mit file_save_upload?
- 20. Wie überprüfe ich, ob ein Simplex den Ursprung enthält?
- 21. Wie überprüfe ich den Jobstatus vom SSIS-Kontrollfluss?
- 22. Wie überprüfe ich HEAD^in Git
- 23. Wie überprüfe ich eine entfernte Niederlassung?
- 24. Wie überprüfe ich, ob eine IsolatedStorageFile existiert?
- 25. Wie überprüfe ich meine InnoDB-Einstellungen?
- 26. Wie überprüfe ich, ob ein NSTimer läuft?
- 27. Wie überprüfe ich, ob ich derzeit der Eigentümer der Datenbank für SQL 2000/2005/2008 bin
- 28. iOS Wie überprüfe ich, ob gerade telefoniert
- 29. Wie überprüfe ich die gültige URL-Adresse?
- 30. Wie überprüfe ich eine Liste in Haskell?
Das ist eine fantastische Abfrage dort zu sehen! –
das ist ein großartiges Skript in der Tat die einzige Änderung, die ich getan habe, ist den Abonnentenserver zu bekommen. Ich habe diese Zeile ersetzt: 'right (links (mda.name, LEN (mda.name) - (len (mda.id) +1)), LEN (links (mda.name, LEN (mda.name) - (len (mda.id) +1))) - (10 + len (mda.publisher_db) + (Fall, wenn mda.publisher_db = 'ALL' dann 1 anderes LEN (mda.publication) +2 Ende))) [ABONNEMENT] , 'durch diese Zeile: ' REVERSE (SUBSTRING (UMKEHR (mda.name), CHARINDEX ('-', REVERSE (mda.name)) + 1, CHARINDEX ('-', REVERSE (mda.name), CHARINDEX ('-', REVERSE (mda.name)) + 1) -CHARINDEX ('-', REVERSE (mda.name)) - 1)) als [sub], ' –