SQL SERVER 创建链接服务器 SP_addlinkedserver

本文介绍如何使用 SQL Server 的 sp_addlinkedserver 存储过程来创建与 SQL Server、Oracle、Access 和 Excel 之间的链接服务器。通过具体示例展示了不同数据源的配置方法,包括设置认证方式及查询示例。

SP_addlinkedserver 小结 (oracle,sql server,access,excel)

   

/////////////////////////////SQL SERVER////////////////////////////

Exec sp_droplinkedsrvlogin DBVIP,Null

Exec sp_dropserver DBVIP

EXEC sp_addlinkedserver

      @server='DBVIP',--被访问的服务器别名

      @srvproduct='',

      @provider='SQLOLEDB',

      @datasrc='Server2'   --要访问的服务器

 

EXEC sp_addlinkedsrvlogin

     'DBVIP', --被访问的服务器别名

     'false',

     NULL,

     'sa', --帐号

     'thankyoubobby' --密码

 

Select   *   from DBVIP.pubs.dbo.orders  

 

/////////////////////////////ORACLE////////////////////////////

需要SQL SERVER服务器中安装ORACLE客户端;

Exec sp_droplinkedsrvlogin demo,Null

Exec sp_dropserver demo

go

EXEC sp_addlinkedserver

        @server ='demo', --要创建的链接服务器别名

        @srvproduct='Oracle', --产品名称    

 @provider='MSDAORA', --OLE DB 字符

 @datasrc='ServiceName'   --数据源 oracle"ora92"network"admin"tnsnames.ora 查看

 

EXEC sp_addlinkedsrvlogin

     'demo', --已建立的链接服务器名

     'false', -- 固定 */

     NULL, --为每个登陆SQL SERVER的用户使用此链接服务器,否则写用户名 */

     'userid', --帐号

     'password' –密码

go

 

SELECT * FROM demo.. USERID.TABLE

--注意用大写,因为在Oracle的数据字典中为大写

数据库的格式必须是链接服务器名..ORACLE用户名.表名.

 

SELECT * FROM OPENQUERY(demo ,'select * from tbdemo' )

UPDATE OPENQUERY (demo, 'SELECT id FROM tbdemo WHERE id = 101')

SET name = 'hello';

INSERT OPENQUERY (demo, 'SELECT id FROM tbdemo')

VALUES ('hello');

DELETE OPENQUERY (demo, 'SELECT id FROM tbdemo WHERE name = ''hello''');

如此则在SQL SERVER中就可以访问ORACLE的数据了。

建立的链接服务器可以在企业管理器中看见.

 

/////////////////////////////ACCESS////////////////////////////

--建立连接服务器

EXEC sp_addlinkedserver

'ai',             --要创建的链接服务器名称 

‘access',     --产品名称   

'Microsoft.Jet.OLEDB.4.0', --OLE DB 字符

'd:"testdb"db.mdb' --数据源 -- 盘符:"路径"文件名 -- ""网络名"共享名"文件名 (网络版本)

GO

 

--创建链接服务器上远程登录之间的映射

--链接服务器默认设置为用登陆的上下文进行

--现在我们修改为连接链接服务器不需使用任何登录或密码

exec sp_addlinkedsrvlogin 'ai','false'

go

 

select * from ai...mytable

 

/////////////////////////////EXCEL////////////////////////////

--建立连接服务器

EXEC sp_addlinkedserver

'ai_ex',            --要创建的链接服务器名称 

'ex',     --产品名称        

'Microsoft.Jet.OLEDB.4.0', --OLE DB 字符

'd:"testdb"mybook.xls' , --数据源 -- 盘符:"路径"文件名-- ""网络名"共享名"文件名 (网络版本)

null,

'Excel 5.0' --OLE DB 提供程序特定的连接字符串

GO

 

----创建链接服务器上远程登录之间的映射

--链接服务器默认设置为用登陆的上下文进行

--现在我们修改为连接链接服务器不需使用任何登录或密码

exec sp_addlinkedsrvlogin 'ai_ex','false'

go

 

--查询数据

select * from ai_ex...sheet3$

 

/////////////////////////////MS SQL////////////////////////////

--建立连接服务器

EXEC sp_addlinkedserver

'ai_mssql',        --要创建的链接服务器名称      

'ms',     --产品名称 

'SQLOLEDB', --OLE DB 字符

'218.204.111.111,3342' --数据源

GO

 

