SQL SERVER2005建Link Server

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介: 转自http://allanpie.blog.163.com/blog/static/2132041020091902648766/ SQL SERVER2005建Link Server   SQL Server2005中的link serv...

转自http://allanpie.blog.163.com/blog/static/2132041020091902648766/

SQL SERVER2005建Link Server

 


SQL Server2005中的link server类似于Oracle里面的DB Link , 透过link server可以访问另一个数据库中的对象 , 这些Link Server可以是SQL Server , 也可以是Oracle等其他类型的数据库, 建好Link Server后就可以象操作当前数据库一样操作其他数据库了,建立的过程非常简单 , 只需要执行几个系统存储过程并传入适当的参数就可以了 。

第一个要执行的存储过程格式如下 :
sp_addlinkedserver [ @server= ] 'server' [ , [ @srvproduct= ] 'product_name' ] 
     [ , [ @provider= ] 'provider_name' ] [ , [ @datasrc= ] 'data_source' ]
     [ , [ @location= ] 'location' ] [ , [ @provstr= ] 'provider_string' ]
[ , [ @catalog= ] 'catalog' ]

[ @server = ] ' server '

要创建的链接服务器的名称。server 的数据类型为 sysname,没有默认值。

[ @srvproduct = ] ' product_name '

要添加为链接服务器的 OLE DB 数据源的产品名称。product_name 的数据类型为 nvarchar(128),默认值为 NULL。如果为 SQL Server,则不必指定 provider_namedata_sourcelocationprovider_stringcatalog

[ @provider = ] ' provider_name '

与此数据源对应的 OLE DB 访问接口的唯一编程标识符 (PROGID)。对于当前计算机中安装的指定 OLE DB 访问接口,provider_name 必须唯一。provider_name 的数据类型为 nvarchar(128),默认值为 NULL;但如果忽略 provider_name,则使用 SQLNCLI。(使用 SQLNCLI 并且 SQL Server 将重定向到 SQL Server Native Client OLE DB 访问接口的最新版本。)OLE DB 访问接口应以指定的 PROGID 在注册表中注册。

[ @datasrc = ] ' data_source '

由 OLE DB 访问接口解释的数据源的名称。data_source 的数据类型为 nvarchar(4000)data_source 作为 DBPROP_INIT_DATASOURCE 属性传递以初始化 OLE DB 访问接口。

[ @location = ] ' location '

由 OLE DB 访问接口解释的数据库的位置。location 的数据类型为 nvarchar(4000),默认值为 NULL。location 作为 DBPROP_INIT_LOCATION 属性传递以初始化 OLE DB 访问接口。

[ @provstr = ] ' provider_string '

OLE DB 访问接口特定的连接字符串,它可标识唯一的数据源。provider_string 的数据类型为 nvarchar(4000),默认值为 NULL。provstr 或传递给 IDataInitialize 或设置为 DBPROP_INIT_PROVIDERSTRING 属性以初始化 OLE DB 访问接口。

当针对 SQL Server Native Client OLE DB 访问接口创建链接服务器时,可以使用 SERVER 关键字来指定实例,即使用 SERVER=servername\instancename 指定特定 SQL Server 实例。servername 是运行 SQL Server 的计算机的名称,instancename 是用户要连接的特定 SQL Server 实例的名称。




比如我Local端有一个SQL Server  ,里面有两个数据库 LocalTest和MyDataBase , 我想在LocalTest里面访问MyDataBase里面的一个表TableTest1  , 建立过程如下 :

1 。 打开SQL Server2005集成开发环境 , 连接到要建立Link Server的数据主机 , 然后新建一个查询 ,在查询窗口中输入如下的代码 :
EXEC master.dbo.sp_addlinkedserver
@server = N'LINK_LOCAL',
@srvproduct=N'',
@provider = N'SQLNCLI',
@datasrc = N'(Local)'
注意 :每个参数在赋值的时候都在前面加多一个N表示后面的值当作Unicode来处理
说明如下 :
     @server :link的名字,建好Link后其他数据库就可以通过这个名字来访问
     @srvproduct :为空 ,参数占位符
     @provider :驱动代码
     @datasrc :数据库服务器 , 因为是本机端的 , 所以用(Local)

第二 :建立好这个Link之后还需要给给这个link加登陆的账号密码 , 因为从外部访问这个Link server的时候需要先登陆  , 存储过程如下 :
EXEC sp_addlinkedsrvlogin 'LINK_LOCAL', 'false', null, 'account', 'password'
说明 :第一个参数的值是上面建立的link的名称 , 最后两个参数参数分别为账号密码  , 执行后可以在继承开发环境中看到新建的这个link server ,  如下图 :
                SQL SERVER2005建Link Server(原创) - allan - 我的博客


