鏈接一些SQL Server 2008服務器/實例後,我想對這些服務器進行更一般的查詢。我知道,我必須指定像查詢的命運:如何查詢多個鏈接的服務器?
select *
from [SRV\INSTANCE].dbname.dbo.foo
不過,我會跑對多個鏈接服務器此查詢。我也知道,這個select語句返回完全SRV\INSTANCE
我需要:
select ss.name
from sys.servers ss
where ss.server_id > 0
這一次,返回從那裏我想對查詢所有servers\instances
。
在這種情況下,所有數據庫都具有相同的結構,所以我想要做這樣的事情:
select *
from [select ss.name from sys.servers ss where ss.server_id > 0].DBNAME.dbo.foo
任何想法?
在此先感謝。
性能將會變差。您可能需要考慮一個運行於作業/事件上的存儲過程,該作業/事件使用感興趣的數據填充臨時表。這種方式在查詢之前完成了繁重的工作,現在您正在做一個跨數據庫選擇而不是多個數據庫。 – xQbert 2013-02-18 21:17:59
謝謝@xQbert的建議。在我的情況下,我需要在連接的服務器之間「單向」同步數據(我知道合併複製可以輕鬆實現,但在這裏我有一個狹隘的網絡管理員= p)。我需要將多個服務器的30個表同步到主服務器(每個服務器幾乎需要兩分鐘的SQL處理)。我會嘗試使用臨時表。謝謝。 – 2013-02-19 12:46:00