2011-11-08 88 views
1

檢查是否以SQL 2000,2005和2008兼容格式啓用複製的最簡單方法是什麼?不需要任何狀態信息...只是爲了知道它是否爲數據庫啓用。我需要這個,因爲我希望我的Db Migration代碼在嘗試執行模式更新之前啓用複製時引發異常。檢查是否啓用複製

謝謝。

+0

有各種啓發式方法,但沒有簡單的狀態查詢。另外,複製可以非常精細,因此可以在數據庫中的某些對象上啓用它,而這些對象無論如何都不會修改。 –

回答

0

在看這篇文章,MSDN說:「當一個用戶數據庫被配置爲發佈者或訂閱服務器,複製增加了系統表到數據庫中。當用戶數據庫是從複製拓撲中刪除這些表中移除的」

您可以查找文章中列出的其中一個表作爲複製證明,並相應地繼續查詢。

4

我發現了這個查詢,但這隻適用於SQL 2005及更高版本(不適用於SQL 2000 verson)。

T-SQL查詢

select name, is_published, is_subscribed, is_merge_published, is_distributor 
    from sys.databases 
    where is_published = 1 or is_subscribed = 1 or 
    is_merge_published = 1 or is_distributor = 1 
0

來源:www.mssqlinsider.com/2013/09/check-databases-part-replication

SELECT 
    name as [Database name], 
    CASE is_published 
     WHEN 0 THEN 'No' 
     ELSE 'Yes' 
     END AS [Is Published], 
    CASE is_merge_published 
     WHEN 0 THEN 'No' 
     ELSE 'Yes' 
     END AS [Is Merge Published], 
    CASE is_distributor 
     WHEN 0 THEN 'No' 
     ELSE 'Yes' 
     END AS [Is Distributor], 
    CASE is_subscribed 
     WHEN 0 THEN 'No' 
     ELSE 'Yes' 
     END AS [Is Subscribed] 
FROM sys.databases 
WHERE database_id > 4 
+0

該聲明沒有FROM子句。 –

+0

不確定這是否被視爲剽竊。 [來源](http://www.mssqlinsider.com/2013/09/check-databases-part-replication/)(在編輯的情況下) –