陋室铭
永远也不要停下学习的脚步(大道至简至易)

  1. 第一种方法:

    --单表查询

    select * from OPENDATASOURCE('SQLOLEDB','Data Source=远程实列名;User ID=sa;Password=密码').库名.dbo.表名

    --多表关联查询

     SELECT  A.*

     FROM    OPENROWSET('SQLOLEDB'

    , '远程实列名'

    ; 'sa'

    ; '密码',

    库名.dbo.表名1) A 

    LEFT JOIN OPENROWSET('SQLOLEDB'

    , '远程实列名'

    ; 'sa'

    ; '密码',

    库名.dbo.表名2) B 

    ON A.ID = B.ID

    WHERE   --条件

    SQL Server 两种跨数据库查询数据的方法
  2. --第二种方法:

    --先连接远程服务器:

    EXEC sp_addlinkedserver '别名','','MSDASQL',NULL,NULL,'DRIVER={SQL Server};SERVER=远程实列名;UID=用户;PWD=密码;'

    exec sp_addlinkedsrvlogin  @rmtsrvname='别名',@useself='false',@locallogin='sa',@rmtuser='sa',@rmtpassword='密码'

    GO

    --然后我们就可以关联远程服务器中的表进行查询、修改等操作;

    select * from 别名.库名.dbo.表名

    insert 库名.dbo.表名 select * from 别名.库名.dbo.表名

    SQL Server 两种跨数据库查询数据的方法
    END

注意事项

 
  • 两个服务器要允许通信才能互相访问数据库
  • SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' (如果不允许通信,会报错误)

  • 开启下面的服务,注:两个服务器都需要开启。

 

SSMS-->SQL实例-->右键-->Facets-->Facet-->服务器配置(还有外围服务器配置)-->AdHocRemoteQueriesEnabled-->设为True

 

今天给大家来分享一下跨服务器操作数据库,还是以SQL Server的管理工具(SSMS)为平台进行操作。

什么是跨服务器操作?

跨服务器操作就是可以在本地连接到远程服务器上的数据库,可以在对方的数据库上进行相关的数据库操作,比如增删改查。

为什么要进行跨服务器操作

随着数据量的增多,业务量的扩张,需要在不同的服务器安装不同的数据库,有时候因为业务需要,将不同的服务器中的数据进行整合,这时候就需要进行跨服务器操作了。

跨服务器操作的工具是什么?

DBLINK(数据库链接),顾名思义就是数据库的链接,就像电话线一样,是一个通道,当我们要跨本地数据库,访问另外一个数据库表中的数据时,本地数据库中就必须要创建远程数据库的dblink,通过dblink本地数据库可以像访问本地数据库一样访问远程数据库表中的数据。

好了,废话不多说,跟着我来一步一步的创建DBLINK吧。

创建SQL Server远程链接方法一

第一步

打开SSMS—>登录到本地数据库—>服务器对象—>链接服务器(右键)—>新建链接服务器,如下图1:

图1 开始创建链接服务器

第二步

在弹出的对话框中输入相关信息

· 在【链接服务器】输入对方服务器的IP地址

· 在【服务器类型】中选择【SQL Server】

如图2:

图2 输入常规信息

第三步

点击左侧的【安全性】,出现如下页面,在第3步中输入对方数据库的账号密码即可。如图3:

图3 输入对方数据库账号密码

点击确定后即创建成功,如下图4,可以看到创建好的链接服务器

图4 创建好的DBLINK

创建完成后会自动生成相关代码,密码用#隐藏了:

EXEC master.dbo.sp_addlinkedserver @server = N'192.168.110.189',@srvproduct=N'SQL Server';EXEC master.dbo.sp_addlinkedsrvlogin@rmtsrvname=N'192.168.110.189',@useself=N'False',@locallogin=NULL,@rmtuser=N'sa',@rmtpassword='########'

我们就可以用创建好的DBLINK链接到对方服务器了

下面我们用创建好的试着查询对方服务器上的表来验证一下。

SELECT * FROM [192.168.110.189].[erp25new].[dbo].[fee_data]

SELECT * FROM [192.168.110.189].[库名].[dbo].[表名]

上面FROM字段后面依此是[DBLINK名].[对方数据库名].[对方数据库下模式名].[对方数据库表名],表名前面的这些内容一个都不能少。查询结果如下图:

图5 查询结果

创建SQL Server远程链接方法二

安装方法一种的第一步点开新建链接服务器后,开始如下操作。

第一步

按如下步骤在弹出对话框中填写相关信息,如下图6:

· 【链接服务器】中填入链接名称,最好是服务器IP,方便辨别,这里使用自定义名称亦可。

· 【服务器类型】选择其他数据源

· 在【提供程序】中选择图中选项

· 【产品名称】填入自定义内容,亦可不填

· 【数据源】填入对方服务器IP地址

如图6 输入常规信息

第二步

与方法一种的类似,在安全性中填入对方服务器的账号密码即可

点击确定后即创建成功,如下图7,可以看到创建好的链接服务器:

图7 创建好的DBLINK

创建完成后会自动生成相关代码,密码用#隐藏了:

EXEC master.dbo.sp_addlinkedserver @server = N'TEST_SQL_SERVER',@srvproduct=N'TEST',@provider=N'SQLNCLI11', @datasrc=N'192.168.110.189'EXEC master.dbo.sp_addlinkedsrvlogin@rmtsrvname=N'TEST_SQL_SERVER',@useself=N'False',@locallogin=NULL,@rmtuser=N'sa',@rmtpassword='########'

上述代码中的字段含义可以参考我另外一篇推文,链接如下:

SQL Server学习之路(五)——DBLINK的用法

查询对方数据库验证方法与方法一类似,只是将数据库名改成自定义名称即可:

SELECT * FROM [TEST_SQL_SERVER].[erp25new].[dbo].[fee_data]

好了,今天先介绍到这里,下次再给大家讲解从SQL Server链接到Oracle和MYSQL的具体操作方法,记得关注哦~

posted on 2019-05-15 11:28  宏宇  阅读(587)  评论(0编辑  收藏  举报