SQL SERVER2005建Link Server

转自http://allanpie.blog.163.com/blog/static/2132041020091902648766/

SQL SERVER2005建Link Server

 

SQL Server2005中的link server类似于Oracle里面的DB Link , 透过link server可以访问另一个数据库中的对象 , 这些Link Server可以是SQL Server , 也可以是Oracle等其他类型的数据库, 建好Link Server后就可以象操作当前数据库一样操作其他数据库了,建立的过程非常简单 , 只需要执行几个系统存储过程并传入适当的参数就可以了 。

第一个要执行的存储过程格式如下 :

sp_addlinkedserver [ @server= ] 'server' [ , [ @srvproduct= ] 'product_name' ]      [ , [ @provider= ] 'provider_name' ]    [ , [ @datasrc= ] 'data_source' ]      [ , [ @location= ] 'location' ]    [ , [ @provstr= ] 'provider_string' ]      [ , [ @catalog= ] 'catalog' ] 

[ @server = ] 'server'

要创建的链接服务器的名称。server 的数据类型为 sysname,没有默认值。

[ @srvproduct = ] 'product_name'

要添加为链接服务器的 OLE DB 数据源的产品名称。product_name 的数据类型为 nvarchar(128),默认值为 NULL。如果为 SQL Server,则不必指定 provider_namedata_sourcelocationprovider_stringcatalog

[ @provider = ] 'provider_name'

与此数据源对应的 OLE DB 访问接口的唯一编程标识符 (PROGID)。对于当前计算机中安装的指定 OLE DB 访问接口,provider_name 必须唯一。provider_name 的数据类型为 nvarchar(128),默认值为 NULL;但如果忽略 provider_name,则使用 SQLNCLI。(使用 SQLNCLI 并且 SQL Server 将重定向到 SQL Server Native Client OLE DB 访问接口的最新版本。)OLE DB 访问接口应以指定的 PROGID 在注册表中注册。

[ @datasrc = ] 'data_source'

由 OLE DB 访问接口解释的数据源的名称。data_source 的数据类型为 nvarchar(4000)data_source 作为 DBPROP_INIT_DATASOURCE 属性传递以初始化 OLE DB 访问接口。

[ @location = ] 'location'

由 OLE DB 访问接口解释的数据库的位置。location 的数据类型为 nvarchar(4000),默认值为 NULL。location 作为 DBPROP_INIT_LOCATION 属性传递以初始化 OLE DB 访问接口。

[ @provstr = ] 'provider_string'

OLE DB 访问接口特定的连接字符串,它可标识唯一的数据源。provider_string 的数据类型为 nvarchar(4000),默认值为 NULL。provstr 或传递给 IDataInitialize 或设置为 DBPROP_INIT_PROVIDERSTRING 属性以初始化 OLE DB 访问接口。

当针对 SQL Server Native Client OLE DB 访问接口创建链接服务器时,可以使用 SERVER 关键字来指定实例,即使用 SERVER=servername\instancename 指定特定 SQL Server 实例。servername 是运行 SQL Server 的计算机的名称,instancename 是用户要连接的特定 SQL Server 实例的名称。

比如我Local端有一个SQL Server  ,里面有两个数据库 LocalTest和MyDataBase , 我想在LocalTest里面访问MyDataBase里面的一个表TableTest1  , 建立过程如下 :

1 。 打开SQL Server2005集成开发环境 , 连接到要建立Link Server的数据主机 , 然后新建一个查询 ,在查询窗口中输入如下的代码 :
EXEC master.dbo.sp_addlinkedserver
@server = N'LINK_LOCAL',
@srvproduct=N'',
@provider = N'SQLNCLI',
@datasrc = N'(Local)'
注意 :每个参数在赋值的时候都在前面加多一个N表示后面的值当作Unicode来处理
说明如下 :
     @server :link的名字,建好Link后其他数据库就可以通过这个名字来访问
     @srvproduct :为空 ,参数占位符
     @provider :驱动代码
     @datasrc :数据库服务器 , 因为是本机端的 , 所以用(Local)

