链接服务器的配置和使⽤(SQLServer)
配置链接服务器
链接服务器⼀般⽤来处理分布式查询。当客户端应⽤程序通过链接服务器执⾏分布式查询时,SQL Server 将分析该命令,并向 OLE DB 发送⾏集请求。⾏集请求的形式可以是对提供程序执⾏查询或从提供程序打开基表。
分布式查询可以访问来⾃多种异类数据源的数据,⽽这些数据可存储在相同或不同的计算机上。Microsoft® SQL Server™ 2000 通过使⽤ OLE DB(Microsoft 通⽤数据访问应⽤程序接⼝ (API) 规范)⽀持分布式查询。
链接服务器配置允许 Microsoft® SQL Server™ 对其它服务器上的 OLE DB 数据源执⾏命令。链接服务器具有以下优点:
远程服务器访问。
对整个企业内的异类数据源执⾏分布式查询、更新、命令和事务的能⼒。
能够以相似的⽅式确定不同的数据源。
链接服务器组件
链接服务器的定义指定了 OLE DB 提供程序和 OLE DB 数据源。
OLE DB 提供程序是管理特定数据源和与特定数据源进⾏交互的动态链接库 (DLL)。OLE DB 数据源标识可通过 OLE DB 访问的特定数据库。尽管通过链接服务器的定义所查询的数据源通常是数据库,但也存在适⽤于多种⽂件和⽂件格式的 OLE DB 提供程序,包括⽂本⽂件、电⼦表格数据和全⽂内容检索结果。下表说明了最常⽤于 SQL Server 的 OLE DB 提供程序和数据源⽰例。
OLE DB提供程序                                OLE DB 数据源
⽤于 SQL Server 的 Microsoft OLE DB 提供程序    SQL Server 实例
⽤于 Jet 的 Microsoft OLE DB 提供程序            mdb 数据库⽂件的路径名
⽤于 ODBC 的 Microsoft OLE DB 提供程序          指向某个具体数据库的 ODBC 数据源名称
⽤于 oracle 的 Microsoft OLE DB 提供程序        指向 oracle 数据库的 SQL*Net 别名
⽤于索引服务的 Microsoft OLE DB 提供程序        能够对其执⾏属性搜索或全⽂检索的内容⽂件
说 明  SQL Server 只针对分别⽤于 SQL Server、Jet、Oracle、索引服务和 ODBC 的 Microsoft OLE DB 提供程序进⾏了测试。然⽽,SQL Server 分布式查询旨在与任何实现了必需的 OLE DB 接⼝的 OLE DB 提供程序⼀起使⽤。
为了使数据源能够通过链接服务器返回数据,那个数据源的 OLE DB 提供程序 (DLL) 必须位于 SQL Server 所在的服务器上。
链接服务器⼀般⽤来处理分布式查询。当客户端应⽤程序通过链接服务器执⾏分布式查询时,SQL Server 将分析该命令,并向 OLE DB 发送⾏集请求。⾏集请求的形式可以是对提供程序执⾏查询或从提供程序打开基表。
管理链接服务器的定义
设置链接服务器时,请注册 SQL Server 的连接信息和数据源信息。完成注册后,该数据源总可以⽤单个逻辑名称引⽤。
可以使⽤存储过程或 SQL Server 企业管理器来创建或删除链接服务器的定义。
使⽤存储过程:
使 ⽤ sp_addlinkedserver 创建链接服务器的定义。若要查看有关给定的 SQL Server 实例中定义的链接服务器的信息,请使⽤
sp_linkedservers。有关更多信息,请参见 sp_addlinkedserver 和 sp_linkedservers。
使⽤ sp_dropserver 删除链接服务器的定义。还可以使⽤此存储过程删除远程服务器。
使⽤ SQL Server 企业管理器:
使 ⽤ SQL Server 企业管理器控制台树和"链接服务器"节点(在"安全性"⽂件夹内)来创建链接服务器的定义。为链接服务器定义名称、提供程序属性、服务器选项和安全选项。 有关各种为不同的 OLE DB 数据源设置链接服务器的⽅式以及要使⽤的参数值的更多信息,请参见sp_addlinkedserver。
通过右击链接服务器并单击"属性"命令,可编辑链接服务器的定义。
通过右击链接服务器并单击"删除"命令,可删除链接服务器的定义。
当对链接服务器执⾏分布式查询时,请对每个要查询的数据源指定完全合法的、由四部分组成的表名。这个由四部分组成的名称的格式应是:linked_server_name.catalog.schema.object_name。
众所周知,在⼤型的数据库系统设计中,为了提升效率,不可避免的要将不⽤的业务放在不同的数据实例上,因此我们使⽤到了链接服务器,链接服务器为⼤家在不 同的服务之间进⾏分布式数据操作提供了便利。本例⼦基于windows 2003操作系统,Sql server 2000(sp4)数据库。
⾸先要打开你本地服务器和远程服务器的MSDTC:
开始-->Microsoft SQL Server-->服务管理器-->选择服务中的 Distributed Transaction Coordinator(此即DTC),点击“启动”按钮,启动MSDTC
---------------------------------------------------------------------------------------------------------------------------------------------
打开以后,在本地服务器上注册远程服务器的信息,创建linkedServer,操作代码如下:
sp_addlinkedserver @server='GKSRV',@srvproduct='',@catalog='gk_2005',@provider='SQLOLEDB',
@provstr='DRIVER={SQL Server};Initial Catalog=gk_2005;SERVER=10.16.37.109;UID=admin;PWD=1234;'
其中@server名称随便取,@catalog为数据库名,@provider为数据库驱动,@provstr为连接字符串
然后使⽤sp_linkedservers,查看此服务器是否已经成功注册为链接服务器,如果已经注册成功,则使⽤
EXEC sp_addlinkedsrvlogin 'GKSRV','false',注册login帐号,然后你就可以执⾏⼀个Sql语句,试试看看是否可以从链接服务器中操作数据了,
例如:
select top 10 * from gksrv.gk_2005.dbo.ndy_Class
就是从刚才我设置的链接服务器GkSrv中的⼀个表:ndy_Class中查询数据。
经过本⼈测试:这个连接⽅法可以访问到该服务器上的所有数据库,并⾮只能操作数据库gk_2005的内容
-------------------------------------------------------------------------------------------------------------------------------------------------
sql连接不上服务器备注:
1、 关于链接服务器的详细情况请参阅联机丛书中的sp_addlinkedserver、 sp_addlinkedsrvlogin、sp_addserver、sp_dropserver、sp_serveroption、 sp_linkedservers等系统级存储过程。
2、关于此链接服务器的创建及其使⽤在不同环境下(全部内⽹服务器、⼀内⽹⼀公⽹服务器、全公⽹服务器)测试,均告通过。
3、有时候在存储过程中访问链接服务器的时候可能会碰到如下的提⽰,必须要对ANSI warning 和ANSI nulls进⾏设置,这时候按照如下的⽅法进⾏设置:
设置本地数据库的属性-->连接-->选上ANSI warning 和 ANSI nulls

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。