【发布时间】:2021-07-13 16:32:52
【问题描述】:
我有 10 个数据库,它们都在同一个实例和架构中,具有相同的表。
希望创建一个SELECT 查询,该查询可以使用数据库名称的变量并将所有记录返回到单个数据集中。
我一直在环顾四周并将以下内容放在一起作为测试(真正的 select 语句要大得多,有多个连接)
这个测试确实有效,但它返回两个结果集,每个数据库一个。
有没有办法将结果合并到一个集合中,还是我使用了错误的方法?
提前致谢
DECLARE @DB_NAME VARCHAR(6);
DECLARE CURSOR_ALLDB_NAMES CURSOR FOR
SELECT name
FROM sys.databases
WHERE name IN ('CN2DAT', 'AU1DAT')
OPEN CURSOR_ALLDB_NAMES
FETCH NEXT FROM CURSOR_ALLDB_NAMES INTO @DB_NAME
WHILE @@Fetch_Status = 0
BEGIN
EXEC ('SELECT * FROM ' + @DB_NAME + '.dbo.ICITEM')
-- EXEC ('USE '+ @DB_NAME + ' SELECT * from dbo.ICITEM')
FETCH NEXT FROM CURSOR_ALLDB_NAMES INTO @DB_NAME
END
CLOSE CURSOR_ALLDB_NAMES
DEALLOCATE CURSOR_ALLDB_NAMES
【问题讨论】:
-
我认为这是因为 in ('CN2DAT', 'AU1DAT')
-
这能回答你的问题吗? SQL Server Dynamic SQL - Get output from list of tables 虽然首先需要这样做是糟糕设计的标志
标签: sql sql-server multiple-databases