从存在表的所有数据库中选择查询

时间:2016-09-12 10:57:23

标签: sql sql-server sql-server-2012

我正在寻找一个查询,它将从所有数据库中返回结果,但仅限于表存在的位置。

我已经运行EXEC sp_MsForEachDb @command1 = 'select * from ?.dbo.users'但这会带来很多错误,因此隐藏了拥有这些表的数据库的结果

2 个答案:

答案 0 :(得分:1)

`EXEC sp_MsForEachDb @command1 = 
' use ?; if exists(select  * from  information_schema.tables where table_`name=''test'' )begin select * from test end'

上述语句将隐藏所有错误,因为它首先检查表的存在。

您也可以排除系统数据库,例如..

EXEC sp_MsForEachDb @command1 = ' use ?;  if db_id()<=4 return  if exists(select * from  information_schema.tables where table_name=''test'' )begin select * from test end'

答案 1 :(得分:-1)

即使出现错误,您仍然可以进入结果标签