2010-03-29 9 views

Respuesta

27

Sí:

SELECT * 
FROM sys.tables 
WHERE is_replicated = 1 

De MSDN para el campo is_replicated: se publica

1 = tabla usando instantánea replicación o transaccional replicación.

+1

Esto depende del tipo de replicación utilizada. Para obtener una instantánea, es posible que deba verificar is_published = 1. MSDN: https://social.msdn.microsoft.com/Forums/sqlserver/en-US/3333c691-4426-476c-b7c4-f8f55068937a/difference-between-ispublished-and -isreplicated-columns-of-systables? forum = sqlreplication – Zeeshan

+0

Puedo confirmar que en el servidor SQL 2014/2016 (no tengo una versión temprana para probar), para la replicación de instantáneas, [is_replicated] no dice si una tabla está replicada o no. Debe usar [is_published] = 1 para buscar una tabla de replicación de instantáneas. – jyao

13

Es posible consultar la base de datos distribution para ver qué artículos (tablas/vistas/objetos ...) se publican y de qué publicación son.

SELECT 
    P.[publication] AS [Publication Name] 
    ,A.[publisher_db] AS [Database Name] 
    ,A.[article]  AS [Article Name] 
    ,A.[source_owner] AS [Schema] 
    ,A.[source_object] AS [Object] 
FROM 
    [distribution].[dbo].[MSarticles] AS A 
    INNER JOIN [distribution].[dbo].[MSpublications] AS P 
     ON (A.[publication_id] = P.[publication_id]) 
ORDER BY 
    P.[publication], A.[article]; 
+1

Funciona en SQL Server 2008 – Michael

+0

Es muy útil consultar las entidades de [distribución]. Y si sus artículos están todos en la misma base de datos (al menos, todos los que desea identificar), puede unirse a los [dbName] .sys.tables/objects/etc de esa base de datos. vistas de metadatos para mostrar aún más información sobre ellos, como "qué tipo de objeto es" (porque podría tener más que solo tablas de replicación), o incluso "qué columna es el PK". Trataré de publicar más sobre esto cuando tenga oportunidad. – NateJ

Cuestiones relacionadas