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

SSIS导入导出向导ODBC连接Snowflake超时问题求助

问题描述

使用SQL Server 2014(已安装最新Service Pack/CU 12.6444),通过SSIS导入导出向导,采用Snowflake最新ODBC驱动从Snowflake导入数据。小查询可成功连接并导入,但运行耗时数分钟的查询时,总是在30秒后超时,报错信息如下:

  • Pre-execute (Error)
    Messages
    Error 0xc0047062: Data Flow Task 1: System.Data.Odbc.OdbcException (0x80131937): ERROR [HY000] [Snowflake][Snowflake] (15)
    Query has timed out. User specified timeout in seconds=30, Elapsed=45

已在数据源窗口设置超时属性,但未生效,配置字符串如下:

Dsn=snowflake;query_timeout=0;commandtimeout=0;login_timeout=0;statement_timeout_in_seconds=4000;timeout=0
解决办法
  • 调整SSIS数据源组件的CommandTimeout:
    右键点击Data Flow Task中的Snowflake数据源组件,选择「编辑」,切换到「高级」选项卡,找到「CommandTimeout」属性,手动设置为较大值(如3600)。SSIS组件自身的超时设置优先级通常高于连接字符串参数。

  • 修改ODBC数据源管理器的DSN配置:
    打开Windows「ODBC数据源管理器」,找到对应的Snowflake DSN,进入配置界面,在「高级」或「参数」板块,将「Query Timeout」或「Statement Timeout」设为0(无超时)或足够大的值。部分ODBC驱动会优先读取DSN中的全局配置,忽略连接字符串里的参数。

  • 设置Snowflake会话级超时参数:
    在导入查询的开头添加会话级配置语句,强制覆盖超时限制:

    ALTER SESSION SET STATEMENT_TIMEOUT_IN_SECONDS = 3600;
    
  • 调整SSIS包的执行超时属性:
    右键点击SSIS包,选择「属性」,找到「ExecutionTimeout」属性,默认可能为30秒,将其设为0(无超时)或更大数值。这个属性控制整个包的执行时长上限,若设置过短会直接中断长查询。

  • 验证驱动兼容性:
    最新Snowflake ODBC驱动可能与SQL Server 2014的SSIS存在兼容性问题,可尝试降级至官方推荐的稳定版本(适配SQL Server 2014的版本)后测试。

  • 优化长查询逻辑:
    从根源减少查询耗时:给Snowflake表添加合适的索引、限制返回数据范围、将大查询拆分为多批次导入,或在Snowflake端预先创建优化后的视图,降低查询执行时间。

内容的提问来源于stack exchange,提问作者Depth of Field

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 13:32:26