1

我正在使用链接服务器来更新 AS/400 中的记录。它没有正确关闭连接。在 AS/400 端,仍有许多空闲连接。在sql日志中显示:

EXCEPTION_ACCESS_VIOLATION 将地址 0000000000000024 写入 0x0000000077BDE4B4

似乎不是每次我们在 AS/400 端打开连接并更新文件时。我们更新了 222 条记录,仍然有 210 个连接打开。我预计会有222个。

我们正在从 .NET 应用程序调用存储过程。在我们正在执行的存储过程中:

在 S100405D 处执行 (@as400Query)

其中 as400Query 是带有更新语句的字符串,而 S100405D 是链接服务器。记录在 AS/400 中得到更新,所以这不是问题。似乎在尝试关闭连接时出现错误。我还检查了链接服务器上的设置,连接超时 = 0(关闭)。不确定设置超时是否会关闭它们,或者这无关紧要,因为它无论如何都会抛出错误。

任何帮助将不胜感激!

布赖恩

4

2 回答 2

1

您是否提交任何类型的代码来关闭 AS 端的连接?SQL 服务器只会关闭其连接,在任何其他 RDBMS 上打开的任何其他连接都不会由 SQL 管理

于 2012-10-12T14:25:14.097 回答
0

作为一名 IBM i 程序员,我不希望在存储过程调用期间看到任何错误。如果参数不匹配,操作系统很少会抛出异常。最常见的是调用者 (C#) 使用 VARCHAR 和 IBM 方将其声明为 CHAR。

除此之外,让 IBM 人员确保他们在 PTF 上处于最新状态。

作为风格问题,我不希望看到:

open connection
CALL proc
close connection

对于要更新的​​每一行。相反,我希望

open connection
loop
  CALL proc
end loop
close connection
于 2012-10-12T15:02:17.707 回答