2023年11月23日发(作者:)

链接服务器使⽤⽅法

使⽤sql语句:

exec sp_addlinkedserver @server='serverontest',@provider='sqloledb',@srvproduct='',@datasrc='101.123.10.112'

添加⼀个链接服务器

使⽤sql语句:

EXEC sp_addlinkedsrvlogin @rmtsrvname = 'serverontest', @useself = 'false', @locallogin = 'sa', @rmtuser = 'sa', @rmtpassword = 'passwordofsa'

添加登录⽅式

以上两个语句中,@server为服务器的别名,@datasrc为要链接的⽬标数据库的连接串,@rmtsrvname为别名,@locallogin为本地登录的⽤户名,@rmtuser

@rmtpassword为要链接的⽬标数据库的登录⽤户名和密码

添加完链接服务器之后,可以通过select * from _logins select * from s来查看已经添加的链接服务器和登录⾓⾊

添加完链接服务器后,使⽤select * from 别名.库名.dbo.表名 来对其中的数据进⾏查询

删除链接服务器登录映射和链接服务器的⽅法:

exec sp_droplinkedsrvlogin ’serverontest’ ,’sa’

exec sp_dropserver ’serverontest’

上⽂仅仅是添加到sqlserver的链接服务器的⽅法,关于添加到其它数据库的链接服务器的⽅法,参见:

⼀、使⽤ Microsoft OLE DB Provider For ODBC 链接MySQL 安装MySQLODBC驱动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,如下例所⽰。

提供程序是 .4.0,提供程序字符串为"Text"。数据源是包含⽂本⽂件的⽬录的完整路径名称。 ⽂件(描述⽂本⽂件的结构)

须与此⽂本⽂件存在于相同的⽬录中。有关创建 ⽂件的更多信息,请参见 Jet 数据库引擎⽂档。

--Create a linked server.

EXEC sp_addlinkedserver txtsrv, ’Jet 4.0’,

’.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 [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

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

exec sp_droplinkedsrvlogin ’xiaoming’ ,’sa’

exec sp_dropserver ’xiaoming’

注意事项:

SET IDENTITY_INSERT [ database.[ owner.] ] { table } { ON | OFF }

所以不能通过连接服务器设置此属性into也存在这样的问题

select * into from

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

使⽤⽤于 Jet Microsoft OLE DB 提供程序,此⽰例创建⼀台名为 test的链接服务器。

说明 本⽰例假设已经安装 Microsoft Access 和⽰例 Northwind 数据库,且Northwind 数据库驻留在 C:/

USE master

GO

-- To use named parameters:

EXEC sp_addlinkedserver

@server = ’test’,

@provider = ’.4.0’,

@srvproduct = ’OLE DB Provider for Jet’,

@datasrc = ’C:/

GO

-- OR to use no named parameters:

USE master

GO

EXEC sp_addlinkedserver

’test’,

’OLE DB Provider for Jet’,

’.4.0’,

’C:/

GO

使⽤

select * 表名

六、连接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 1

⽅法⼆

使⽤ODBC SQL ServerSYBASE连接服务器的实现

本⽂的测试环境为:

操作系统: WINDOWS2000 SERVER (繁体系统)

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

具体实现步骤:

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

2.配置windowsODBC数据源:

开始菜单》程式集》系统管理⼯具》资料数据源(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⽤户].[

]