SQLServer的链接服务器技术小结

来源:互联网 发布:弱视训练软件app 编辑:程序博客网 时间:2024/04/30 03:35
 

一、使用MicrosoftOLEDBProviderForODBC链接MySQL

 

安装MySQL的ODBC驱动MyODBC

 

1、为MySQL建立一个ODBC系统数据源,例如:选择数据库为test,数据源名称为

 

 

myDSN

 

2、建立链接数据库

 

EXECsp_addlinkedserver @server='MySQLTest',@srvproduct='MySQL',

 

 

@provider='MSDASQL',@datasrc='myDSN'

 

GO

 

EXECsp_addlinkedsrvlogin 

 

 

@rmtsrvname='MySqlTest',@useself='false',@locallogin='sa',@rmtuser='mys

 

ql的用户名',@rmtpassword='mysql的密码'

 

3、查询数据

 

SELECT*FROMOPENQUERY(MySQLTest,'select*from表')

 

下面这个不行:

 

SELECT*FROMOPENQUERY(MySQLTest,'表')

 

 

注意:不能直接用select*from链接服务器名.数据库名.用户名.表(或视图)

 

四部分名称查询数据,可能是个Bug.

 

 

二、使用MicrosoftOLEDBProviderForORACLE链接ORACLE

 

 

1、建立链接数据库

 

sp_addlinkedserver'别名','Oracle','MSDAORA','服务名'

 

GO

 

EXECsp_addlinkedsrvlogin @rmtsrvname='别名

 

 

',@useself='false',@locallogin='sa',@rmtuser='oracle用户名

 

',@rmtpassword='密码'

 

2、查询数据

 

SELECT*FROM别名..用户名.表(视图)

 

注意:四部分名称全部用大写

 

3、执行存储过程

 

使用OPENQUERY:

 

SELECT*

 

FROMOPENQUERY(别名,'exec用户名.存储过程名')

 

 

 

三、设置链接服务器以访问格式化文本文件

 

 

用于Jet的MicrosoftOLEDB提供程序可用于访问并查询文本文件。

 

若要直接创建访问文本文件的链接服务器而不将文件链接为Access.mdb文件中

 

的表,请执行sp_addlinkedserver,如下例所示。

 

提供程序是Microsoft.Jet.OLEDB.4.0,提供程序字符串为"Text"。数据源是包

 

 

含文本文件的目录的完整路径名称。schema.ini文件(描述文本文件的结构)必

 

须与此文本文件存在于相同的目录中。有关创建schema.ini文件的更多信息,

 

请参见Jet数据库引擎文档。

 

--Createalinkedserver.

 

EXECsp_addlinkedservertxtsrv,'Jet4.0',

 

   'Microsoft.Jet.OLEDB.4.0',

 

   'c:/data/distqry',

 

   NULL,

 

   'Text'

 

GO

 

 

--Setuploginmappings.

 

EXECsp_addlinkedsrvlogintxtsrv,FALSE,NULL,Admin,NULL

 

GO

 

 

--Listthetablesinthelinkedserver.

 

EXECsp_tables_extxtsrv

 

GO

 

 

--Queryoneofthetables:file1#txt

 

--usinga4-partname.

 

SELECT*

 

FROMtxtsrv...[file1#txt]

 

 

四、链接SQLServer服务器:

 

1、使用ODBC的MicrosoftOLEDB提供程序

 

EXECsp_addlinkedserver'别名','','MSDASQL',NULL,NULL,'DRIVER={SQL

 

Server};SERVER=远程名;UID=用户;PWD=密码;'

 

如果加上参数@catalog,可以指定数据库

 

execsp_addlinkedsrvlogin @rmtsrvname='别名

 

 

',@useself='false',@locallogin='sa',@rmtuser='sa',@rmtpassword='密码'

 

 

2、使用SQLServer的MicrosoftOLEDB提供程序

 

 

execsp_addlinkedserver@server='别名

 

',@provider='sqloledb',@srvproduct='',@datasrc='远程服务器名'

 

execsp_addlinkedsrvlogin 

 

 

@rmtsrvname='wzb',@useself='false',@locallogin='sa',@rmtuser='sa',@rmtp

 

assword='密码'

 

然后你就可以如下:

 

select*from别名.库名.dbo.表名

 

insert库名.dbo.表名select*from别名.库名.dbo.表名

 

select*into库名.dbo.新表名from别名.库名.dbo.表名

 

go

 

 

例1、

 

此示例在SQLServer的实例上创建一台名为S1_instance1的链接服务器,

 

该服务器使用SQLServer的MicrosoftOLEDB提供程序。

 

 

EXEC   sp_addlinkedserver   @server='S1_instance1',@srvproduct='',

 

                               @provider='SQLOLEDB',

 

 

@datasrc='S1/instance1'

 

例2、

 

--建立链接服务器

 

EXECsp_addlinkedserver'xiaoming','','MSDASQL',NULL,NULL,'DRIVER={SQL

 

 

Server};SERVER=192.168.0.1;UID=sa;PWD=123;'

 

