链接服务器的配置和使用(SQL Server)
最近实施的一个项目,因为两个软件的后台数据库不能共存于一个服务器上(一些相关的设置有冲突),因此需要跨服务器进行数据库的同步,查找了一些相关的资料,跨服务器数据的同步处理方式一种是复制(replication),即将数据由某处复制到一个或多个目的地;另一种即链接服务器。因为此项目的数据同步比较简单,故主要采用链接服务器来处理同步数据!
以下是关于链接服务器的使用方法:
配置链接服务器
链接服务器一般用来处理分布式查询。当客户端应用程序通过链接服务器执行分布式查询时,SQL Server 将分析该命令,并向 OLE DB 发送行集请求。行集请求的形式可以是对提供程序执行查询或从提供程序打开基表。
分布式查询可以访问来自多种异类数据源的数据,而这些数据可存储在相同或不同的计算机上。SQL Server 2000 通过使用 OLE DB(Microsoft 通用数据访问应用程序接口 (API) 规范)支持分布式查询。
链接服务器配置允许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
![](http://www.sqlchina.cn/UserFiles/Image/Snap_MSDTC.jpg)
打开以后,在本地服务器上注册远程服务器的信息,创建linkedServer,操作代码如下:
sp_addlinkedserver @server='CARDSRV',@srvproduct='',@catalog='iHRP',@provider='SQLOLEDB',
@provstr='DRIVER={SQL Server};Initial Catalog=iHRP;SERVER=192.168.0.32;UID=sa;PWD=;'
其中@server名称随便取,@catalog为数据库名,@provider为数据库驱动,@provstr为连接字符串
然后使用sp_linkedservers,查看此服务器是否已经成功注册为链接服务器,如果已经注册成功,则使用
EXEC sp_addlinkedsrvlogin 'CARDSRV','false',注册login帐号,然后你就可以执行一个Sql语句,试试看看是否可以从链接服务器中操作数据了,
例如:
select top 10 * from CARDSRV.dbo.Dept_Class
就是从刚才我设置的链接服务器TEST中的一个表:Dept_Class中查询数据。
备注:
1、关于链接服务器的详细情况请参阅联机丛书中的sp_addlinkedserver、 sp_addlinkedsrvlogin、sp_addserver、sp_dropserver、sp_serveroption、 sp_linkedservers等系统级存储过程。
2、关于此链接服务器的创建及其使用在不同环境下(全部内网服务器、一内网一公网服务器、全公网服务器)测试,均告通过。
3、有时候在存储过程中访问链接服务器的时候可能会碰到如下的提示,必须要对ANSI warning 和ANSI nulls进行设置,这时候按照如下的方法进行设置:
设置本地数据库的属性-->连接-->选上ANSI warning 和 ANSI nulls
(如图)![](http://www.sqlchina.cn/UserFiles/Image/Snap1.jpg)
以下是关于链接服务器的使用方法:
配置链接服务器
链接服务器一般用来处理分布式查询。当客户端应用程序通过链接服务器执行分布式查询时,SQL Server 将分析该命令,并向 OLE DB 发送行集请求。行集请求的形式可以是对提供程序执行查询或从提供程序打开基表。
分布式查询可以访问来自多种异类数据源的数据,而这些数据可存储在相同或不同的计算机上。SQL Server 2000 通过使用 OLE DB(Microsoft 通用数据访问应用程序接口 (API) 规范)支持分布式查询。
链接服务器配置允许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
![](http://www.sqlchina.cn/UserFiles/Image/Snap_MSDTC.jpg)
打开以后,在本地服务器上注册远程服务器的信息,创建linkedServer,操作代码如下:
sp_addlinkedserver @server='CARDSRV',@srvproduct='',@catalog='iHRP',@provider='SQLOLEDB',
@provstr='DRIVER={SQL Server};Initial Catalog=iHRP;SERVER=192.168.0.32;UID=sa;PWD=;'
其中@server名称随便取,@catalog为数据库名,@provider为数据库驱动,@provstr为连接字符串
然后使用sp_linkedservers,查看此服务器是否已经成功注册为链接服务器,如果已经注册成功,则使用
EXEC sp_addlinkedsrvlogin 'CARDSRV','false',注册login帐号,然后你就可以执行一个Sql语句,试试看看是否可以从链接服务器中操作数据了,
例如:
select top 10 * from CARDSRV.dbo.Dept_Class
就是从刚才我设置的链接服务器TEST中的一个表:Dept_Class中查询数据。
备注:
1、关于链接服务器的详细情况请参阅联机丛书中的sp_addlinkedserver、 sp_addlinkedsrvlogin、sp_addserver、sp_dropserver、sp_serveroption、 sp_linkedservers等系统级存储过程。
2、关于此链接服务器的创建及其使用在不同环境下(全部内网服务器、一内网一公网服务器、全公网服务器)测试,均告通过。
3、有时候在存储过程中访问链接服务器的时候可能会碰到如下的提示,必须要对ANSI warning 和ANSI nulls进行设置,这时候按照如下的方法进行设置:
设置本地数据库的属性-->连接-->选上ANSI warning 和 ANSI nulls
(如图)
![](http://www.sqlchina.cn/UserFiles/Image/Snap1.jpg)