SqlServer建立网络链接服务器、同义词、跨库数据访问

一、背景

通常我们在进行开发时,多个项目间数据库服务器分离,但是各项目间又需要对其他项目的数据库表进行访问。这个时候我们希望能够在一个数据库查询中对其他服务器的数据表进行查询操作,这样可以减少相当多的工作量。

SQLServer提供的链接服务器功能很好的解决了我们的问题。我们可以在其中一个数据库中添加其他服务器数据库的链接,然后在数据库同义词中建立一个同义词(同义词可以是表、视图等等),然后对同义词进行直接访问。

二、建立网络链接服务器

1、首先点击数据库服务器对象-》链接服务器,右键选择“新建链接服务器”。

2、在常规Tab页面:输入链接服务器的名称,提供程序选择SQL Server Native Client 11.0,数据源输入你需要访问的数据库服务器地址。

 3、然后在安全性Tab页面:选择使用此安全上下文建立连接,输入你所要访问的数据库实例的登录用户名和密码。最后点击确定。

 4、测试链接。链接服务器添加完成之后,可以点击右键选择测试连接,查看连接是否成功。

 

三、同义词 

1、连接已建立好其他链接服务器的数据库服务器,选择要进行数据查询访问的数据库,进行同义词的新建。

2、打开新建同义词的窗体,如下图这里我要使用的查询为查询另一个数据库服务器某数据库的某张表。所以我这里输入的同义词名称为要访问的表的名称(可自定义),选择同义词架构为dbo(可以点开右边的省略号进行架构名称检查),服务器名称为我们上面建立好的链接服务器名称TEST,输入之后我们就可以下拉数据库名称选择该链接数据库服务器中的数据库(如果链接服务器连接失败,这里的数据库名称是显示不了数据的)。然后我们选择需要进行新建同义词的对象,对象为链接服务器选中数据库的视图、表、存储过程或者函数。选择对象类型之后,下方的对象名称即为你选择类型的对象;如你选择表,那么对象名称下拉列表即为TEST服务器中hram数据库的表列表。

3、 最后点击确定,即完成同义词的建立。我们可以在当前连接数据库中对同义词进行增删改查。

 四、SQL语句建立链接服务器、同义词

--建立同义词
USE [数据库名称]
GO

CREATE SYNONYM [dbo].[同义词名称] FOR [服务器名称/链接服务器名称][数据库名称].[dbo].[表名/视图/存储过程/函数的名称]
GO
--新建链接服务器
USE [master]
GO

EXEC master.dbo.sp_addlinkedserver @server = N'TEST', @srvproduct=N'', @provider=N'SQLNCLI11', @datasrc=N'链接服务器地址'

EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'TEST',@useself=N'False',@locallogin=NULL,@rmtuser=N'登录名',@rmtpassword='登录密码'

GO

EXEC master.dbo.sp_serveroption @server=N'TEST', @optname=N'collation compatible', @optvalue=N'false'
GO

EXEC master.dbo.sp_serveroption @server=N'TEST', @optname=N'data access', @optvalue=N'true'
GO

EXEC master.dbo.sp_serveroption @server=N'TEST', @optname=N'dist', @optvalue=N'false'
GO

EXEC master.dbo.sp_serveroption @server=N'TEST', @optname=N'pub', @optvalue=N'false'
GO

EXEC master.dbo.sp_serveroption @server=N'TEST', @optname=N'rpc', @optvalue=N'true'
GO

EXEC master.dbo.sp_serveroption @server=N'TEST', @optname=N'rpc out', @optvalue=N'true'
GO

EXEC master.dbo.sp_serveroption @server=N'TEST', @optname=N'sub', @optvalue=N'false'
GO

EXEC master.dbo.sp_serveroption @server=N'TEST', @optname=N'connect timeout', @optvalue=N'0'
GO

EXEC master.dbo.sp_serveroption @server=N'TEST', @optname=N'collation name', @optvalue=null
GO

EXEC master.dbo.sp_serveroption @server=N'TEST', @optname=N'lazy schema validation', @optvalue=N'false'
GO

EXEC master.dbo.sp_serveroption @server=N'TEST', @optname=N'query timeout', @optvalue=N'0'
GO

EXEC master.dbo.sp_serveroption @server=N'TEST', @optname=N'use remote collation', @optvalue=N'true'
GO

EXEC master.dbo.sp_serveroption @server=N'TEST', @optname=N'remote proc transaction promotion', @optvalue=N'true'
GO

 

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页