SQL Server的链接服务器技术小结

一、使用 Microsoft OLE DB Provider For ODBC 链接MySQL

安装MySQL的ODBC驱动MyODBC

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

myDSN

2、建立链接数据库

EXEC sp_addlinkedserver @server = 'MySQLTest', @srvproduct='MySQL', 

@provider = 'MSDASQL', @datasrc = 'myDSN'
GO
EXEC sp_addlinkedsrvlogin
@rmtsrvname='MySqlTest',@useself='false',@locallogin='sa',@rmtuser='mysql的用户名',@rmtpassword='mysql的密码'

3、查询数据

SELECT * FROM OPENQUERY (MySQLTest ,'select * from 表' )

下面这个不行:
SELECT * FROM OPENQUERY (MySQLTest ,'表' )

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

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

二、使用 Microsoft OLE DB Provider For ORACLE 链接ORACLE

1、建立链接数据库

sp_addlinkedserver '别名', 'Oracle', 'MSDAORA', '服务名'
GO
EXEC sp_addlinkedsrvlogin @rmtsrvname='别名',@useself='false',@locallogin='sa',@rmtuser='oracle用户名',@rmtpassword='密码'

2、查询数据

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

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

3、执行存储过程

使用OPENQUERY:
SELECT *
FROM OPENQUERY(别名, 'exec 用户名.存储过程名')

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

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

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

的表,请执行 sp_addlinkedserver,如下例所示。
提供程序是 Microsoft.Jet.OLEDB.4.0,提供程序字符串为"Text"。数据源是包

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

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

请参见 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, NULL, Admin, NULL
GO

--List the tables in the linked server.
EXEC sp_tables_ex txtsrv
GO

--Query one of the tables: file1#txt
--using a 4-part name.
SELECT *
FROM txtsrv...[file1#txt]

四、链接SQL Server服务器:

1、使用 ODBC 的 Microsoft OLE DB 提供程序

EXEC sp_addlinkedserver '别名','','MSDASQL',NULL,NULL,'DRIVER={SQL

Server};SERVER=远程名;UID=用户;PWD=密码;'
如果加上参数@catalog,可以指定数据库
exec sp_addlinkedsrvlogin  @rmtsrvname='别名',@useself='false',@locallogin='sa',@rmtuser='sa',@rmtpassword='密码'

2、使用SQL Server 的 Microsoft OLE DB 提供程序

exec sp_addlinkedserver @server='别名',@provider='sqloledb',@srvproduct='',@datasrc='远程服务器名'
exec sp_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、

此示例在 SQL Server 的实例上创建一台名为 S1_instance1 的链接服务器,
该服务器使用 SQL Server 的 Microsoft OLE DB 提供程序。

EXEC    sp_addlinkedserver    @server='S1_instance1', @srvproduct='',
                                @provider='SQLOLEDB', @datasrc='S1/instance1'

例2、

--建立链接服务器

EXEC sp_addlinkedserver 'xiaoming','','MSDASQL',NULL,NULL,'DRIVER={SQL

Server};SERVER=192.168.0.1;UID=sa;PWD=123;'
--建立链接服务器登录映射
exec sp_addlinkedsrvlogin 
@rmtsrvname='xiaoming',@useself='false',@locallogin='sa',@rmtuser='sa',
@rmtpassword='123'
go
--查询数据
select * from xiaoming.schooladmin.dbo.agent

--删除链接服务器登录映射和链接服务器:
exec sp_droplinkedsrvlogin 'xiaoming' ,'sa'
exec sp_dropserver  'xiaoming'

注意事项:

SET IDENTITY_INSERT [ database.[ owner.] ] { table } { ON | OFF }
所以不能通过连接服务器设置此属性
into 也存在这样的问题
select  * into   xiaoming.northwind.dbo.tt from

xiaoming.northwind.dbo.tt

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

使用用于 Jet 的 Microsoft OLE DB 提供程序
此示例创建一台名为 test的链接服务器。

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

