在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的方式进行查询的方法,用以下两种之一都行,建议用后一种,速度更快,甚至能查询虚拟视图等更多的表:

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

另外建立到ORACLE数据库的链接服务器时,可以不通过图形化的方式,而执行以下两个存储过程:

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.

查询示例:

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

你可能感兴趣的:(oracle,mysql,server,PostgreSQL,linked,OBDC)