sql - 对多个数据库执行相同的 SQL 查询

标签 sql sql-server

我正在尝试调整 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

非常感谢任何帮助。

谢谢!

最佳答案

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;

关于sql - 对多个数据库执行相同的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37920859/

相关文章:

sql - 您可以/如何在不破坏 RI 的情况下添加引用圈?

java - 通过Java从Lotus Notes数据库 View 中检索数据

mysql - "count"中的高级条件查询

c# - 从没有数据的查询中获取列名

java - double 值 0.0001 将在插入数据库时​​转换为 1.0E-4

sql - 连接操作中的语法错误-MS Access

sql - 从 PostgreSQL 表中选择第 N 个值并在查询中使用

sql - 如何使用来访问SQL Server数据库。通过设置位置的名称

sql-server - SSIS:平面文件默认长度

c# - 如何逻辑排序字符串