Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对所有数据库执行SQL查询';s_Sql_Sql Server_Database - Fatal编程技术网

对所有数据库执行SQL查询';s

对所有数据库执行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

我有一个SQL Server,其中有17个数据库具有相同的表结构。我想对每个数据库中的每个表进行计数查询

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
现在我有两个问题:

  • 如何合并计数结果?所以我想知道总共有多少台设备,而不是每分贝
  • 运行此查询时,我得到一个错误

    信息911,16级,状态1,第2行
    数据库“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”的数据库,而您没有?你有吗?你有一个处于不可读状态的吗?