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

使用OPENROWSET连接SQL Server 2008 SP1时遇“无效授权规范”错误

解决SQL Server 2008 SP1中OPENROWSET的连接错误

我来帮你搞定这个OPENROWSET的问题,你遇到的这两个错误(授权无效、连接字符串属性无效)其实是几个常见的配置和语法问题导致的,咱们一步步排查:

1. 先修正OPENROWSET的语法格式

你当前的写法可能存在格式疏漏,正确的OPENROWSET调用需要将三个核心参数分别用单引号包裹,确保提供程序名称、连接字符串、查询语句都正确闭合。比如使用SQLOLEDB的话,标准写法应该是:

SELECT *
FROM OPENROWSET(
    'SQLOLEDB',
    'Data Source=hydrogen;User ID=scratch;Password=scratch;',
    'SELECT * FROM users'
);

注意每个参数都用单引号独立括起来,不要漏写或多写符号。

2. 拆解报错的核心原因

(1)"Invalid authorization specification"(授权无效)

这个问题大概率和身份验证或权限有关:

  • 先确认scratch账号的密码是否正确,以及目标服务器hydrogen是否启用了SQL身份验证(如果服务器只允许Windows身份验证,SQL账号肯定无法登录)。
  • 直接用SSMS通过scratch账号连接hydrogen服务器,手动执行SELECT * FROM users,验证账号是否能正常访问该表——如果这里都报错,先解决账号权限或表访问的基础问题。

(2)"Invalid connection string attribute"(连接字符串属性无效)

你指定的是SQLOLEDB提供程序,但报错里出现了SQLNCLI10,说明SQL Server可能没正确识别你指定的提供程序,或者连接字符串属性和提供程序不兼容:

  • 若坚持用SQLOLEDB,可以把连接字符串里的Data Source换成Server试试,SQLOLEDB对这个属性的兼容性更稳定:'Server=hydrogen;User ID=scratch;Password=scratch;'
  • 或者直接使用SQL Server 2008对应的原生客户端SQLNCLI10,它和2008版本兼容性更好,对应的OPENROWSET语句如下:
SELECT *
FROM OPENROWSET(
    'SQLNCLI10',
    'Server=hydrogen;UID=scratch;PWD=scratch;',
    'SELECT * FROM users'
);

3. 检查SQL Server的必要配置

默认情况下,SQL Server禁用了Ad Hoc Distributed Queries,这会导致OPENROWSET无法正常运行,你需要先开启这个选项:

-- 开启高级选项显示
sp_configure 'show advanced options', 1;
RECONFIGURE;
-- 启用Ad Hoc Distributed Queries
sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;

执行这些命令需要sysadmin权限,执行后无需重启服务即可生效。

另外,还要检查OLE DB提供程序的「允许进程内」设置:

  • 在SSMS里展开「服务器对象」→「链接服务器」→「提供程序」
  • 找到对应的提供程序(SQLOLEDB或SQLNCLI10),右键打开属性,勾选「允许进程内」选项——这个选项未开启也会导致连接失败。

最后梳理排查步骤

  • 用SSMS验证scratch账号能正常登录hydrogen并查询users表;
  • 确保Ad Hoc Distributed Queries选项已启用;
  • 检查对应OLE DB提供程序的「允许进程内」设置;
  • 修正OPENROWSET的语法和连接字符串,匹配你选择的提供程序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:26:13