2014-01-08 35 views
1

我有3個SQL服務器,我想查詢,但我只想查詢某些數據庫。這是可能的嗎?我把它們設置爲已註冊的服務器,我可以在他們查詢系統型號查詢但是,如果我想查詢像我可以跨多個服務器進行查詢,但只包含某些數據庫嗎?

SELECT * FROM SJOB 

我不能因爲不是每個數據庫都有一個表,所以它失敗。任何幫助將不勝感激。謝謝!

回答

1

你可以查詢sys.tables視圖來檢查表是否存在:

if exists(select * from sys.tables where type = 'U' and name = 'SJOB') 
select * from SJOB 

要使用在註冊的服務器組,則需要在表不也寫了select查詢服務器存在。模式需要匹配,但您可以使用top 0不返回任何記錄。您需要指定所有列,但虛擬值需要與列類型匹配:

if exists(select * from sys.tables where type = 'U' and name = 'SJOB') 
    select * from SJOB 
else 
    select top 0 1 as col1name, '' as col2name 
+0

當我運行這個命令時,我只是得到「命令(s)completed completed。(3 servers)」。它沒有返回任何價值。 – BSanders

+0

您究竟如何在服務器上運行它?您的代碼中沒有任何內容可以暗示... – Szymon

+0

我有3臺服務器在管理工作室中設置爲註冊服務器。 – BSanders

相關問題