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

SSRS连接Snowflake次日报错无活动仓库,订阅等功能失效求助

解决SSRS连接Snowflake次日报错“未选择活动仓库”的问题

你遇到的核心问题是SSRS复用了Snowflake的闲置会话,而该会话关联的仓库已被自动暂停——Snowflake仓库默认闲置一段时间(通常5-10分钟,取决于你的仓库配置)就会自动暂停,而SSRS的连接池会保留旧连接,下次请求时复用这个没有激活仓库的会话,导致报错。手动运行数据集时,Report Builder会新建连接/重新初始化会话,所以能正常工作。

下面是经过验证的有效解决方案,按优先级排序:

1. 在共享数据源的连接字符串中指定默认仓库

这是最直接的解决方案,不需要修改任何SQL或存储过程。Snowflake ODBC驱动支持在连接字符串中直接设置默认仓库,这样每次SSRS建立(或复用)连接时,都会自动激活指定的仓库。

操作步骤:

  • 登录SSRS报表管理器,找到你的共享数据源
  • 编辑数据源,修改连接字符串,添加WAREHOUSE=你的仓库名称参数
  • 示例连接字符串:
    DSN=Snowflake;ACCOUNT=你的账户名;DB=你的数据库;SCHEMA=你的 schema;WAREHOUSE=WAREHOUSE_NAME
    
  • 保存后测试连接,然后等待仓库自动暂停的时长(比如10分钟),再访问报表验证是否正常

原理:每次连接初始化时,Snowflake会自动执行USE WAREHOUSE命令,确保会话始终有激活的仓库上下文,即使连接被复用也不会丢失。

2. 用Snowflake存储过程封装报表查询

如果连接字符串设置无法解决(比如权限限制),可以把报表查询封装到存储过程中,在存储过程开头强制激活仓库——存储过程支持执行多条SQL语句,完美避开ODBC不允许单批多命令的限制。

示例存储过程(根据你的查询调整返回表结构):

CREATE OR REPLACE PROCEDURE GET_REPORT_DATA()
RETURNS TABLE(col1 VARCHAR, col2 INT, ...) -- 匹配你的查询结果列
LANGUAGE SQL
AS
$$
BEGIN
  -- 先激活仓库
  USE WAREHOUSE WAREHOUSE_NAME;
  -- 执行原报表查询
  RETURN SELECT col1, col2, ... FROM your_table WHERE ...;
END;
$$;

然后修改SSRS数据集的查询语句为:

CALL GET_REPORT_DATA();

这样每次数据集执行时,都会先确保仓库被激活,再执行查询,彻底解决会话上下文丢失的问题。

3. 调整SSRS连接池的闲置超时时间

如果上述方案都不适用,可以通过缩短SSRS连接池的闲置超时时间,让SSRS更快释放闲置的Snowflake连接,避免复用失效的会话。

操作步骤:

  1. 在SSRS服务器上找到配置文件rsreportserver.config(默认路径:C:\Program Files\Microsoft SQL Server\MSRS12.MSSQLSERVER\Reporting Services\ReportServer,根据你的SSRS 2014版本调整路径)
  2. 找到<ConnectionPool>节点,修改IdleTimeout值,比如从默认的3600秒(1小时)改为300秒(5分钟)——这个时间要小于你的Snowflake仓库自动暂停的时间
  3. 保存文件后,重启SQL Server Reporting Services服务

原理:闲置的连接会被更快回收,下次请求时SSRS会新建连接,而新连接会自动初始化仓库上下文(如果用了方案1的连接字符串),或者重新执行存储过程激活仓库。

为什么你之前的方案无效?

  • 在SQL前加USE WAREHOUSE:Snowflake ODBC驱动默认禁止单批处理多条SQL语句,所以这条命令不会被执行,只有后面的查询会运行,导致仓库未激活
  • client-session-keep-alive:目前Snowflake ODBC驱动确实不支持该参数,无法保持会话活跃
  • 缓存刷新计划:首次执行用的是有效会话,后续复用了闲置失效的会话,所以失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 21:47:43