使用SSIS导入Snowflake视图至SQL Server时遇ODBC错误10450求助
解决SSIS导入Snowflake视图到SQL Server时的ODBC 10450错误
针对你遇到的SQLSTATE: 22002, Message: [Snowflake][ODBC] (10450) Indicator pointer is required by the driver to indicate NULL output data, but is not provided错误,结合数值列空值的排查结果,可尝试以下解决方案:
显式处理Snowflake视图中的数值列空值
驱动无法识别隐性空值的类型时会触发该错误,可在视图中对数值列做显式空值声明。比如将原列表达式改为:COALESCE(your_numeric_column, CAST(NULL AS NUMBER(18,2))) AS your_numeric_column替换
NUMBER(18,2)为你实际使用的数值类型,确保空值的类型与列类型完全一致。在SSIS数据流中添加数据转换组件
在Snowflake源和OLE DB目标之间插入「数据转换」组件,对有问题的数值列做显式空值处理:- 选中目标数值列,设置转换规则为
ISNULL(your_numeric_column, NULL) - 确认转换后的列属性中「允许空值」选项已勾选
- 用转换后的列替代原列进行后续映射
- 选中目标数值列,设置转换规则为
调整Snowflake ODBC连接的高级参数
打开ODBC数据源配置的高级选项,或直接在SSIS的ODBC连接字符串中添加参数:- 添加
NULL_STRING_AS_NULL=1,强制驱动将空字符串识别为NULL值 - 尝试关闭
Bind Parameters选项(部分驱动版本中该选项会干扰空值传递)
- 添加
校验目标表列映射与类型匹配
- 确认SQL Server目标表的数值列数据类型与Snowflake视图列完全匹配,比如Snowflake的
NUMBER(10,0)对应SQL Server的INT,避免类型不匹配导致的空值解析异常 - 重新刷新OLE DB目标的列映射,确保每一列的映射关系准确无误
- 确认SQL Server目标表的数值列数据类型与Snowflake视图列完全匹配,比如Snowflake的
内容的提问来源于stack exchange,提问作者Sathyanarayanan
相关产品推荐
相关产品推荐

