2010-03-29 6 views

Antwort

27

Ja:

SELECT * 
FROM sys.tables 
WHERE is_replicated = 1 

Von MSDN für is_replicated Feld:

1 = Tabelle veröffentlicht wird Snapshot Replikation oder Transaktions Replikation.

+1

Dies hängt von der Art der verwendeten Replikation ab. Für Snapshot müssen Sie möglicherweise überprüfen, 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

Ich kann bestätigen, dass in SQL Server 2014/2016 (ich habe keine frühe Version zu testen), für Snapshot-Replikation, [is_replicated] nicht sagen, ob eine Tabelle repliziert wird oder nicht. Sie müssen [is_published] = 1 verwenden, um eine Snapshot-Replikationstabelle zu finden. – jyao

13

Es ist möglich, die Datenbank distribution abzufragen, um zu sehen, welche Artikel (Tabellen/Ansichten/Objekte ...) veröffentlicht werden und aus welcher Publikation sie stammen.

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

Funktioniert auf SQL Server 2008 – Michael

+0

Es ist ziemlich nützlich, die Entitäten [Verteilung] abzufragen. Und wenn Ihre Artikel alle in derselben DB sind (zumindest alle, die Sie identifizieren wollen), können Sie sich der DB [dbName] .sys.tables/objects/etc anschließen. Meta-Daten-Ansichten, um noch mehr Informationen über sie zu zeigen, wie "welche Art von Objekt ist es" (weil Sie mehr als nur Tabellen replizieren können), oder sogar "welche Spalte ist die PK". Ich werde versuchen, mehr dazu zu schreiben, wenn ich eine Chance habe. – NateJ