gpt4 book ai didi

delphi - 通过TADOQuery执行的复杂的T-SQL脚本触发了“多步OLE DB操作生成的错误”。

转载 作者:行者123 更新时间:2023-12-03 19:42:43 27 4
gpt4 key购买 nike

我试图在Delphi中针对Microsoft SQL数据库执行大量SQL语句。我得到这个:

  Multiple-step OLE DB operation generated errors. 
Check each OLE DB status value, if available. No work was done.


该脚本具有多个sql IF语句,后跟 BEGINEND块,其中包含存储过程的调用,变量的声明以及其中的 EXEC。最后,它通过 SELECT @Variable1 AsName1,@Variable2 AsName2...返回一些变量值。

上面的多步错误是作为OLEException从ADO而不是从Delphi代码传入的,并且发生在所有SQL exec-stored-procedure都发生之后,因此我怀疑它在到达最后阶段时会触发此OLE异常该 SELECT @Variable1 AsName1,...可以获取一些变量值供我的程序查看。

我知道有关此已弃用/已弃用的MS KB文章,很遗憾,这不是我的实际问题:

http://support.microsoft.com/kb/269495


简而言之,该KB文章说要修复注册表项并从连接字符串中删除“ Persist Security Info”。那不是我的问题。我问这个问题是因为我已经找到答案了,而且我认为其他人被困在这里时,可能不想浪费几个小时来寻找潜在问题,而在寻找解决方案几个小时后却发现了几个问题。任何想添加其他答案并使用不同选项的人都可以,如果可以复制,我会选择您的答案,并且如有必要,我会将其变成Community Wiki,因为此“ ADO记录集”可能有许多晦涩的原因心情不好,对您的“ T-SQL”异常不满意。

最佳答案

我发现了各种文档来源中列出的几种潜在原因。该问题中的原始知识库文章建议从我的ADO连接字符串中删除“持久性安全信息”,但是,在具有TADOConnection和单个TADOQuery的应用程序中的独立测试中,是否存在Persist Security Info无效,也没有明确将其设置为True或False。

它删除此CursorType声明的方式是什么DID解决方案:

CursorType=ctKeyset

我了解到双向ADO数据集适合ADO中的SELECT * FROM TABLE,但不适用于复杂的SQL脚本。

关于delphi - 通过TADOQuery执行的复杂的T-SQL脚本触发了“多步OLE DB操作生成的错误”。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15620083/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com