--建立链接服务器登录映射

 

execsp_addlinkedsrvlogin 

 

 

@rmtsrvname='xiaoming',@useself='false',@locallogin='sa',@rmtuser='sa',

 

@rmtpassword='123'

 

go

 

--查询数据

 

select*fromxiaoming.schooladmin.dbo.agent 

 

 

--删除链接服务器登录映射和链接服务器:

 

execsp_droplinkedsrvlogin'xiaoming','sa'

 

execsp_dropserver 'xiaoming'

 

 

 

注意事项:

 

 

SETIDENTITY_INSERT[database.[owner.]]{table}{ON|OFF}

 

所以不能通过连接服务器设置此属性

 

into也存在这样的问题

 

select *into  xiaoming.northwind.dbo.ttfrom

 

 

xiaoming.northwind.dbo.tt

 

五、设置链接服务器以访问Access数据库

 

使用用于Jet的MicrosoftOLEDB提供程序

 

此示例创建一台名为test的链接服务器。

 

 

说明 本示例假设已经安装MicrosoftAccess和示例Northwind数据库,且

 

Northwind数据库驻留在C:/。

 

 

USEmaster

 

GO

 

--Tousenamedparameters:

 

EXECsp_addlinkedserver

 

  @server='test',

 

  @provider='Microsoft.Jet.OLEDB.4.0',

 

  @srvproduct='OLEDBProviderforJet',

 

  @datasrc='C:/Northwind.mdb'

 

GO

 

--ORtousenonamedparameters:

 

USEmaster

 

GO

 

EXECsp_addlinkedserver

 

  'test',

 

  'OLEDBProviderforJet',

 

  'Microsoft.Jet.OLEDB.4.0',

 

  'C:/Northwind.mdb'

 

GO

 

使用

 

select*fromtest...表名

 

 

六、连接SYBASE

 

--首先,你要在SQL服务器上装上访问sybase的客户端

 

 

--创建链接服务器

 

execsp_addlinkedserver'Sybase1','','MSDASQL',NULL,NULL

 

 ,'Driver={SybaseSystem

 

 

11};Database=hisdb;Srvr=10.211.135.12;UID=sa;PWD=1111;'

 

使用:

 

select*fromSybase1.hisdb.dbo.table1

 

 

方法二

 

使用ODBC

 

SQLServer到SYBASE连接服务器的实现

 

 

 

作者: CCBZZP

 

 

 

本文的测试环境为:

 

操作系统: WINDOWS2000SERVER(繁体系统)

 

安装数据库:SQLSERVER2000(英文版)和SYBASE8.0客户端(英文版)

 

 

 

 

具体实现步骤:

 

1.要求pc机上安装SYBASE8.0客户端软件和sqlserver2000软件。

 

2.配置windows的ODBC数据源:

 

开始菜单—》程式集—》系统管理工具—》资料数据源(ODBC)—》进入配置用

 

 

户DSN或者系统DSN均可以:添加—》选择ADAPTIVESERVERANYWHERE8.0—》自定

 

义数据源名称(随意如:SYBASETEST)—》数据库名称(必选!)—》OK完成。

 

3.选择刚才配置的数据源名称,再选择配置,跳出SYBASETESTMESSAGES:

 

Thedatasourceisnotconnected. Connectingtothedatasourcewill

 

provideusefulinformationduringconfiguration. Wouldyouliketo

 

connecttothedatasource?

 

选择YES(OK或确认)即可

 

进入CONNECTTOSYBASE DATABASE画面:

 

USERID:输入SYBASEDATABASE的用户

 

PASSWORD:输入SYBASEDATABASE的用户的密码

 

CONNECTION MODE:可以选择默认的SHARE模式

 

选择OK(确认)即可!

 

配置和测试ODBC完成!

 

 

4.配置sqlserver2000中的连接服务器:

 

企业管理器—》安全性—》连接服务器—》右键新建连接服务器—》定义连接名

 

 

称;选其他数据源;指定程序名称为:SYBASEADAPTIVESERVERANYWHERE

 

PROVIDER8.0;产品名称可不填;数据源指定刚才ODBC中定义好的数据源名称;

 

提供程序字符串按以下格式填写:UserID=username;Password=userpasswd(或者

 

按如下格式:UID=username;PWD=userpasswd),这里的用户名和密码对应所要连

 

接的SYBASE数据库中的用户名和密码—》安全性标签页里:设置用此安全上下

 

文进行,并录入SYBASE的数据库用户名和密码—》服务器选项标签页可默认—》

 

确定。

 

5.准备工作全部完成!在sqlserver企业管理器—》安全性—》连接服务器打开刚

 

 

建好的连接服务器—》点击表,即可在右边窗口看到该SYBASE数据库用户拥有的

 

的所有表名,但在这里还并不能查看表的记录,这个需要在sqserver的查询分析

 

器中用具体sql实现!访问表时,使用格式为:[连接服务器名]..[SYBASE用户

 

].[表名]。更详细具体的使用这里不再赘述。

原创粉丝点击