小强

导航

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

posted on 2022-03-01 20:55  搬砖狗-小强  阅读(195)  评论(0编辑  收藏  举报