SQL Server的链接服务器技术小结
一、使用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='mysql的用户名',@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',@rmtpassword='密码'
然后你就可以如下:
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用户
].[表名]。更详细具体的使用这里不再赘述。