SQL 在链接服务器问题上使用 select 删除

SQL Delete using select on linked server issue

我有 2 个具有相同表的数据库。 两个数据库都在不同的 SQL 服务器上。 我添加了第二个 SQL 服务器作为链接服务器,效果很好。

我想 运行 对链接的数据库进行简单的删除(以便删除不在本地数据库上的 ID)。

当我在同一台服务器上同时拥有两个数据库时,它可以工作

DELETE FROM TM.dbo.Departments
WHERE NOT EXISTS (SELECT * FROM SPO.dbo.Departments 
WHERE TM.dbo.Departments.DepartmentID = spo.dbo.Departments.DepartmentID);

但是当我在链接服务器上尝试这个时,它看起来像这样

DELETE FROM [LINKEDSRV].[TM].[dbo].[Departments]
WHERE NOT EXISTS (SELECT * FROM SPO.dbo.Departments WHERE 
spo.dbo.Departments.DepartmentID = [LINKEDSRV].[TM].[dbo].[Departments].DepartmentID)

最后一行是我无法让它工作的地方。 希望大家多多指教!

试试这个:

DELETE LS
FROM [LINKEDSRV].[TM].[dbo].[Departments] LS
WHERE NOT EXISTS (SELECT 1 FROM SPO.dbo.Departments D
                  WHERE D.DepartmentID = LS.DepartmentID)

正如我在评论中提到的,3+ 列命名已弃用(即 schema.object.column)。为您的对象添加别名,然后在列名称前添加简洁易读的名称 SQL.