架构深渊

慢慢走进程序的深渊……关注领域驱动设计、测试驱动开发、设计模式、企业应用架构模式……积累技术细节,以设计架构为宗。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

SSQL Server 2000 链接服务器(LinkServer)的特别说明[转]

Posted on 2009-05-17 12:49  chen eric  阅读(713)  评论(0编辑  收藏  举报
MSSQL Server 2000访问某个对象的标准方法是采用四部分构成的名称:

[ServerName].[DataBaseName].[UserName].[ObjectName]
其中,对每一部分,如果为当前值的话,可以省略;
对于当前服务器,
[ServerName]省略(或者,笔者暂时没有找到当前服务器的替代标志符);

比如,要访问本服务器上的Northwind.dbo.Employees表,这样编写:

SELECT * FROM Northwind.dbo.EmployeesGO
如果切换当前的数据库为Northwind,可是省略数据库名称,如:

USE NorthwindGOSELECT * FROM dbo.EmployeesGO
如果当前用户为dbo的登陆(比如sa,或者其它的dbo的登录名称),也可以省略用户名称:

SELECT * FROM EmployeesGO
对于中间部分相同的,可以省略,但要保留该位置,如:

USE tempdbGOSELECT * FROM Northwind..EmployeesGO
如果在远程服务器上访问该表,假设在远程服务器上对该服务器的链接名称为RemoteServer

SELECT * FROM RemoteServerEmployeesGO
其中假定了远程服务器使用sa登录,并设定当前数据库为Northwind。

另外,对于其它类型引擎的远程服务器,可能由于服务器的机制不同,4部分中的某部分没有相应的元素,则该部分可以省略。比如,对于Oracle数据库,用户的数据库即方案(
Schema),可以认为没有数据库,则访问Oracle远程服务器的时候,采用以下方式:

SELECT * FROM OracleServer..SCOTT.EMP


链接服务器

MSSQL Server 2000提供了链接服务器,很方便的访问远程的SQLServer数据库数据(表和视图),以及其它数据库引擎类型的数据。链接服务器位于 安全性à链接服务器。


链接Oracle数据库

链接Oracle数据库,填写以下内容:
提供程序名称,选择Microsoft OLE DB Provider 
for Oracle;数据源,填写连接Oracle数据库的服务名;然后在安全性选项卡中输入登录账号和密码。

访问远程Oracle数据库表:

SELECT * FROM ORA_SERVER..SCOTT.EMPSELECT * FROM ORA_SERVER..USER.DEMO_TABLE /*可以访问其它用户的表,只要有权限*/

特别地:

提供程序名称需要选择“Microsoft OLE DB Provider 
for Oracle”,它在表sysservers中存储的值为:“MSDAORA”。如果有“Oracle Provider for OLE DB”,在表中存储的数值为“OraOLEDB.Oracle”。选择该程序名称,将不能很好的访问到数据。(也许是笔者没有找到正确的访问方法)。

通过链接服务器访问Oracle数据库的对象,是区分大小写的。即访问数据库表,
[UserName][TableName]通常需要使用大写字母,除非Oracle数据库中特意使用了小写。

如果存储了中文字符,需要在“服务器选项”选项页中,选择排序规则名称为“Chinese_PRC_”系列的排序规则名称,否则中文数据会显示乱码。 



链接ODBC数据库

链接ODBC数据库,填写以下内容:

提供程序名称,选择“Microsoft OLE DB Provider 
for ODBC Driver”,它在表中存储的值为“MSDASQL”;产品名称输入“ODBC”,数据源填写系统DSN的ODBC数据源;提供程序字符串填写ODBC的连接选项(在ODBC中没有说明的选项)。

范例:
下面以连接MSSQL Server 
6.5为例(MSSQL Server 6.5不能使用OLEDB直接连接)
数据源使用ODBC现有的localserver(操作系统的ODBC默认拥有的数据源),这样不足以连接到我们需要的数据库,因为该数据源实际上是空数据源。在提供程序字符串中,填写链接的参数:
DRIVER
={SQL Server};UID=sa;WSID=host1;APP={Application Name};SERVER=mssql65srv

说明:
DRIVER填写数据源的驱动名称,UDI填写登录的帐号,WSID填写客户端名称(WorkStationID),APP填写应用程序名称,SERVER填写要连接的数据库服务器,DATABASE指明连接的默认当前数据库。

特别地,ODBC连接SQLServer 
6.5的时候,对中文字符产生的乱码,不是在上述的排序规则名称中设置,而是由于ODBC本身机制的问题。需要在设置ODBC的时候,取消选择“执行字符数据翻译”选项(尽管在测试ODBC的时候要求选择该选项,不用管它)。