一尘不染

在多个数据库上执行相同的SQL查询

sql

我正在尝试调整SQL查询以检查服务器上每个数据库中存在的特定字段中存在的值。

有100个单独的数据库,我想检查每个数据库的特定记录。

答案可能是使用下面的命令,但是我很难适应它。

EXECUTE sp_MSForEachDB 
    'USE ?; SELECT DB_NAME()AS DBName, 
    COUNT(1)AS [Count] FROM CUSTOMERS'

我在下面的链接上获得了更大的成功;

https://stackoverflow.com/a/18462734/3461845

我需要能够执行以下查询:

SELECT [SettingName],[SettingValue]  FROM [HostSettings] Where [SettingName] = 'SMTPServer'

并且还为返回的每一行拉回数据库的名称;

DBName | SettingName | SettingValue

Database1 | SMTPServer | smtp.gmail.com

Database2 | SMTPServer | smtp.gmail.com

Database3 | SMTPServer | smtp.yahoo.com

任何帮助是极大的赞赏。

谢谢!


阅读 209

收藏
2021-03-08

共1个答案

一尘不染

DECLARE @T TABLE
([DbName] SYSNAME,
[SettingName] VARCHAR(255),
[SettingValue] VARCHAR(255));

INSERT INTO
@T
EXEC sp_MSForEachDB
'SELECT
    ''?'',
    [SettingName],
    [SettingValue]
FROM
    [?]..[HostSettings]
WHERE
    [SettingName] = ''SMTPServer''';

SELECT * FROM @T;
2021-03-08