declare @node int = 9044;
DECLARE @sqlCommand NVARCHAR(MAX) =
(
'SELECT * FROM [@node].[database_name].dbo.table_name'
);
DECLARE @paramList NVARCHAR(400) =
(
'@node int'
)
exec sp_executesql @sqlCommand, @paramlist, @node;
所以這是我試圖運行的簡單查詢。 9044很好。運行該查詢通常可以正常工作(顯然,我已經刪除了數據庫和表名)。不完全確定它有什麼問題。我得到的錯誤是:SQL Server動態查詢 - 無法找到鏈接的服務器
消息7202,級別11,狀態2,行1 不能在sys.servers找不到服務器 '@node'。驗證是否指定了正確的服務器名稱。如有必要,請執行存儲過程sp_addlinkedserver以將服務器添加到sys.servers。
就如何解決這個問題,或者我應該只寫了查詢,並使用EXEC (@sql)
你是說你的動態SQL失敗,但執行靜態SQL工作嗎?針對同一臺服務器/數據庫和來自同一臺服務器/數據庫的?在您正在執行的數據庫/服務器上執行sp_addlinkedserver'9044'應該可以解決問題。 – UnhandledExcepSean 2011-12-24 20:36:34
是@Node引用名爲9044的鏈接服務器? – rene 2011-12-24 20:43:27
如果將@node轉換爲nvarchar會發生什麼? – UnhandledExcepSean 2011-12-25 14:17:21