Ich brauche eine Liste aller Tabellen, die für die Replikation von MS-SQL-Datenbanken veröffentlicht werden. Gibt es eine gespeicherte Systemprozedur oder eine Abfrage, die ich ausführen könnte, um eine solche Liste zu erstellen?Liste aller Tabellen, die derzeit für die Replikation MS-SQL veröffentlicht werden
Antwort
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.
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];
Funktioniert auf SQL Server 2008 – Michael
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
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
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