我一直在用VB.NET开发一个每天都会执行的应用程序。此应用程序应抛出一系列SQL查询(执行相同的存储过程),处理检索到的数据,然后将其转储到文件中。由于每个查询对应一个独立的文件,我试图通过在单个线程中启动每个“query-process-write to file”来改进它。
这里的问题是SQL在两个最大的查询中抛出“ODBC不支持请求的属性”异常。如果我尝试在SQL Management Studio中运行它,它工作正常(它持续约30秒并检索大约30k长的寄存器)。
我正在使用System.Thread方法对List(of Thread)中的每个线程进行排队,然后使用相应的参数启动它们。还尝试使用线程池,获得相同的结果。我在查询执行中包含了一个关键部分(使用SyncLock和Monitor阻止ADO记录集和连接对象)。我正在检查记录集是否打开而不是null,但我每次都得到相同的异常。
我已经在相应的SQL数据库中打开了Activity Monitor,以防所有这些查询占用太多资源,但一切似乎都运行良好。我还修改了程序是单线程的,我得到了同样的错误。但是,正如我所说,如果我复制完全相同的查询(在调试程序时),一切正常。
有什么想法吗? (抱歉我的英文)