You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在SSMS的SQL CMD MODE中跨多服务器数据库合并记录至单表的方法

在SSMS的SQL CMD模式下跨库/服务器合并记录到单表的方法

针对你的需求,有几种实用的方法可以将不同数据库(甚至跨服务器)的查询结果汇总到同一个表中,以下是具体实现:

方法一:使用全局临时表

全局临时表(以##开头)在所有会话中可见,适合在SQL CMD切换连接后共享数据:

-- 先清理已存在的全局临时表(避免冲突)
IF OBJECT_ID('tempdb..##CombinedNames') IS NOT NULL
DROP TABLE ##CombinedNames

-- 创建匹配查询结构的全局临时表
CREATE TABLE ##CombinedNames (
    FirstName NVARCHAR(50),
    LastName NVARCHAR(50)
)

:Connect Database1
-- 将当前库的数据插入全局临时表
INSERT INTO ##CombinedNames (FirstName, LastName)
SELECT firstname, lastname FROM table1
GO

:Connect Database2
INSERT INTO ##CombinedNames (FirstName, LastName)
SELECT firstname, lastname FROM table1
GO

:Connect Database3
INSERT INTO ##CombinedNames (FirstName, LastName)
SELECT firstname, lastname FROM table1
GO

-- 查看合并后的结果,也可以直接插入到永久表
SELECT * FROM ##CombinedNames

-- 可选:执行完毕后删除全局临时表
DROP TABLE ##CombinedNames

注意:全局临时表会被所有会话访问,若有其他同名临时表存在会导致冲突,适合单批处理独立执行的场景。

方法二:使用固定服务器的永久表

如果需要长期保留合并结果,或者不想用全局临时表,可以在某个固定服务器的数据库中创建永久目标表,然后跨服务器插入数据(需确保服务器间已配置链接或具备访问权限):

-- 先在主服务器的目标库中初始化表(清空或创建)
:Connect YourMainServer/YourTargetDB
IF OBJECT_ID('dbo.CombinedNames') IS NOT NULL
TRUNCATE TABLE dbo.CombinedNames
ELSE
CREATE TABLE dbo.CombinedNames (
    FirstName NVARCHAR(50),
    LastName NVARCHAR(50)
)
GO

:Connect Database1
-- 跨服务器插入数据,使用三部分命名(服务器.库.架构.表)
INSERT INTO YourMainServer.YourTargetDB.dbo.CombinedNames (FirstName, LastName)
SELECT firstname, lastname FROM table1
GO

:Connect Database2
INSERT INTO YourMainServer.YourTargetDB.dbo.CombinedNames (FirstName, LastName)
SELECT firstname, lastname FROM table1
GO

:Connect Database3
INSERT INTO YourMainServer.YourTargetDB.dbo.CombinedNames (FirstName, LastName)
SELECT firstname, lastname FROM table1
GO

-- 查看最终合并结果
:Connect YourMainServer/YourTargetDB
SELECT * FROM dbo.CombinedNames
GO

方法三:同服务器跨库简化方案(无需切换连接)

如果所有数据库都在同一台服务器上,不需要用:Connect切换,直接用三部分命名加UNION ALL即可:

SELECT firstname, lastname FROM Database1.dbo.table1
UNION ALL
SELECT firstname, lastname FROM Database2.dbo.table1
UNION ALL
SELECT firstname, lastname FROM Database3.dbo.table1

这种方式更简洁,UNION ALL不会去重,适合保留所有原始记录的场景。

内容的提问来源于stack exchange,提问作者Rod

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 12:24:55