第二 :建立好这个Link之后还需要给给这个link加登陆的账号密码 , 因为从外部访问这个Link server的时候需要先登陆  , 存储过程如下 :
EXEC sp_addlinkedsrvlogin 'LINK_LOCAL', 'false', null, 'account', 'password'
说明 :第一个参数的值是上面建立的link的名称 , 最后两个参数参数分别为账号密码  , 执行后可以在继承开发环境中看到新建的这个link server ,  如下图 :
               

第三  : 建立好后还可以给这个LInk server加一些权限 :
如 :EXEC sp_serveroption ‘REMOTE_SERVER_NAME’, ‘data access’, ‘true’

第四 :然后我们就可以在任何需要的地方访问这个LInk server了 , 如 :
select * from LINK_Local.MyDataBase.dbo.TableTest1

附 :通过 OLE DB 访问数据源而建立链接服务器的方法

连接不同数据库实例如下 :

A.  下例使用 SQL Server Native Client OLE DB 访问接口在 SQL Server 实例中创建链接服务器

EXEC sp_addlinkedserver      @server='S1_instance1',    @srvproduct='',   @provider='SQLNCLI',    @datasrc='S1\instance1'

B. 使用 Microsoft OLE DB Provider for Microsoft Access

EXEC sp_addlinkedserver    @server = 'SEATTLE Mktg',    @provider = 'Microsoft.Jet.OLEDB.4.0',    @srvproduct = 'OLE DB Provider for Jet',   @datasrc = 'C:\MSOffice\Access\Samples\Northwind.mdb'

C. 使用 Microsoft OLE DB Provider for Oracle

EXEC sp_addlinkedserver   @server = 'LONDON Mktg',   @srvproduct = 'Oracle',   @provider = 'MSDAORA',   @datasrc = 'MyServer'

D. 将 Microsoft OLE DB Provider for ODBC 与 data_source 参数一起使用

EXEC sp_addlinkedserver    @server = 'SEATTLE Payroll',    @srvproduct = '',   @provider = 'MSDASQL',    @datasrc = 'LocalServer'

E. 将 Microsoft OLE DB Provider 用于 Excel 电子表格

EXEC sp_addlinkedserver 'ExcelSource',   'Jet 4.0',   'Microsoft.Jet.OLEDB.4.0',   'c:\MyData\DistExcl.xls',   NULL,   'Excel 5.0'

H. 使用 Microsoft OLE DB Provider for Jet 访问文本文件

--Create a linked server.EXEC sp_addlinkedserver txtsrv, 'Jet 4.0',    'Microsoft.Jet.OLEDB.4.0',   'c:\data\distqry',   NULL,   'Text'GO

--Set up login mappings.EXEC sp_addlinkedsrvlogin txtsrv, FALSE, Admin, NULLGO

--List the tables in the linked server.EXEC sp_tables_ex txtsrvGO

--Query one of the tables: file1#txt--using a four-part name. SELECT * 

I. 使用 Microsoft OLE DB Provider for DB2

EXEC sp_addlinkedserver   @server='DB2',   @srvproduct='Microsoft OLE DB Provider for DB2',   @catalog='DB2',   @provider='DB2OLEDB',   @provstr='Initial Catalog=PUBS;       Data Source=DB2;       HostCCSID=1252;       Network Address=XYZ;       Network Port=50000;       Package Collection=admin;

参考文章 :http://msdn.microsoft.com/zh-cn/vstudio/ms190479.aspx       Default Schema=admin;'

 

				
时间: 2024-10-29 16:41:23

SQL SERVER2005建Link Server的相关文章

C# 怎样实现远程连接SQL Server2005

server|sql 本文详细讲述了C#怎样实现远程连接SQL Server2005各个步骤. 首先配置SQLSERVER2005: 打开"Microsoft SQL Server Management Studio" 直接用Windows 用户连接进入,再在"安全性"中的"登录名"内的"新建登录名",你就对应的添好"确定"就可以了. 再在你对应的"数据库"里"安全性"

SQL Server2005中用语句创建数据库和表

在SQL Server2005中用语句创建数据库和表: 具体示例如下: use master go if exists (select * from sysdatabases where name='Study') --判断Study数据库是否存在,如果是就进行删除 drop database Study go EXEC sp_configure 'show advanced options', 1 GO -- 更新当前高级选项的配置信息 RECONFIGURE GO EXEC sp_confi

