Quiero poder verificar el estado de una publicación y suscripción en SQL Server 2008 T-SQL. Quiero poder determinar si está bien, cuándo fue el último éxito, la sincronización, etc. ¿Es esto posible?¿Cómo verifico el estado de replicación de SQL a través de T-SQL?
13
A
Respuesta
27
Sé que esto es un poco tarde ....
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
Para comprobar el estado de suscripción publicación o usted podría utilizar sencilla utilidad SQL Server Replication Explorer
4
Mensaje viejo pero la adición de otros - El siguiente procedimiento almacenado darle lo que necesita:
- sp_replmonitorhelppublication (https://msdn.microsoft.com/en-us/library/ms186304.aspx)
Se le permite ver el estado además de otra información para todas las publicaciones de replicación para un distribuidor (ejecuta en la base de datos de distribución)
Cuestiones relacionadas
- 1. Replicación de MySQL: ¿evita temporalmente la replicación de sentencias SQL específicas a los esclavos?
- 2. SQL Server 2005 replicación
- 3. estado de replicación de MySQL usando una consulta de selección
- 4. Replicación SQL Azure
- 5. SQL servidor de mezcla programación de replicación
- 6. ¿Cómo verifico el estado del índice de construcción en Oracle 11?
- 7. ¿Cómo establecer el valor de línea de comando a través de Ruby para ver el estado a través de PS?
- 8. ¿Herramienta de migración de TSQL a PL/SQL?
- 9. Convertir TSQL a MS-Access SQL
- 10. obtener el estado de ToggleButton a través del controlador
- 11. ¿Cómo verifico el estado de salida de una invocación de shell Makefile?
- 12. TSQL - Inserción para llevarlo a SQL dinámico
- 13. ¿Puede la replicación funcionar entre el editor de SQL 2005 y el suscriptor de SQL 2008?
- 14. ¿Cómo verifico la versión de SQL Server usando Powershell?
- 15. ¿Cómo asegurar la replicación de MySQL? ¿El esclavo está completamente sincronizado con el MASTER de replicación?
- 16. ¿cómo verifico un código de estado de respuesta de solicitud HTTP desde iOS?
- 17. Factor de replicación de HDFS
- 18. SQL Injection a través de mysql_query
- 19. Conectar a SQL Server a través de PDO usando el controlador de SQL Server
- 20. ¿Cómo verifico el tamaño de una vista indexada en SQL Server?
- 21. ¿Cómo verifico/verifico/pruebo/valido mi contraseña de SSH?
- 22. Consulta de T-SQL para los artículos de replicación
- 23. Replicación punto a punto en SQL Server 2005/08
- 24. ¿Cómo puedo obtener el SQL de un estado preparado?
- 25. ¿Cómo llamo a una función TSQL de ado.net
- 26. Consulta SQL a través de dos conexiones?
- 27. Backup SQL Server a través de C#
- 28. ¿Cómo descargo el buffer de impresión en TSQL?
- 29. Secuencia de comandos SQL Server para eliminar la replicación?
- 30. Mejores prácticas de replicación de MySQL
Esa es una pregunta fantástica allí! –
es una gran secuencia de comandos, de hecho, el único cambio que he hecho es obtener el servidor de suscriptor. He reemplazado esta línea: 'derecha (izquierda (mda.name, LEN (mda.name) - (len (mda.id) +1)), LEN (izquierda (mda.name, LEN (mda.name) - (len (mda.id) +1))) - (10 + len (mda.publisher_db) + (caso cuando mda.publisher_db = 'ALL' luego 1 else LEN (mda.publication) +2 end))) [SUSCRIPTOR] , 'por esta línea: ' REVERSE (SUBSTRING (REVERSE (mda.name), CHARINDEX ('-', REVERSE (mda.name)) + 1, CHARINDEX ('-', REVERSE (mda.name), CHARINDEX ('-', REVERSE (mda.name)) + 1) -CHARINDEX ('-', REVERSE (mda.name)) - 1)) como [sub], ' –