SQL Server中读取远程数据库数据失败,求正确解决方法
解决远程SQL Server数据库查询问题
错误原因
你写的USE [172.16.10.118]完全无效——USE命令仅用于切换本地SQL实例内的数据库,无法直接指向远程服务器的IP。同时,在未建立远程连接的情况下,本地实例根本识别不了[AGD]这个远程数据库,所以查询必然失败。
三种可行解决方案
方案1:创建链接服务器(推荐,适合频繁查询)
先在本地实例中创建指向远程服务器的链接,之后就可以像访问本地库一样查询远程数据:
-- 1. 创建链接服务器(自定义名称RemoteAGD) EXEC sp_addlinkedserver @server = 'RemoteAGD', @srvproduct='', @provider='SQLNCLI', @datasrc='172.16.10.118'; -- 2. 配置远程登录凭证 EXEC sp_addlinkedsrvlogin @rmtsrvname='RemoteAGD', @useself='FALSE', @rmtuser='payrol', @rmtpassword='p_11t@x123';
之后执行查询:
SELECT AID, UID, VoteCode FROM RemoteAGD.AGD.dbo.Assignments;
方案2:用OPENROWSET直接查询(适合临时查询)
无需提前创建链接,直接在查询语句中嵌入远程连接信息:
-- 先开启Ad Hoc分布式查询配置(仅需执行一次) EXEC sp_configure 'show advanced options', 1; RECONFIGURE; EXEC sp_configure 'Ad Hoc Distributed Queries', 1; RECONFIGURE; -- 执行远程查询 SELECT AID, UID, VoteCode FROM OPENROWSET( 'SQLNCLI', 'Server=172.16.10.118;Database=AGD;Uid=payrol;Pwd=p_11t@x123', 'SELECT AID, UID, VoteCode FROM dbo.Assignments' );
方案3:直接连接远程实例执行查询
在SSMS或其他数据库工具中,用你提供的连接字符串新建一个连接,直接连接到172.16.10.118的AGD数据库,然后执行简化后的查询:
SELECT AID, UID, VoteCode FROM dbo.Assignments;
内容的提问来源于stack exchange,提问作者Miiro Bels
相关产品推荐
相关产品推荐