Northwind 数据库驻留在 C:/。

USE master
GO
-- To use named parameters:
EXEC sp_addlinkedserver
   @server = 'test',
   @provider = 'Microsoft.Jet.OLEDB.4.0',
   @srvproduct = 'OLE DB Provider for Jet',
   @datasrc = 'C:/Northwind.mdb'
GO
-- OR to use no named parameters:
USE master
GO
EXEC sp_addlinkedserver
   'test',
   'OLE DB Provider for Jet',
   'Microsoft.Jet.OLEDB.4.0',
   'C:/Northwind.mdb'
GO
使用
select * from test...表名

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

--创建链接服务器
exec sp_addlinkedserver 'Sybase1', ' ', 'MSDASQL', NULL, NULL
 ,'Driver={Sybase System

11};Database=hisdb;Srvr=10.211.135.12;UID=sa;PWD=1111;'
使用:
select * from Sybase1.hisdb.dbo.table1

方法二
使用ODBC
SQL Server到SYBASE连接服务器的实现
 
作者:  CCBZZP

本文的测试环境为:
操作系统:  WINDOWS2000 SERVER (繁体系统)
安装数据库: SQLSERVER2000(英文版)和SYBASE8.0客户端(英文版)

具体实现步骤:
1.要求pc机上安装SYBASE8.0客户端软件和sqlserver2000软件。
2.配置windows的ODBC数据源:
开始菜单—》程式集—》系统管理工具—》资料数据源(ODBC)—》进入配置用

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

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

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

The data source is not connected.  Connecting to the data source will

provide useful information during configuration.  Would you like to

connect to the data source?

选择YES(OK或确认)即可

进入CONNECT TO SYBASE  DATABASE画面:

USER ID: 输入SYBASE DATABASE的用户

PASSWORD: 输入SYBASE DATABASE的用户的密码

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

选择OK(确认)即可!

配置和测试ODBC完成!

4.配置sqlserver2000中的连接服务器:
企业管理器—》安全性—》连接服务器—》右键新建连接服务器—》定义连接名

称; 选其他数据源; 指定程序名称为:SYBASE ADAPTIVE SERVER ANYWHERE

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

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

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

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

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

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

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

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

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

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

(0)