--创建链接服务器上远程登录之间的映射

EXEC sp_addlinkedsrvlogin

'ai_mssql',

'false',

NULL,

'zhangzhe', --远程服务器的登陆用户名

'fish2231' --远程服务器的登陆密码

go

 

--查询数据

select * from ai_mssql.pubs.dbo.jobs

 

--还有一个更简单的办法

--这种方式在链接服务器建立后,它是默认开放RPC的

--建立连接服务器

EXEC sp_addlinkedserver

'218.204.111.111,3342', --要创建的链接服务器名称

'SQL Server' --这里就用数据源作名称

GO

 

--创建链接服务器上远程登录之间的映射

EXEC sp_addlinkedsrvlogin

'218.204.111.111,3342',

'false',

NULL,

'zhangzhe', --远程服务器的登陆用户名

'fish2231' --远程服务器的登陆密码

go

 

--查询数据

select * from [218.204.253.131,3342].pubs.dbo.jobs

go

SQL Server 创建连接服务器链接服务器)有以下几种方法: ### 使用 SQL Server Management Studio 图形界面创建 1. 打开 Microsoft SQL Server Management Studio。 2. 打开服务器对象 -> 右键链接服务器 -> 点击新建链接服务器。 3. 在常规选项卡中,输入一个自定义的别名,在数据源选项输入需要链接的数据库地址和端口号。 4. 在安全性选项卡中,选择(使用此安全上下文建立连接)然后输入链接数据库的登录账号和密码。 5. 在服务器选项中设置自己需要的,点击确定。 6. 进行测试 [^3]。 ### 使用 SQL 语句创建 #### 示例 1:在当前数据库(假设为 follow_up)中创建一个链接服务器的连接 ```sql -- 创建链接服务器 EXEC sp_addlinkedserver @server = 'CloudantDBServer', -- 连接服务器的名称(自定义) @srvproduct = '', -- 产品名称,可以为空 @provider = 'MSDASQL', -- 提供程序,通常使用 SQL Native Client @datasrc = 'CloudantDB_v3'; -- 本机数据库的数据源名称(数据库名) -- 创建登录映射 EXEC sp_addlinkedsrvlogin @rmtsrvname = 'CloudantDBServer', -- 引用要链接服务器名称,同上,名称需要一样 @useself = 'false', @locallogin = null, -- 本地 SQL Server 登录用户名 @rmtuser = 'CloudantDB_username', -- 被链接数据库的用户名 @rmtpassword = 'CloudantDB_password'; -- 被链接数据库的密码 ``` [^1] #### 示例 2:创建 MySQL 链接服务器 ```sql -- 创建链接服务器 EXEC sp_addlinkedserver @server = 'MySQL_Linked', @srvproduct = 'MySQL', @provider = 'MSDASQL', @datasrc = 'MySQL_DSN'; -- ODBC 数据源名称 -- 验证链接服务器 -- 查询远程表 SELECT * FROM RemoteSQL.AdventureWorks2019.dbo.Employees; -- 执行远程存储过程 EXEC RemoteSQL.master.dbo.sp_helpdb; ``` [^2] #### 示例 3: ```sql -- 创建链接服务器 EXEC master.dbo.sp_addlinkedserver @server = N'TEST', @srvproduct=N'TEST', @provider=N'SQLNCLI', @datasrc=N'127.147.157.17,1433' -- 创建登录映射 /* For security reasons the linked server remote logins password is changed with ######## */ EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'TEST', @useself=N'False', @locallogin=NULL, @rmtuser=N'sa', @rmtpassword='########' ``` [^3] ### 针对 Oracle 数据库创建链接服务器的特殊步骤 安装完成之后,会出现 OraOLEDB.Oracle 这个访问接口,接口的属性里有一些设置选项,酌情勾选,建议勾选“允许进程内”。在系统环境变量中,为 Path 添加“C:\oracleOLEDB;C:\oracleOLEDB\bin;”(计算机属性 - 高级系统设置 - 高级 - 环境变量 - 系统环境变量 - Path),如果之前安装过 instant client,需要删除其路径,否则在 SQL Server 管理工具创建链接服务器时会卡死。如果是供外部应用程序访问,还需要配置 TNS_ADMIN 和 NLS_LANG 环境变量。由于 OLEDB 驱动支持 EZCONNECT,所以不配置 tnsnames.ora 也是可以的,使用 IP:端口号/实例名即可创建链接服务器 [^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值