配置SQL Server2005 express与jdbc连接

express|server|sql 本文主要介绍了配置SQL Server2005 express与jdbc连接的全过程. SQL Server2000下的Java应用能否在SQL Server 2005 express上运行,经过不断测试与配置,总结以下经验: 1:首先确认SQL Server2005 express已经安装好了. 2:启用TCP/IP协议. 在"程序->Microsoft SQL Server 2005->配置工具->SQL Server 外围应用配置器&

体验SQL Server2005中T-SQL特性

错误处理一直是T-SQL开发的一个棘手部分.你曾经需要在基于逐个场景的基础上运行每一个语句和处理他们之后手动检查错误.事务管理也很烦琐,因为你得指出你的事务的状态,并恰当的回滚或提交.在SQL Server2005中,微软通过增加Try...Catch块到T-SQL中,提供了一个更新.更强大的错误处理能力. 异常处理很简单;在执行你的代码过程中有意外发生时,例如一个异常,你需要有一个例行方式去处理这个异常.要怎么处理这个异常是由作为开发者的你来决定的.为了增加一个异常处理到你的T-SQL代码中,

SQL Server2005高可用性还有哪些不足

在高可用方面SQL Server提供了一系列高端支持能力,并对复制和快照技术作了增强.但由于SQL Server几乎完全基于Windows平台,因此在HA方面还存在诸多不足: 1.Failover Cluster是大型企业实施SQL Server HA的关键技术,该技术基于微软的MSCS(Microsoft Cluster Service),虽然在05版本中提供更方便的安装和多至8节点(企业版)的支持,但在SCSI和光线通道产品的支持上相对比较"挑剔",尤其对于一些高端的共享裸设备虽然

图片-在W7中安装SQL Server2005总会出现这个,然后就失败了。求教啊!!!急急急!!!!!!

问题描述 在W7中安装SQL Server2005总会出现这个,然后就失败了.求教啊!!!急急急!!!!!! 解决方案 下载安装2008,SQL Server 2008大部分情况下和2005一样用. msdn.itellyou.cn可以下载. 解决方案二: 按理说,你一开始运行sql server 2005就会遇到一个兼容性的提示,难道你没看到. 解决方案三: windows 7和sql server 2005不兼容,建议你安装sql server 2008或以上. 解决方案四: 杀毒软件关掉.

sql server2005 无法用ip直接访问

器原来有sql2000,新装了sql2005,并且用了新的实例"sql2005",发现安装之后用实例sql2005 或者 ipsql2005 或者 机器名sql2005 均可访问数据库, 但是直接用ip地址与端口的形式则无法访问,telnet也显示该端口有开启. 网上搜索了,发现只要设置了实例名,则访问的时候必须带上实例名,现在这个机器无法采用默认实例名,因为已经被sql2000占用了,所以sql2005就不能用了喽 解决办法把sql2000的去了换成2005即可 问题二 看本地的14

sql server-关于myeclips 连接数据库SQL server2005问题

问题描述 关于myeclips 连接数据库SQL server2005问题 myeclips 连接数据库SQL server2005时,打开连接DB Brower时总是蹦出这个页面! 我TCP/IP也启动了,为啥还这样? 解决方案 防火墙有没有允许1433呢 解决方案二: 下面内容主要是参考别人的资料又加了一些自己的具体实践操作感悟,希望对大家有帮助: 用VS数据库连接建立连接出现如下错误: 在建立与服务器连接时出错.在连接到SQL Server 2005 时,在默认的设 置下SQL Serve

log explorer-为恢复sql server2005数据库数据,安装Log Explorer时报错,求大神帮忙看看。

问题描述 为恢复sql server2005数据库数据,安装Log Explorer时报错,求大神帮忙看看. 解决方案 1.Lumigent Log Explorer for SQL Server v4.0.2 特别版下载地址http://down.chinaz.com/soft/7887.htm Log Explorer for SQL Server 4.2 注册码 wv5rc-uxvpz-e33-nr4694qs2 2.Log Explorer for SQL Server v4.0.2 安