相关推荐

  • SQL Server创建链接服务器的存储过程示例分享

    创建链接服务器.链接服务器让用户可以对 OLE DB 数据源进行分布式异类查询.在使用 sp_addlinkedserver 创建链接 服务器后,可对该服务器运行分布式查询.如果链接服务器定义为 SQL Server 实例,则可执行远程存储过程. http://msdn.microsoft.com/zh-cn/library/ms190479(SQL.90).aspx EXECUTE sp_addlinkedserver @server='DB1', @srvproduct='',@provid

  • SqlDataSource 链接Access 数据

    还的我耗费了好长时间,研究如何用AccessDataSource链接有密码的access数据库,也没有成功. <appSettings/> <connectionStrings> <add name="ConnectionString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\good.mdb;Persist Security I

  • 详解SQL Server数据库链接查询的方式

    SQL Server数据库链接查询的方式的相关知识是本文我们主要要介绍的内容,我们知道,通过连接运算符可以实现多个表查询.连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志.多表连接查询是使用Sql的基本操作,但连接的方式却有多种,熟练使用这些连接方式能够简化Sql语句,提高数据库运行效率. 在关系数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放在一个表中.当检索数据时,通过连接操作查询出存放在多个表中的不同实体的信息.连接操作给用户带来很

  • Sql Server下数据库链接的使用方法

    有时候我们希望在一个sqlserver下访问另一个sqlserver数据库上的数据,或者访问其他oracle数据库上的数据,要想完成这些操作,我们首要的是创建数据库链接. 数据库链接能够让本地的一个sqlserver登录用户映射到远程的一个数据库服务器上,并且像操作本地数据库一样.那么怎么创建数据库链接呢?我现在有两种方法可以实现. 第一种:在 sqlserver 企业管理器中,建立,这个比较简单的,首先在 安全性--〉数据库链接 上点右键 ,在出现的菜单中点 新建数据库链接 ,然后会弹出一个界

  • 关于MySql链接url参数的设置

    最近整理了一下网上关于MySql 链接url 参数的设置,有不正确的地方希望大家多多指教: mysql JDBC URL格式如下: jdbc:mysql://[host:port],[host:port].../[database][?参数名1][=参数值1][&参数名2][=参数值2]... 常用的几个较为重要的参数: 参数名称 参数说明 缺省值 最低版本要求 user 数据库用户名(用于连接数据库) 所有版本 passWord 用户密码(用于连接数据库) 所有版本 useUnicode 是否

  • SqlServer2005 链接服务器用法

    查询资料后知道有 sp_addlinkedserver 这个系统存储过程,可通过ODBC连接MySql,于是下载ODBC驱动,这个可通过MySql官网得到,地址:http://dev.mysql.com/downloads/. 安装驱动后配置数据源,这里注意,要用系统数据源,我在用户数据源中配置后数据源能连上MySql,但无法能过SqlServer连接,报错:Data source name not found and no default driver specified,为这折腾了半小时..

  • C#访问SqlServer设置链接超时的方法

    本文实例讲述了C#访问SqlServer设置链接超时的方法.分享给大家供大家参考.具体实现方法如下: 下面这段代码设置超时时间为60秒,默认为30秒 using (connection) { SqlCommand sqlcommand = connection.CreateCommand(); sqlcommand.CommandTimeout = 60; //默认时间为 30 秒 sqlcommand.CommandText = sqlText; ... 希望本文所述对大家的C#程序设计有所帮

  • sqlserver 多库查询 sp_addlinkedserver使用方法(添加链接服务器)

    Exec sp_droplinkedsrvlogin ZYB,Null --删除映射(录与链接服务器上远程登录之间的映射) Exec sp_dropserver ZYB --删除远程服务器链接 EXEC sp_addlinkedserver @server='ZYB',--被访问的服务器别名 @srvproduct='', @provider='SQLOLEDB', @datasrc="/Server2" --要访问的服务器 EXEC sp_addlinkedsrvlogin 'ZYB

  • 通过创建SQLServer 2005到 Oracle10g 的链接服务器实现异构数据库数据转换方案

    1.新建链接服务器  在图1中选中"链接服务器",右键选择"新建链接服务器",如图2,配置相关参数. 2.配置相关参数 在"常规"选项中,填写"链接服务器名称",访问接口选中 " Microsoft OLE DB Provider for Oracle"项.其中产品名称.数据源.访问接口字符串请填写配置的Oracle客户端在本地配置的net服务名.如图3所示. 在"安全性"项中,选中使用

  • 简单实用SQL脚本Part SQLServer 2005 链接服务器

    适用场景:对远程的DB进行操作. 2000与2005对比:在SQL Server 2000版本中也有链接远程DB的SQL,但是功能比较弱,扩展性差,支持的查询比较简单.而SQL Server 2005版本的SSMS中已经有了 服务器对象->链接服务器 的功能点,用户首先创建一个远程DB的链接对象,之后就可以像本地表一样执行表的DML了. 创建步骤:在SQL Server 2005版本打开SSMS,服务器对象->链接服务器->右击 新建链接服务器,在图2中是一种设置方式,也有其它的设置方式

  • SQL Server高级内容之子查询和表链接概述及使用

    1.子查询概念 (1)就是在查询的where子句中的判断依据是另一个查询的结果,如此就构成了一个外部的查询和一个内部的查询,这个内部的查询就是自查询. (2)自查询的分类 1)独立子查询 ->独立单值(标量)子查询(=) 复制代码 代码如下: Select testID,stuID,testBase,testBeyond,testPro from Score where stuID=( select stuID from Student where stuName='Kencery' ) ->

随机推荐