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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

搬砖狗-小强

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值