2

我正在使用查询从服务器上的所有数据库中获取特定结果(来自 where 子句):

  sp_msforeachdb  'select * from [?].dbo.[table] where field=''666'''

我有大约 10 个数据库,其中包含我正在搜索的这个表......但是当我使用这个查询时,它也会查看tempdb,master以及不包含这个表的其他数据库。

所以它会返回:

消息 208,级别 16,状态 1,第 1 行
无效的对象名称 'master.dbo.table。

我想压制这条消息......我试过了set nocount,,,,。@@error > 0gotoansi_warnings

4

1 回答 1

3

sp_msforeachdb可以采用准备好的语句,其中您可以使用if子句等。谷歌上的第一次点击发现了这个:

http://www.codeproject.com/Articles/459536/SQL-Server-Applying-Filter-on-sp_MSforeachDB

EXEC sp_MSforeachdb 'IF ''?''  NOT IN (''tempDB'',''model'',''msdb'')
BEGIN
       SELECT name,physical_name,state,size
       FROM ?.sys.database_files
END'
于 2013-07-03T12:54:34.890 回答