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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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 对具有相似名称的所有数据库运行查询_Sql_Sql Server_Sql Server 2014 - Fatal编程技术网

Sql 对具有相似名称的所有数据库运行查询

Sql 对具有相似名称的所有数据库运行查询,sql,sql-server,sql-server-2014,Sql,Sql Server,Sql Server 2014,我在一台服务器上有30个数据库。我需要对其中20个进行查询。我写了一些代码来处理这个问题,但它已经崩溃了,所以我一直在寻找如何纠正这个问题或改变我的做法的建议 错误信息: 味精102,15级,状态1,第16行 “hr”附近的语法不正确 我需要运行的所有数据库都具有相似的名称: CustDB00001 CustDB00025 CustDB00076 CustDB09999 我的代码: set nocount on; DECLARE @db_name NVARCHAR (150) DECLAR

我在一台服务器上有30个数据库。我需要对其中20个进行查询。我写了一些代码来处理这个问题,但它已经崩溃了,所以我一直在寻找如何纠正这个问题或改变我的做法的建议

错误信息:

味精102,15级,状态1,第16行
“hr”附近的语法不正确

我需要运行的所有数据库都具有相似的名称:

CustDB00001
CustDB00025
CustDB00076
CustDB09999
我的代码:

set nocount on;

DECLARE @db_name NVARCHAR (150)

DECLARE c_db_names CURSOR FOR
    SELECT name 
    FROM sys.databases
    WHERE name like ('Billing%')

OPEN c_db_names    

FETCH c_db_names INTO @db_name    

WHILE @@Fetch_Status = 0    
BEGIN
    EXEC('INSERT INTO #B1report   
              SELECT 
                  hr.client,
                  RTRIM(LTRIM(hc.facility)) AS facility,
                  h.gcode, h.rcode,
                  u.bill,
                  hr.*
              FROM 
                  CustDB' + dbname + '.dbo.table1 h 
              JOIN 
                  CustDB' + dbname + '.dbo.table2 hr ON hr.[hrcounter] = h.hcounter 
              JOIN 
                  CustDB' + dbname + '.dbo.table3 hc ON hc.[hccounter] = hr.hrcounter 
              JOIN 
                  CustDB' + dbname + '.dbo.table4 u ON u.ucounter = hc.hccounter 
              WHERE 1 = 1 
                AND CAST(2.r_date AS DATE) BETWEEN ''01/01/2017'' AND ''6/18/2018''
                AND 1.rcode IN (''69'', ''70'')')

    FETCH c_db_names INTO @db_name
END

CLOSE c_db_names
DEALLOCATE c_db_names

SELECT * FROM #B1report

任何关于如何纠正上述问题或如何更好地处理(可能没有光标)的建议都将不胜感激。

我使用上述所有建议解决了这个问题。我现在坚定地陷入了一个全新的错误中。我不知道从哪里开始详细说明我的答案,但我会在接下来的几分钟内尝试,也许你可以告诉我们你在哪里/哪一行/收到了什么错误消息?我编辑并输入了错误代码:Msg 156,级别15,状态1,第28行关键字“RIGHT”附近的语法不正确。
+RIGHT(CONCAT('00000',dbname),5))+
您有一个额外的右括号。
dbname
也应该是
@db\u name
您可能需要在表中使用括号,因为您使用了一个数值作为别名。