SqlServer 连接远程服务器数据库 实现跨服务器联合查询

第一种:
exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 ' 
exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用户名 ', '密码 ' 

查询方法:
select * from ITSV.[数据库名].dbo.[表名] 

第二种:
select * from opendatasource( 'SQLOLEDB', 'Data Source=192.168.1.133,1433;User ID=sa;Password=123' ).[数据库名].dbo.[表名]

 

 

步骤:

  1. 我们在配置前可以使用下面的这个跨数据库查询的语句进行查询,发现是行不通的,报错,所以我们要对这个错误进行更正,当然这是数据库一开始设置的问题。

    SqlServer 连接远程服务器数据库 实现跨服务器联合查询

  2. SQL Server是 阻止了对组件 Ad Hoc Distributed Queries'的 STATEMENT'OpenRowset/OpenDatasource' 的访问的,所以要想配置好,必须要启动。因为这个组件作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Ad Hoc Distributed Queries'。所以我们接下来要做的是启动。

    SqlServer 连接远程服务器数据库 实现跨服务器联合查询

  3. 接下来我们再执行上面的那个语句的话,发现可以了,能够正常运行了,所以说我们只需要把这两行代码配置一下就可以了,配置好了,就能够查询所有表的语句了。

    SqlServer 连接远程服务器数据库 实现跨服务器联合查询

  4. 如果你觉得每次查询或者导入的时候写那么长的语句嫌麻烦,那么也有简单的方法,这个方法是创建一个链接,然后通过这个链接的名称来查询。

    SqlServer 连接远程服务器数据库 实现跨服务器联合查询

  5. 然后通过输入查询语句,只不过这个查询语句前面要加一个虚拟链接名称,这个名称就是刚才建立的那个名称Test,这样的话,就不用写那么长的语句了,很方便。

    SqlServer 连接远程服务器数据库 实现跨服务器联合查询

  6. 当然无论是选择哪种方法,当你不想使用的时候,记得一定要要关闭它,因为这是一个安全隐患,切记执行下面的SQL语句,下面两条语句是针对上面的两种方法的,这样做能够保证数据库的安全性。

    SqlServer 连接远程服务器数据库 实现跨服务器联合查询

    SqlServer 连接远程服务器数据库 实现跨服务器联合查询