SQL语句实现连接远程的数据库

我们使用的数据表,有些时候并不都是在本地的数据库上,如果要调用,这时候就必须连接远程的数据库了。

 

要连接远程的数据库,我们必须知道的信息包括,IP地址端口号(如果没改过的话,可以省略,用逗号列出),登录名登录密码

 

我们假设有一个架设在IP地址为192.168.0.3的数据库DB_test,这个数据库包含一个名为Table_A的表,该表有一个名为ID的自增主键,登录名:sa,密码:sa

 

下面就是具体的连接步骤:

 

1、注册

因为如果远程的数据库没有注册在本地,是不可以连接的。(具体注册的信息可以用:select * from sys.servers来查看)

要连接的数据库必须在sys.servers中存在,才可以连接。

 

注册需要两个系统存储过程, sp_addlinkedserver 和  sp_addlinkedsrvlogin。从名称可以看出,这两个存储过程的作用就是添加地址和添加登录信息。sp_addlinkedserver可以创建多种数据库的映射,包括excel。

exec sp_addlinkedserver   '注册名可以自定义', ' ', 'SQLOLEDB ', '远程服务器名或ip地址(最好用IP)' 
exec sp_addlinkedsrvlogin '必须和上面的注册名一样', 'false ',null, '用户名', '密码' 

所以注册写法为
exec sp_addlinkedserver   'DBTest', '', 'SQLOLEDB', '192.168.0.3' 
exec sp_addlinkedsrvlogin 'DBTest', 'false',null, 'sa', 'sa' 
2、查询
注册时候我们就可以按照select * from 注册名.数据库名.dbo.表名的方法查询了。
例如:select * from DBTest.DB_test.dbo.Table_A实现查询。
3、删除注册
exec sp_dropserver  '注册名称', 'droplogins' ,注册名称可以使用select [name] from sys.servers来选择
例如:exec sp_dropserver  'DBTest', 'droplogins'
 
4、操作远程数据库的表
如果仅能select可能远远不能满足我的需要,有时我们可能需要能够对远程的表数据进行增加、删除和修改。
我们需要一个sql方法 openquery(),语法是 openquery( '注册名','查询语句' )

sql连接丛书对这个方法的解释为:
对给定的链接服务器执行指定的传递查询。该服务器是 OLE DB 数据源。openquery 可以在查询的 from  子句中引用,就好象它是一个表名。openquery 也可以作为 insert、update 或 delete 语句的目标表进行引用。但这要取决于 OLE DB 访问接口的功能。尽管查询可能返回多个结果集,但是 openquery 只返回第一个。
那也就是说,利用这个方法我们就可以实现对远程数据库表的操作。下面举几个例子。
查询:
除了上面的查询方法,用openquery同样可以实现查询
select * from openquery(DBTest,  'select * from DB_test.dbo.Table_A')--不过有些繁琐,不实用
增加:
--将本地A表数据添加到远程的Table_A中
insert into openquery(DBTest,  'select * from DB_test.dbo.Table_A')
select * from A
删除:
delete from openquery(DBTest,  'select * from DB_test.dbo.Table_A') where ID='1'--where后直接跟远程表的字段名
修改:
update openquery(DBTest,  'select * from DB_test.dbo.Table_A') set ID='2' where ID='1'
PS:发现了一个同样是说这个问题的博客,把这个博客的地址列出来,让大家有多一点儿的了解: sql 远程数据库 连接
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值