2011-03-14 33 views
1

我必須在一組鏈接的服務器上運行幾個查詢。我想嘗試,而不是訴諸動態SQL,但迄今有麻煩。如何高效地在多個鏈接的服務器上運行查詢?

這是我到目前爲止有:

SELECT @serverName = Name FROM #servers WHERE ID = @minID 

EXEC sp_addlinkedserver @[email protected], @srvproduct='SQL Server'   
EXEC sp_addlinkedsrvlogin @rmtsrvname = N'lani-radio001', @locallogin = NULL , @useself = N'False', @rmtuser = N'user1', @rmtpassword = N'Password1' 

declare @sql varchar(255) 
SET @sql = 'SELECT * from [' + @serverName + '].mydb.dbo.mytable' 
EXEC (@sql) 

我必須運行在對多個服務器(這些都是#servers表)循環上面的代碼。 如何在不訴諸動態SQL的情況下解決此問題?

P.S.有關所有服務器的SQL Server 2005。

+1

不知道你可以不動態SQL。唯一的其他可能的答案是使用PowerShell。 – AgentDBA 2011-03-15 10:20:02

回答

1

這個怎麼樣?:

SELECT * FROM OPENQUERY(@serverName,'select * from mydb.dbo.mytable');