在几个数据库上立即执行查询

时间:2018-01-24 09:36:26

标签: sql sql-server tsql

我有一个带有多个数据库(CustomerA,CustomerB,....)的SQL Server数据库,它们都具有相同的结构。

是否可以立即对所有数据库(CustomerA,CustomerB,....)执行查询?

下面是一台服务器:

Use CustomerA
GO
select * from Loggin.NLog where messages like '%error%'

我想要的结果是:

CustomerA
Row with error
Row with error
CustomerB
Row with error

2 个答案:

答案 0 :(得分:2)

如果您在ddbb中将所有服务器注册为链接服务器,是的,您可以。

1

查看有关注册链接服务器的here

答案 1 :(得分:2)

您可以考虑使用(未记录的)sp sp_MSforeachdb

USE master;
GO

EXEC sp_MSforeachdb 'USE ?
IF (''?'' NOT IN (''master'',''msdb'',''tempdb'',''model'')) BEGIN
    PRINT ''Running query on ?'';
    SELECT ''?'' AS DatabaseName, * FROM Loggin.NLog WHERE messages LIKE ''%error%'';    
END';