如何测试链接服务器上表列的存在

时间:2015-12-09 19:20:59

标签: sql sql-server

在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')))
...

在数据库所在的服务器上运行时,查询工作正常,但在数据库位于链接服务器上的情况下运行时,查询失败。

1 个答案:

答案 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'
)