对所有数据库执行SQL查询';s
我有一个SQL Server,其中有17个数据库具有相同的表结构。我想对每个数据库中的每个表进行计数查询对所有数据库执行SQL查询';s,sql,sql-server,database,Sql,Sql Server,Database,我有一个SQL Server,其中有17个数据库具有相同的表结构。我想对每个数据库中的每个表进行计数查询 DECLARE @command varchar(1000) SELECT @command = 'IF ''?'' NOT IN(''master'', ''model'', ''msdb'', ''tempdb'', ''ReportServer'', ''ReportserverTempDB'') BEGIN USE ? EXEC(''SELECT COUNT
DECLARE @command varchar(1000)
SELECT @command = 'IF ''?'' NOT IN(''master'', ''model'', ''msdb'', ''tempdb'', ''ReportServer'', ''ReportserverTempDB'')
BEGIN
USE ?
EXEC(''SELECT COUNT(MODEL) AS rptdevicecount
FROM dbo.devices WHERE MODEL IS NOT NULL'') END'
EXEC sp_MSforeachdb @command
现在我有两个问题:
数据库“CH”不存在。确保输入的名称正确
(如果存在)来解决这个问题。但是我该把它放在哪里呢
谢谢大家! 类似这样:
CREATE TABLE #T1 (DBName varchar(20), Qty int)
EXECUTE master.sys.sp_msforeachdb 'USE [?];
IF DB_NAME() NOT IN (''master'',''model'',''msdb'',''tempdb'',''ReportServer'',''ReportServerTempDB'')
BEGIN
INSERT INTO #T1
SELECT db_Name(), COUNT(*) FROM sys.tables
END
'
SELECT SUM(qty) FROM #T1
DROP TABLE #T1
为了总结结果,我建议在您的程序中进行,而不是使用查询,因为所有数据库都是独立运行的。1)我将结果存储在临时表中。2) 为什么SQL Server会认为您有一个名为“CH”的数据库,而您没有?你有吗?你有一个处于不可读状态的吗?