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