Sql-Server
針對連結伺服器的 DELETE 查詢發出錯誤
我有一個查詢是更大程序的一部分,並針對連結伺服器執行。
程式碼是這樣的:
DELETE FROM [LinkServerIP].[Database].[dbo].[TableName] WHERE NOT EXISTS ( SELECT * FROM [LinkServerIP].[Database].[dbo].[AnotherTableName] t WHERE t.[Code]=[LinkServerIP].[Database].[dbo].[TableName].[Code] );
現在,當我執行它時,我得到:
消息 4104,級別 16,狀態 1,過程 xxxx,第 113 行無法綁定多部分標識符“LinkServerIP.Database.dbo.TableName.Code”。
有任何想法嗎?
只需使用允許您定義別名的語法:
DELETE t1 FROM Server.Database.dbo.Table1 AS t1 WHERE NOT EXISTS ( SELECT 1 FROM Server.Database.dbo.Table2 AS t2 WHERE t2.Code = t1.Code );
或者您可以使用動態 SQL 來簡化:
DECLARE @sql NVARCHAR(MAX) = N'DELETE t1 FROM dbo.Table1 AS t1 WHERE NOT EXISTS ( SELECT 1 FROM dbo.Table2 AS t2 WHERE t2.Code = t1.Code );'; EXEC Server.Database..sp_executesql @sql;
這會強制查詢在另一端執行,這也可以提供其他好處……