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

能否在SQL Server的OPENDATASOURCE()中使用域账户?反引号密码是否可行?

问题

一直尝试在SQL Server的OPENDATASOURCE()中使用域账户,但始终失败。尝试了两种写法:

第一种写法:

OPENDATASOURCE ('SQLNCLI', 'Data Source=<server name>; User ID=<domain>\<user>; Password=<password>' )

第二种写法(转义反斜杠):

OPENDATASOURCE ('SQLNCLI', 'Data Source=<server name>; User ID=<domain>\\<user>; Password=<password>' )

第一种写法出现错误:

Msg 18456, Level 14, State 1, Line 1
Login failed for user '<domain>\<user>'

第二种写法错误信息类似,用户名显示两个反斜杠:

Msg 18456, Level 14, State 1, Line 1
Login failed for user '<domain>\\<user>'

请问:

  1. 尝试的操作是否可行?
  2. 密码包含反引号(`)字符,该字符在OPENDATASOURCE中是否被禁止?
回答

1. 域账户在OPENDATASOURCE中是否可行?

可行,但你的写法存在本质错误。域账户属于Windows身份验证体系,不能通过在连接字符串里明文传入User ID和Password的方式进行认证。

正确的做法是使用Windows集成身份验证:让执行OPENDATASOURCE的SQL Server服务账户,或者当前执行查询的账户,拥有目标SQL Server的访问权限,然后使用以下连接字符串:

OPENDATASOURCE ('SQLNCLI', 'Data Source=<server name>; Integrated Security=SSPI' )

如果必须使用指定的域账户身份连接,可通过EXECUTE AS LOGIN = '<domain>\<user>'切换身份后再执行OPENDATASOURCE,或者配置链接服务器并设置账户映射,而非直接在OPENDATASOURCE的连接字符串中明文传递域账户密码。

2. 密码中的反引号是否被禁止?

SQL Server连接字符串中,反引号(`)不属于禁止字符,但密码包含特殊字符时需确保格式正确。不过你当前的核心问题并非反引号,而是域账户的认证方式错误——明文传递域账户密码的方式本身不被支持,因此即使密码无问题,也会触发登录失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 17:05:59