第三  : 建立好后还可以给这个LInk server加一些权限 :
如 : EXEC sp_serveroption ‘REMOTE_SERVER_NAME’, ‘data access’, ‘true’


第四 :然后我们就可以在任何需要的地方访问这个LInk server了 , 如 :
select * from LINK_Local.MyDataBase.dbo.TableTest1




附 :通过 OLE DB 访问数据源而建立链接服务器的方法

SQL SERVER2005建Link Server(原创) - allan - 我的博客


连接不同数据库实例如下 :


A.  下例使用 SQL Server Native Client OLE DB 访问接口在 SQL Server 实例中创建链接服务器

EXEC sp_addlinkedserver   
@server='S1_instance1',
@srvproduct='',
@provider='SQLNCLI',
@datasrc='S1\instance1'


B. 使用 Microsoft OLE DB Provider for Microsoft Access

EXEC sp_addlinkedserver 
@server = 'SEATTLE Mktg',
@provider = 'Microsoft.Jet.OLEDB.4.0',
@srvproduct = 'OLE DB Provider for Jet',
@datasrc = 'C:\MSOffice\Access\Samples\Northwind.mdb'


C. 使用 Microsoft OLE DB Provider for Oracle

EXEC sp_addlinkedserver
@server = 'LONDON Mktg',
@srvproduct = 'Oracle',
@provider = 'MSDAORA',
@datasrc = 'MyServer'


D. 将 Microsoft OLE DB Provider for ODBC 与 data_source 参数一起使用

EXEC sp_addlinkedserver 
@server = 'SEATTLE Payroll',
@srvproduct = '',
@provider = 'MSDASQL',
@datasrc = 'LocalServer'

E. 将 Microsoft OLE DB Provider 用于 Excel 电子表格

EXEC sp_addlinkedserver 'ExcelSource',
'Jet 4.0',
'Microsoft.Jet.OLEDB.4.0',
'c:\MyData\DistExcl.xls',
NULL,
'Excel 5.0'

H. 使用 Microsoft OLE DB Provider for 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, 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 four-part name.
SELECT *


I. 使用 Microsoft OLE DB Provider for DB2


EXEC sp_addlinkedserver
@server='DB2',
@srvproduct='Microsoft OLE DB Provider for DB2',
@catalog='DB2',
@provider='DB2OLEDB',
@provstr='Initial Catalog=PUBS;
Data Source=DB2;
HostCCSID=1252;
Network Address=XYZ;
Network Port=50000;
Package Collection=admin;

参考文章 :http://msdn.microsoft.com/zh-cn/vstudio/ms190479.aspx
Default Schema=admin;'

 


相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
2月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
4月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
111 13
|
4月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
|
4月前
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
60 6
|
4月前
|
存储 SQL C++
对比 SQL Server中的VARCHAR(max) 与VARCHAR(n) 数据类型
【7月更文挑战7天】SQL Server 中的 VARCHAR(max) vs VARCHAR(n): - VARCHAR(n) 存储最多 n 个字符(1-8000),适合短文本。 - VARCHAR(max) 可存储约 21 亿个字符,适合大量文本。 - VARCHAR(n) 在处理小数据时性能更好,空间固定。 - VARCHAR(max) 对于大文本更合适,但可能影响性能。 - 选择取决于数据长度预期和业务需求。
371 1
|
3月前
|
SQL 安全 Java
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
467 0
|
4月前
|
SQL Oracle 关系型数据库
MySQL、SQL Server和Oracle数据库安装部署教程
数据库的安装部署教程因不同的数据库管理系统(DBMS)而异,以下将以MySQL、SQL Server和Oracle为例,分别概述其安装部署的基本步骤。请注意,由于软件版本和操作系统的不同,具体步骤可能会有所变化。
304 3
|
4月前
|
SQL 存储 安全
数据库数据恢复—SQL Server数据库出现逻辑错误的数据恢复案例
SQL Server数据库数据恢复环境: 某品牌服务器存储中有两组raid5磁盘阵列。操作系统层面跑着SQL Server数据库,SQL Server数据库存放在D盘分区中。 SQL Server数据库故障: 存放SQL Server数据库的D盘分区容量不足,管理员在E盘中生成了一个.ndf的文件并且将数据库路径指向E盘继续使用。数据库继续运行一段时间后出现故障并报错,连接失效,SqlServer数据库无法附加查询。管理员多次尝试恢复数据库数据但是没有成功。
|
4月前
|
SQL 存储 关系型数据库
关系型数据库SQL Server学习
【7月更文挑战第4天】
76 2
|
5月前
|
SQL 存储 测试技术