SSRS使用Snowflake密钥对认证(ODBC)创建共享数据源报错
SSRS Snowflake ODBC密钥对认证凭据错误解决方案
问题描述
切换SSRS共享数据源为Snowflake密钥对认证(ODBC类型)时,触发报错:
当前操作无法完成。用户数据源凭据不符合运行此报表或共享数据集的要求。要么用户数据源凭据未存储在报表服务器数据库中,要么用户数据源配置为不需要凭据但未指定无人参与执行账户。
已知前提:
- 使用用户名/密码认证的ODBC共享数据源可正常运行;
- Microsoft Report Builder通过ODBC密钥对嵌入式连接能成功连接Snowflake;
- ODBC DSN已按Snowflake官方文档完成密钥对认证配置。
解决方案与变通方法
1. 修正共享数据源凭据配置
SSRS对Snowflake密钥对认证的ODBC连接有特定要求:
- 必须选择「存储凭据,安全地与报表服务器一起使用」选项;
- 不要勾选「用作Windows凭据连接到数据源」(密钥对是Snowflake层面的身份验证,与Windows域无关);
- 凭据框填写Snowflake用户名,密码框填写私钥的解密密码(若私钥已加密);
- 在ODBC连接字符串中明确指定私钥相关参数,示例:
Driver={SnowflakeDSIIDriver};Server=xxx.snowflakecomputing.com;Database=XXX;Schema=XXX;Warehouse=XXX;Role=XXX;UID=XXX;PrivateKeyFile=C:\Keys\snowflake_key.p8;PrivateKeyPass=your_key_passphrase
2. 确保SSRS服务账户有权读取私钥文件
SSRS服务默认运行账户(通常是NT SERVICE\ReportServer)需要具备私钥文件(.p8格式)的读取权限:
- 右键私钥文件 → 属性 → 安全 → 添加SSRS服务账户,授予「读取」权限;
- 若私钥文件在网络共享路径,需同步配置服务账户对该共享路径的访问权限。
3. 匹配ODBC驱动与SSRS位数兼容性
- 确认安装的Snowflake ODBC驱动版本为SSRS支持的稳定版,优先使用最新版;
- 根据SSRS服务器的位数(32/64位)安装对应版本的ODBC驱动(服务器端需与SSRS位数一致)。
4. 配置无人参与执行账户(备选方案)
若上述配置仍无效,可尝试配置SSRS无人参与执行账户:
- 打开SSRS配置管理器 → 执行账户 → 设置一个具备Snowflake访问权限的Windows账户;
- 在共享数据源中选择「使用无人参与执行账户」,确保该账户能读取私钥文件且ODBC连接字符串配置正确。
5. 嵌入式私钥内容(应急变通)
若私钥未加密,可将私钥的PEM内容直接写入连接字符串的PrivateKey参数(替代PrivateKeyFile),规避文件权限问题。示例:
Driver={SnowflakeDSIIDriver};Server=xxx.snowflakecomputing.com;...;UID=XXX;PrivateKey=-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQ...\n-----END PRIVATE KEY-----
注意需将私钥中的换行符替换为\n,保证连接字符串格式正确。
内容的提问来源于stack exchange,提问作者Rahul Bhosale
相关产品推荐
相关产品推荐

