在SQL Server 2012中,我需要测试链接服务器上的表中是否存在列。
我一直在尝试下面语句的不同变体,但是IF EXISTS
总是返回false,即使列确实存在也是如此。一些游戏显示OBJECT_ID(N'MY_DB.dbo.My_Table')
始终为NULL。
IF EXISTS (SELECT * FROM [MY_SRVR].MY_DB.sys.columns WHERE
(name = N'My_Column')
AND
(OBJECT_ID = OBJECT_ID(N'MY_DB.dbo.My_Table')))
...
在数据库所在的服务器上运行时,查询工作正常,但在数据库位于链接服务器上的情况下运行时,查询失败。
答案 0 :(得分:3)
这应该有用。
IF EXISTS
(
SELECT *
FROM [MY_SRVR].MY_DB.sys.columns c
join [MY_SRVR].MY_DB.sys.tables t on t.OBJECT_ID = c.OBJECT_ID
WHERE c.name = N'My_Column'
AND t.name = N'My_Table'
)