SQL语句实现连接远程的数据库
2011-05-16 09:48
399 查看
我们使用的数据表,有些时候并不都是在本地的数据库上,如果要调用,这时候就必须连接远程的数据库了。
要连接远程的数据库,我们必须知道的信息包括,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 远程数据库 连接
要连接远程的数据库,我们必须知道的信息包括,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 远程数据库 连接
相关文章推荐
- SQL语句实现连接远程的数据库【续】
- C#实现连接SQL Server2012数据库并执行SQL语句的方法
- SQL语句远程连接其他数据库查询表数据
- C#实现SQL 2005数据库远程连接代码
- ADO.NET的一个帮助类库,只须一个连接,一条SQL语句,轻松实现数据库的查旬,再加一个object 轻松实现数据库的增删改
- 本机不安装Oracle客户端,使用PL/SQL Developer连接远程数据库
- 使用PL/SQL Developer连接远程数据库全过程
- 利用T-SQL语句,实现数据库的备份与还原的功能
- PL/SQL连接远程oracle 11g数据库
- 不安装Oracle客户端使用PL/SQL 远程连接数据库
- SQL语句实现查询当前数据库IO等待状况
- 利用反射+特性实现简单的实体映射数据库操作类(还未做自动生成SQL语句部分)
- PL/SQL Developer 建立远程连接数据库的配置 和安装包+汉化包+注册机
- PB 数据库连接以及sql语句运行信息返回代码解释大全
- mysql/sqlserver/oracle安装以及设置远程连接数据库访问
- java中连接数据库操作的语句,获得执行sql语句对数据库进行操作
- SQL语句实现两个数据库表直接操作
- SQL Server 数据库实现之T-SQL语句[备忘]
- 执行多条SQL语句,实现数据库事务(不可传入Sql参数)
- asp.net使用LINQ to SQL连接数据库及SQL操作语句用法分析