SqlServer通过链接服务器跨库查询多个数据库合并结果集
下面是不同IP下面对应不同的数据库,通过下面脚本可以把每个库的数据都抓取出来。
以下结果集是多个数据库跨库合并的结果 。
以下是sql代码:
--定义字段
declare @sDbIP varchar(100),--数据库IP
@sDbName varchar(100),--数据库名称
@sDbDisplayName varchar(100),--数据库别名
@sqlstr varchar(8000)--查询sql
--定义临时表
declare @Test1 TABLE(
Test1 varchar(100),
Test2 varchar(100),
Test3 varchar(100)
)
--定义数据库连接
declare @sDblink table
(
sDbIP varchar(100),--数据库IP
sDbName varchar(100),--数据库名称
sDbDisplayName varchar(100)--数据库别名
)
--查询数据库连接
insert into @sDblink
select t.sServerName as sDbIP,t.sDbName,t.sCompanyName as sDbDisplayName
from smlocalcompany t
LEFT JOIN dbo.smLocalCompany_Order T0 ON t.iCompanyID=T0.iCompanyID
where isnull(t.sServerName,'')<>'' AND t.bUsable=1
--定义游标
declare cursor_test cursor for
select * from @sDblink
open cursor_test
fetch next from cursor_test into @sDbIP,@sDbName,@sDbDisplayName
--循环
while @@FETCH_STATUS = 0 begin
set @sqlstr = '
select '''+@sDbDisplayName+''' as Test1,A.Name as Test2,A.Groups as Test3
FROM ['+@sDbIP+'].['+@sDbName+'].[dbo].PM_ColorSystemGroup A
'
INSERT INTO @Test1
exec (''+@sqlstr+'')
fetch next from cursor_test into @sDbIP,@sDbName,@sDbDisplayName
end
close cursor_test
DEALLOCATE cursor_test
SELECT * FROM @Test1
GO
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通