DB2 10.5 for Linux, UNIX, and Windows

连接状态

有两种类型的连接状态:“挂起和释放暂挂状态”以及“当前和休止状态”。

如果应用程序进程执行 CONNECT 语句并且应用程序请求器知道服务器名称,但该名称不在该应用程序进程的现有连接集中,那么:(i) 将使当前连接处于休止连接状态、该服务器名称将添加到连接集中,并且将使新连接同时处于当前连接状态挂起连接状态

如果服务器名称已经位于应用程序进程的现有连接集中,并且使用 SQLRULES(STD) 选项预编译了应用程序,那么会产生错误(SQLSTATE 08002)。

挂起和释放暂挂状态。RELEASE 语句控制连接处于挂起还是释放暂挂状态。释放暂挂状态意味着在下一个成功落实操作时将断开连接。(回滚对连接不起作用。)挂起状态意味着在下一个落实操作时会断开连接。

所有连接最初都处于挂起状态,并且可以使用 RELEASE 语句转至释放暂挂状态。连接处于释放暂挂状态后,就不能将它恢复为挂起状态。如果发出了 ROLLBACK 语句,或者由于落实操作不成功而导致执行回滚操作,那么连接将在工作单元边界保持释放暂挂状态。

即使某个连接未显式标记为释放,如果落实操作符合 DISCONNECT 预编译器选项的条件,那么该连接仍可能被落实操作断开。

当前状态和休止状态。无论连接处于挂起状态还是释放暂挂状态,它还可以处于当前状态或休止状态。在连接处于当前状态期间,该连接就是用来执行 SQL 语句的连接。处于休止状态的连接不是当前连接。

唯一可以在休止连接上流动的 SQL 语句是 COMMIT、ROLLBACK、DISCONNECT 或 RELEASE。SET CONNECTION 和 CONNECT 语句将指定服务器的连接状态更改为当前,并且将使任何现有连接处于或保持休止状态。在任何时间点,只能有一个连接处于当前状态。如果休止连接成为同一工作单元中的当前连接,那么所有锁定、游标和预编译语句的状态与该连接上次为当前连接时它们所处的状态相同。

连接结束时

连接结束时,应用程序进程通过该连接获取的所有资源以及用来创建和维护该连接的所有资源都取消分配。例如,如果应用程序进程执行 RELEASE 语句,那么当连接在下一个落实操作期间结束时,所有打开的游标都关闭。

连接还可能由于通信故障而结束。如果此连接处于当前状态,那么应用程序进程将处于未连接状态。

当应用程序进程结束时,该进程的所有连接都将结束。