En SQL Server, en el "lado de la suscripción", ¿cómo puede saber si una tabla está en replicación/suscripción?SQL Server: suscripción: cómo saber si una tabla está bajo replicación/suscripción
¿Alguna idea?
En SQL Server, en el "lado de la suscripción", ¿cómo puede saber si una tabla está en replicación/suscripción?SQL Server: suscripción: cómo saber si una tabla está bajo replicación/suscripción
¿Alguna idea?
No estoy seguro de que haya una respuesta simple a esto, y creo que las respuestas pueden variar según el tipo de replicación. Creo que deberás depender de la heurística para responderla.
Para la replicación de instantáneas, no puedo pensar en nada que pueda alegrar el juego. Obviamente, la presencia de las tablas de replicación (por ejemplo, MSreplication_objects
) le dice que la replicación está ocurriendo dentro de la base de datos, pero no hay pistas específicas sobre tablas, que yo sepa.
Para la replicación transaccional (no actualización), que puede ser capaz de ir a través de MSreplication_objects
(que mostrará una lista de algunos procedimientos almacenados) y luego usar sys.sql_dependencies
para localizar las tablas que estén relacionados con
Para la replicación de transacciones (actualización) , se puede ver en MSsubscription_articles
(o buscar la presencia de la suscripción actualizar disparadores contra la mesa)
para la réplica de mezcla, se puede ver en sysmergearticles
, pero también se tendría que mirar en sysmergesubscriptions
para determinar que usted' re en el lado de la suscripción.
La manera más simple sería crear un servidor vinculado al servidor principal y consultar la tabla [distribución]. [Dbo]. [MSarticles].
Eche un vistazo a DATABASEPROPERTYEX. Tiene una opción 'IsSubscribed' que debería hacer lo que usted quiere que haga.
Eso le dirá si la base de datos es suscriptora, pero no le permitirá determinar qué tablas son parte de la suscripción. Las bases de datos de suscripción pueden contener sus propias tablas que no son parte de la publicación. –
Vaya ... tienes razón. Leí mal la pregunta como "cómo saber si una base de datos es suscriptora". –
Vaya a la base de datos del suscriptor y compruebe la tabla dbo.MSreplication_subscriptions
. Si la base de datos es subscriber
, encontrará esta tabla. Además, para averiguar los artículos usan esto en la base de datos subscribed
SELECT publisher,Publisher_Db,publication,article
FROM dbo.MSreplication_objects
Solía idea de Damien del Incrédulo (1) para producir el código que trabajó para mí
SELECT DISTINCT
ot.object_id
,ot.schema_id
,r.publisher
,r.publisher_db
,r.publication
,r.article
FROM
dbo.MSreplication_objects R
INNER JOIN sys.objects so ON r.object_name = so.name AND so.type = 'P' --stored procedures
INNER JOIN sys.sql_dependencies dp ON so.object_id = dp.object_id
INNER JOIN sys.objects ot ON dp.referenced_major_id = ot.object_id --objects
AND r.article = ot.name
He acaba de construir y desgarrado repliqué varias veces para intentar encontrar algunas respuestas, y todavía no estoy satisfecho con lo que he publicado: - | –