0

我有一个在单个线程中填充数据库的程序。I 对所有查询使用一个连接。这就是我将能够在事务中运行它们。

每一秒我都会得到一组新的文件,这些文件必须输入到 SQL Server 2005 Express 中。

该应用程序可以运行 24 到 36 小时,然后在查询中突然获得“EAccessViolation”。

该查询将执行至少 24 * 60 * 60 次。

我不确定它是否也发生在没有参数的查询中,因为大多数查询(90%)都有参数。它们是插入/更新或带有参数的选择。

当发生这种情况时,之后的所有查询都会得到相同的 EAccessViolation,过了一会儿我得到了 StackOverflow。

虽然代码是以这样一种方式构造的,即异常将被处理,并且下次代码应该运行没有问题。

事实上,这发生在各种查询中(与以前的版本相比没有改变),唯一的改变是我们没有使用 BCB Builder 2007 中的 dbGo,而是使用 Cpp Builder 6.0 进行了 ADO。

我认为它在 Windows 版本的 MDAC(2.8) 或 CodeGear 的 de dbGo 中有一些软件。事实上,在以前的版本(ADO BCB6.0)中我们没有遇到它,而现在(dbGO 和 BCB2007)我们有,这使得这部分非常可疑。

我希望有些人有一些不错的想法,这可能是这一切的原因。

目前我无法在桌面上重现它。我仍在尝试复制它,这将明确提供更多信息。

我愿意接受建议。

问候

合资公司。

4

1 回答 1

0

我会怀疑驱动程序 - 尝试使用不同的驱动程序来查看是否可以隔离问题。还尝试重写查询以使用不同的语法,也许您可​​以经常回收连接?

于 2009-05-12T09:22:08.303 回答