我有一个包含17个具有相同表结构的数据库的SQL Server。我想对每个数据库中的每个表进行计数查询
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
现在我有两个问题:
运行此查询时,出现错误
Msg 911,Level 16,State 1,Line 2
数据库'CH'不存在。确保正确输入名称。
我应该通过添加IF EXISTS
来解决这个问题。但是我必须把它放在哪里?
谢谢!
答案 0 :(得分:1)
这样的事情:
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