分布式跨库查询---------基于2005到2005

本文详细介绍如何在SQL Server中实现分布式跨库查询,包括配置远程连接、建立链接库及使用OPENROWSET方法等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

很多时候我们需要用到分布式查询,比如分布在两台服务器上的数据,如果想进行操作就要进行分布式跨库查询。

因为工作关系、研究了分布式查询、现记录下、以备往后不时之需!

写在前面:请注意(要是不想因为报没有权限问题而让你烦恼的话、最好使用   sa  登录!)

进行分布式查询要准备的:

1.首先确认你想要使用的两台数据库有没有开启远程连接功能、并且协议有没有开通!

(开通步骤)

开始菜单-----程序-----SQL200×---------配置工具-----SQL外网配置-------服务和连接的外网应用配置器。

点击远程连接-----选中本地连接和远程连接-------选中 同时使用TCP/IP 和named pipes(如下图)


2.开启好远程连接功能了、下面开始建立链接库(此处只写我使用的方法、更多方法请参考baidu.com)


exec sp_dropserver 'DBVIP','droplogins'-----此方法为 删除你不需要使用的链接库 DBVIP 为此链接库别名、
exec sp_helpserver -----。。。为显示数据库现在所有的链接库


EXEC sp_addlinkedserver ------此方法为添加链接库
@server='DBVIP', --被访问的服务器别名 ------此参数只是为链接库设置一个别名(好记就行、不用太过纠结!)
@srvproduct='', ------要添加为链接服务器的 OLE DB 数据源的产品名称。 (默认值为null 就好了、像我这样什么都不填)
@provider='SQLOLEDB', ------与数据源对用的编码标示符。(SQL数据库 为 SQLOLEDB,其他的请移步至baidu.com)
@datasrc='192.168.2.150\实例名' ------此为访问的服务器IP地址和实例名。(有的说两者只写其一就好、但好像我的SQL不行。反正报什么“字符串无法解析的”什么错误的 请加上实例名)

exec sp_addlinkedsrvlogin
@rmtsrvname = 'DBVIP', -------上面设置的别名
@useself = 'false',
@locallogin = null,
@rmtuser ='fpsc_sw', ------你要远程的数据库的 账号 最好为(sa)
@rmtpassword ='fpsc_sw' ------远程数据库的密码


3.上面如果都设置好了、下面就可以进行跨库查询了(以下语句基于上面设置的链接库)

假设现在有个 A 数据库 里面有 testA 表

有个B 数据库  里面有个testB 表

在A 中查询B 中的数据:

select * from  DBVIP.B.dbo.testB   (dbo为架构名。其实就是你表名前面的那个)

从B 中查询A中的数据:

select * from DBVIP.A.dbo.testA


插入数据(把A中的数据插入到B中)

insert openquery(DBVIP,'select * from B.dbo.testB') select * from A

(之前插入写错了、使用的应该是  openquery  )


以上就是我使用的分布式链接库查询


还有个方法是不需要建立链接库的

方法如下(从A 查询B 中的数据)

select * from openrowset('SQLOLEDB' , '192.168.2.150\实例名' ; 'fpsc_sw' ; 'fpsc_sw' , B.dbo.testB)

注意 语句中 分号 好 逗号的区别(IP 和 用户名之后都为;分号)


希望此篇“陋文”能解答你一些疑惑! 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值