2010-03-29 62 views

回答

27

是:

SELECT * 
FROM sys.tables 
WHERE is_replicated = 1 

MSDN從用於is_replicated字段:

1 =表被使用快照 複製或事務 複製出版。

+1

這取決於所使用的複製類型。對於快照,您可能需要檢查is_published = 1. MSDN:https://social.msdn.microsoft.com/Forums/sqlserver/en-US/3333c691-4426-476c-b7c4-f8f55068937a/difference-between-ispublished-and -sreplicated-columns-of-systables?forum = sqlreplication – Zeeshan 2016-11-07 07:56:08

+0

我可以確認在SQL Server 2014/2016(我沒有要測試的早期版本)中,對於快照複製,[is_replicated]不能確定表是否被複制或不。您必須使用[is_published] = 1來查找快照複製表。 – jyao 2018-01-19 18:05:29

13

可以查詢distribution數據庫以查看哪些文章(表/視圖/對象...)被髮布以及它們來自哪個出版物。

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

適用於SQL Server 2008 – Michael 2014-10-03 19:02:08

+0

查詢[distribution]實體非常有用。如果你的文章都在同一個數據庫(至少是你想要識別的所有數據庫)中,你可以加入該數據庫的[dbName] .sys.tables/objects/etc。元數據視圖來顯示關於它們的更多信息,比如「它是什麼類型的對象」(因爲你不僅可以複製表格),甚至「哪一列是PK」。當我有機會時,我會盡量多發表。 – NateJ 2016-05-18 19:11:50

相關問題