在SQL SERVER 中经过Linked Server的方式访问其余远程数据库


PART 1:
sql server中经过 linked server的方式链接到oracle
1.首先须要在sql server的主机中安装oracle客户端。
2.其次要在tnsname.ora中加入须要链接的oracle服务器的链接信息。
3.在SQLSERVER中,连接服务器->访问接口->OraOLEDB.Oracle->右键属性,选中 "Allow inprocess" (中文为:容许进程内)
不然在查询时出现错误:“没法初始化连接服务器 "linkabc" 的 OLE DB 访问接口 "OraOLEDB.Oracle" 的数据源对象".
4.创建连接服务器,填写如下内容:
  连接服务器:即取个此连接的名字,如Link_Oracle.
  访问接口:Oracle provider for OLE DB. 或者选择Microsoft OLE DB Provider for Oracle.
  经过实践得出,若是选择前者,则在数据类型的兼容性上不比后者,会出现这样的错误: 数据不适用于类型 "numeric"。
  数据源:即第2步中配置的服务名.
  安全性->使用此安全上下文创建链接->远程登陆:即ORACLE数据库的用户名;使用密码:即此用户的密码.
5.利用linked server的方式进行查询的方法,用如下两种之一都行,建议用后一种,速度更快,甚至能查询虚拟视图等更多的表:
html

SELECT * FROM [LINK_JW_ORA]..[SJZX].[ASJPBK]
SELECT * FROM openquery(LINK_JW_ORA,'SELECT * FROM ASJPBK')

另外创建到ORACLE数据库的连接服务器时,能够不经过图形化的方式,而执行如下两个存储过程:
sql

EXEC sp_addlinkedserver
@server=N'LINK_JW_ORA', --要建立的连接服务器别名
@srvproduct=N'ORACLE10G', --产品名称
@provider=N'OraOLEDB.Oracle', --OLE DB 驱动名称
@datasrc=N'DB02' --数据源oracle的网络服务名,即tnsnames.ora中配置的
EXEC sp_addlinkedsrvlogin
'LINK_JW_ORA', --已创建的连接服务器名
 'false', -- 固定
  NULL, --为每一个登录SQL SERVER的用户使用此连接服务器,则写用户名*/
 'sjzx', --账号(oracle)
 'sjzx' --密码

删除linked server,能够用以下存储过程:
数据库

EXEC master.dbo.sp_dropserver @server=N'LINK_JW_ORA', @droplogins='droplogins'


PART 2:
SQL SERVER创建到SERVER SQL的linked server
经过图形的方式:
1.连接服务器:即此连接的名称,如Link_MSSQL.
2.服务器类型->其余数据源
3.访问接口:选择SQL Native Client.
4.数据源:即远程SQL SERVER服务器的IP地址,如192.168.1.23.
5.访问接口字符串:即访问的用户和密码,如:User ID=Jhon;Password=123456.
6.安全性选项,选择使用此安全上下文创建链接,->远程登陆login和password为刚才写的Jhon,123456.

查询示例:
windows

select * from openquery(LINK_DB_CENTER,'SELECT * FROM DBCenter.sys.all_objects');
select * from LINK_DB_CENTER.DBCenter.sys.all_objects;


PART 3
SQL SERVER创建到postgreSQL的linked server
1.安装prostgre for windows 的OBDC驱动。
2.在系统中添加到postgres的OBDC数据源。
3.在SQL SERVER中创建Linked Server,图形化的方式建立时,填写如下信息便可:
连接服务器: 咱们给这个连接服务器取的名字,如Link_PG.
访问接口: Microsoft OLE DB Provider for OBDC Drivers.
产品名称: 填写postgreSQL便可.
数据源: 这个很重要, 就是咱们在系统中添加的ODBC数据源的名称.
安全性->使用此安全上下文创建链接->远程登陆:即MYSQL数据库的用户名;使用密码:即此用户的密码.

注意:
PostgreSQL默认只监听本地端口,用netstat -tuln只会看到“tcp 127.0.0.1:5432 LISTEN”。
修改postgresql.conf中的listen_address=*,监听全部端口,这样远程才能经过TCP/IP登陆数据库,
用netstat -tuln会看到“tcp 0.0.0.0:5432 LISTEN”。
ref: http://www.cnblogs.com/hiloves/archive/2011/08/20/2147043.html



PART 4
SQL SERVER创建到MYSQL的linked server
1.安装MYSQL for windows 的OBDC驱动。
2.在系统中添加到MYSQL的OBDC数据源。
3.在SQL SERVER中创建Linked Server,图形化的方式建立时,填写如下信息便可:
连接服务器: 咱们给这个连接服务器取的名字,如Link_Mysql.
访问接口: Microsoft OLE DB Provider for OBDC Drivers.
产品名称: 填写 MYSQL便可.
数据源: 这个很重要, 就是咱们在系统中添加的ODBC数据源的名称.
安全性->使用此安全上下文创建链接->远程登陆:即MYSQL数据库的用户名;使用密码:即此用户的密码.


参考文章:
http://blog.sina.com.cn/s/blog_517cae3c01017n2s.html
http://blog.csdn.net/iwteih/article/details/4551118
http://www.cnblogs.com/ShineTan/archive/2008/12/25/1362472.html
http://anigh.blog.163.com/blog/static/33758654200924053346/
http://www.cnblogs.com/hukn/archive/2011/07/27/SQL_Server_ODBC_LinkServer_MySQL.html
http://blog.miniasp.com/post/2008/07/How-to-setup-Linked-Server-in-SQL-Server-2005.aspx
http://www.cnblogs.com/chinhr/archive/2009/03/10/1408033.html
安全

相关文章
相关标签/搜索