我可以跨多个服务器查询但只包含某些数据库吗?

时间:2014-01-08 00:50:21

标签: sql sql-server sql-server-2008

我想要查询3个SQL服务器,但我只想查询某些数据库。这是可能的吗?我把它们设置为注册服务器,我可以在它们之间查询系统类型查询,但是,如果我想查询类似

的内容
SELECT * FROM SJOB

我不能,因为不是每个数据库都有该表,所以它失败了。任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

您可以查询sys.tables视图以检查表是否存在:

if exists(select * from sys.tables where type = 'U' and name = 'SJOB')
select * from SJOB

要在已注册的服务器组上使用它,您还需要为表不存在的服务器编写select查询。架构需要匹配,但您可以使用top 0不返回任何记录。您需要指定所有列,并且虚拟值需要与列类型匹配:

if exists(select * from sys.tables where type = 'U' and name = 'SJOB')
    select * from SJOB
else
    select top 0 1 as col1name, '' as col2name