【问题标题】:Delete Fails using ODBC in SSIS在 SSIS 中使用 ODBC 删除失败
【发布时间】:2022-01-31 00:53:53
【问题描述】:

我将针对我的默认本地 SQL Server 实例的执行 SQL 任务从 OLE DB 更改为 ODBC。 SQL是

delete from tablename

ODBC 版本在表有记录时工作正常,但在表为空时失败。

我考虑过使用另一个 SQL 任务的结果集来填充一个变量,但那行不通。阅读这篇 SO 文章Delete statement fails when called from SSIS 确定了问题的根源(ODBC 版本),但它仍然没有提供答案。其他网络文章建议没有解决方法。

是否有任何其他方法或方法可以仅在表不为空时有条件地调用删除?

【问题讨论】:

    标签: sql-server ssis odbc etl execute-sql-task


    【解决方案1】:

    我突然想到只使用 T-SQL 来解决问题。我使用了一个工作正常的 T-SQL 条件语句。无论表是否为空,ODBC SQL 任务都会成功。

    if 0 < (select count(1) from tablename)
    delete from tablename
    

    【讨论】:

    • 我也认为 IF 子句是另一个 SO 问题的解决方案 stackoverflow.com/questions/55000421/…> 我在我的问题中提到了,但我还没有回答或评论那个问题的声誉。
    • 我赞成你的问题。随意添加其他 SO 问题的答案。另外,不要忘记将您的答案标记为已接受。祝你好运
    • 如果您的数据量很大,执行select count(1) 可能会影响您的服务器性能。为什么不在Delete 命令之后添加一个虚拟SELECT 1
    • @Hadi 我将编辑答案并将其放在上下文中。您的评论表明答案中遗漏了一个前提,我需要说明它是如何解决其他 SO 问题的。谢谢。
    猜你喜欢
    • 2019-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多