You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OPENROWSET报错‘NT AUTHORITY\ANONYMOUS LOGON登录失败’,如何传递凭据?

解决OPENROWSET执行远程存储过程的登录失败问题

你当前代码使用Trusted_Connection=yes(Windows集成身份验证),如果本地SQL Server服务账号没有远程服务器的访问权限,就会触发登录失败错误。以下是几种正确传递凭据的方案:

方案1:使用SQL Server身份验证

直接在连接字符串中指定远程SQL Server的登录账号和密码,适用于远程服务器支持SQL身份验证的场景:

SELECT a.*
FROM OPENROWSET(
    'SQLNCLI'
    , 'Server=MyServer;Uid=远程SQL登录名;Pwd=远程SQL密码;'
    , 'exec myStoredProcedure'
) AS a;

注意:确保该SQL账号拥有执行目标存储过程的权限

方案2:使用Windows集成身份验证(调整服务账号)

将本地SQL Server服务的启动账号替换为一个在远程服务器拥有访问权限的Windows域账号/本地账号,这样集成验证就能自动传递有效凭据。

方案3:使用EXECUTE AS临时切换身份

如果无法修改服务账号,可以临时切换到有权限的Windows账号执行OPENROWSET:

EXECUTE AS LOGIN = 'DOMAIN\有权限的Windows账号';
SELECT a.*
FROM OPENROWSET(
    'SQLNCLI'
    , 'Server=MyServer;Trusted_Connection=yes;'
    , 'exec myStoredProcedure'
) AS a;
REVERT; -- 切换回原身份

注意:执行该语句的账号需要拥有IMPERSONATE权限,且目标Windows账号必须能访问远程服务器

必要前提配置

确保本地SQL Server已启用Ad Hoc分布式查询,否则OPENROWSET无法正常使用:

sp_configure 'show advanced options', 1;
RECONFIGURE;
sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;

内容的提问来源于stack exchange,提问作者TheMortiestMorty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 13:25:00