从SSIS调用Delete语句失败

尼尔·P

我正在尝试从SSIS编排雪花。

我正在使用ODBC连接并执行SQL任务。截断表语句工作正常,任务成功完成。将其更改为删除,任务将失败,并显示以下错误:

失败,并出现以下错误:“从对COM组件的调用返回了错误HRESULT E_FAIL。”。可能的失败原因:查询问题,“ ResultSet”属性未正确设置,参数未正确设置或连接未正确建立。

从雪花查询历史记录中可以看到查询成功完成:

在此处输入图片说明

我怀疑将“结果”设置为期望“无”时,SSIS看起来像结果集。我将其更改为单行和“完整结果集”都变成了对象,但是无论设置如何,仍然会出错。

为了使SSIS成功执行针对Snowflake的语句,我需要更改什么?

编辑:

添加我的删除语句:

delete from SUMMARY.Data_minutes
where date >= dateadd(day,-5  ,'2019-01-20' )
and date <= '2019-01-20' 
让我们

试图找出问题

在搜索此问题时,我在这个Devart支持页面发现了一些有趣的地方,报告了类似的问题:

根据Microsoft文档,如果查询未受影响,则任何记录都将返回结果SQL_NO_DATA(用于ODBC 3.x规范)。我们的驱动程序和SSIS使用ODBC 3.x规范,但是,在上述情况下,SSIS将行为实现为ODBC2.x。因此,当接收到SQL_NO_DATA的结果时,将返回错误“从对COM组件的调用返回了错误HRESULT E_FAIL”。

根据Microsoft文档

当ODBC 3.x应用程序在ODBC 2.x驱动程序中调用SQLExecDirect,SQLExecute或SQLParamData来执行搜索的更新或删除语句时,该语句不影响数据源的任何行,该驱动程序应返回SQL_SUCCESS,而不是SQL_NO_DATA。当使用ODBC 3.x驱动程序的ODBC 2.x或ODBC 3.x应用程序调用具有相同结果的SQLExecDirect,SQLExecute或SQLParamData时,ODBC 3.x驱动程序应返回SQL_NO_DATA。

这意味着当没有行与以下条件匹配时,它将引发异常(在类似情况下:ODBC版本冲突)

where date >= dateadd(day,-5  ,'2019-01-20' )
and date <= '2019-01-20' 

可以尝试的东西

我目前无法测试此变通办法,但是您可以尝试两种方法:

  1. 在delete命令之后添加一个虚拟选择行

    delete from SUMMARY.Data_minutes
    where date >= dateadd(day,-5  ,'2019-01-20' )
    and date <= '2019-01-20' 
    
    select 1
    
  2. 创建一个存储过程,并将日期作为参数传递,然后从“执行SQL任务”执行它(也尝试在该存储过程的末尾添加一个虚拟选择命令)

     Exec sp_Delete ?
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

jQuery中的if语句失败时调用函数

来自分类Dev

调用MySQL函数时,PHP准备的语句失败

来自分类Dev

由于未调用 ngOnit 语句,角度测试失败

来自分类Dev

Restful API偶尔会失败,但始终会调用“ catch”语句,即使它不会失败

来自分类Dev

SSIS中的合并语句

来自分类Dev

SSIS Cube 进程失败

来自分类Dev

php if语句作为ajax调用的一部分没有失败

来自分类Dev

Fortran程序失败,具体取决于子例程调用之前的写语句

来自分类Dev

从 DataBricks/Spark 中的 SELECT 语句调用时,Scala UDF 失败

来自分类Dev

ssis case语句派生列

来自分类Dev

PowerShell ForEach 语句失败

来自分类Dev

bash If语句失败

来自分类Dev

jQuery if语句失败

来自分类Dev

简单(?)如果if语句失败

来自分类Dev

如果else语句失败

来自分类Dev

PowerShell If 语句失败

来自分类Dev

导入语句失败

来自分类Dev

python if 语句失败

来自分类Dev

Arduino if 语句失败

来自分类Dev

SSIS:尝试从另一个存储过程调用一个存储过程时,执行 SQL 任务失败

来自分类Dev

给出错误DBD :: mysql :: st fetchrow_array失败:fetch()没有execute()仅用于DELETE语句

来自分类Dev

SQL Delete语句故障

来自分类Dev

布尔变量和If语句对true语句失败

来自分类Dev

递归调用后的语句

来自分类Dev

自行调用“ if语句”的功能

来自分类Dev

if 语句用于调用 onActivityResult()

来自分类Dev

Android SQLite DELETE失败

来自分类Dev

ITaskScheduler::Delete 失败

来自分类Dev

异步AJAX调用失败