SQL0750 - SQL0999
SQL0750N 此语句失败,因为无法重命名表或列。
说明
由于下列其中一个或多个原因,不能重命名 RENAME 语句中的源表。
- 在一个或多个现有具体化查询表中引用了该表。
- 在一个或多个统计视图中引用了该表。
- 该表涉及一个或多个作为父表或从属表的引用约束。
- 该表是用于分解一个或多个 XSR 对象的目标表。
- 该表是系统时间段时间表。
- 该表是历史记录表。
- 数据库管理器配置参数 auto_reval 设置为 DISABLED,并且发生下列其中一种情况:
- 在一个或多个现有视图中引用了该表。
- 在一个或多个现有触发器中引用了该表。这包括表上的触发器或已触发的 SQL 语句中的引用。
- 在一个或多个现有 SQL 函数或 SQL 方法中引用了该表。
- 该表已定义了检查约束。这包括由生成列导致的检查约束。
- 该表为延迟表 SYSTOOLS.REPL_MQT_LATENCY。
- 该表已有注册空间列。
- 该表具有基于表达式的索引。
由于下列其中一个或多个原因,无法重命名 ALTER TABLE 语句中的目标表列。
- 目标表为历史记录表
- 该列是使用随机依据生成方法的随机分发表的随机分发键列
用户响应
如果此错误与 RENAME 语句有关,那么在发出 RENAME 语句之前,请删除依赖于此表的视图、具体化查询表、触发器、SQL 函数、SQL 方法、检查约束、引用约束、基于表达式的索引或 XSR 对象。可以通过查询目录来确定依赖于此表的对象。
- 对于依赖于此表的视图、基于表达式的索引或具体化查询表,请查询 SYSCAT.VIEWDEP 并使表与 BSCHEMA 和 BNAME 列相匹配。
- 对于依赖于此表的触发器,请查询 SYSCAT.TRIGDEP 并使表与 BSCHEMA 和 BNAME 列相匹配。
- 对于 SQL 函数或 SQL 方法,请查询 SYSCAT.ROUTINEDEP,其中的表与 BSCHEMA 和 BNAME 列相匹配。
- 对于表的检查约束,请查询 SYSCAT.CHECKS,其中的表与 TABSCHEMA 和 TABBNAME 列相匹配。
- 对于带有注册空间列的表,请注销空间列。
- 对于依赖于此表的引用约束,请查询 SYSCAT.REFERENCES,其中的表与 TABSCHEMA 和 TABNAME 列或者 REFTABSCHEMA 和 REFTABNAME 列相匹配。
- 对于为了进行将此表作为目标的分解而启用的 XSR 对象,请查询 SYSCAT.XSROBJECTDEP,其中的表与 BSCHEMA 和 BNAME 列匹配。
如果此错误与 ALTER TABLE 语句的 RENAME COLUMN 操作有关,那么在目标表是历史记录表的情况下无法直接重命名此列。可以通过执行下列其中一项操作来重命名该列。
- 确定使用历史记录表的系统时间段时间表的名称,发出 RENAME COLUMN 操作并将该名称作为 ALTER TABLE 语句的目标。这将在系统时间段时间表和相关联的历史记录表中都会重命名此列。
- 确定系统时间段时间表的名称,发出 DROP VERSIONING 操作并将该名称作为 ALTER TABLE 语句的目标。这会将历史记录表和系统时间段时间表更改为常规表。现在,您可以在原始 ALTER TABLE 语句中重命名该表的此列。请注意,如果已重命名此列,那么此表不再能够是已删除其版本控制的表的历史记录表。
如果某列是使用随机依据生成方法的随机分发表的随机分发键列,那么不需要执行任何操作。此列是系统生成的列,无法重命名。
sqlcode:-750
sqlstate:42986
SQL0751N 例程 例程名(特定名称 特定名称)尝试执行不被允许的语句。
说明
不允许用于实现例程主体的程序发出任何连接语句。如果例程是函数或方法,那么不允许 COMMIT 和 ROLLBACK(没有 SAVEPOINT 选项)。如果例程是过程并且是在触发器、函数、方法或动态复合语句内调用的,那么在该过程中不允许 COMMIT 或 ROLLBACK 语句。
用户响应
除去不被允许的语句,然后重新编译程序。
sqlcode:-751
sqlstate:38003, 42985
SQL0752N 当使用 CONNECT 类型 1 设置时,不允许在逻辑工作单元内连接数据库。
说明
发出 COMMIT 或 ROLLBACK 语句之前,尝试连接另一个数据库或同一个数据库。在 CONNECT 1 类环境内不能处理该请求。
用户响应
- 在请求连接至另一个数据库前,提交 COMMIT 或 ROLLBACK 语句。
- 如果在一个工作单元内有多个数据库需要更新,那么通过重新预编译或通过从应用程序内发出 SET CLIENT API,将连接设置更改为 SYNCPOINT TWOPHASE 和 CONNECT 2。
sqlcode:-752
sqlstate:0A001
SQL0773N 找不到 CASE 语句的条件。
说明
在 SQL 例程的例程实体中找到没有 ELSE 子句的 CASE 语句。未满足 CASE 语句中所指定的任何条件。
用户响应
更改 CASE 语句以处理可能发生的所有情况。
sqlcode:-773
sqlstate:20000
SQL0774N 语句不能在 ATOMIC 复合 SQL 语句内执行。
说明
在 ATOMIC 复合 SQL 语句的上下文中遇到了 COMMIT 或 ROLLBACK 语句。在此上下文中不允许这些语句。
用户响应
除去 COMMIT 或 ROLLBACK 语句或更改上下文以便它不是 ATOMIC 复合语句。
sqlcode:-774
sqlstate:2D522
SQL0776N 游标 游标名 的使用无效。
说明
在 SQL 过程中的 FOR 语句上,游标 游标名 被指定为游标名。不能在 FOR 语句内的 CLOSE、FETCH 或 OPEN 语句上指定游标。
用户响应
除去 CLOSE、FETCH 或 OPEN 语句。
sqlcode:-776
sqlstate:428D4
SQL0777N 不允许嵌套复合语句。
说明
不能嵌套 SQL 过程的例程实体中的原子复合语句。
用户响应
确保 SQL 过程不包含嵌套的原子复合语句。
sqlcode:-777
sqlstate:42919
SQL0778N 结束标号 标号 与开始标号不同。
说明
在 FOR、IF、LOOP、REPEAT、WHILE 或复合语句的末尾指定的标号 标号 与在语句开头的标号不同。如果未指定开始标号,那么不能指定结束标号。
用户响应
确保结束标号与 FOR、IF、LOOP、REPEAT、WHILE 及复合语句的开始标号相同。
sqlcode:-778
sqlstate:428D5
SQL0779N 在 GOTO、ITERATE 或 LEAVE 语句上指定的标号 标号 无效。
说明
在 GOTO、ITERATE 或 LEAVE 语句上指定了标号 标号。标号未定义或对于该语句无效。
ITERATE 语句上的标号必须是 FOR、LOOP、REPEAT 或 WHILE 语句的标号。
LEAVE 语句上的标号必须是 FOR、LOOP、REPEAT、WHILE 或复合语句的标号。
- 如果 GOTO 语句是在 FOR 语句中定义的,那么 标号 必须在同一 FOR 语句内定义,但嵌套的 FOR 语句或嵌套的复合语句除外。
- 如果 GOTO 语句是在复合语句中定义的,那么 标号 必须在同一复合语句内定义,但嵌套的 FOR 语句或嵌套的复合语句除外。
- 如果 GOTO 语句是在处理程序中定义的,那么 标号 必须在同一处理程序中定义,并遵循其他作用域规则。
- 如果 GOTO 语句是在处理程序外部定义的,那么 标号 一定不能在处理程序内定义。
用户响应
在 GOTO、ITERATE 或 LEAVE 语句上指定有效标号。
sqlcode:-779
sqlstate:42736
SQL0780N 当未为复合语句指定 ATOMIC 时,为处理程序指定了 UNDO。
说明
为 SQL 过程的复合语句中的处理程序指定了 UNDO。除非复合语句是 ATOMIC,否则不能指定 UNDO。
用户响应
指定复合语句是 ATOMIC,或在处理程序上指定 EXIT 或 CONTINUE。
sqlcode:-780
sqlstate:428D6
SQL0781N 条件 条件名 未定义或者该定义不在作用域内。
说明
在处理程序声明、SIGNAL 语句或 RESIGNAL 语句中指定了条件 条件名,但该条件并非定义于包含条件引用的复合语句的作用域之内,或者该条件未能被识别为已定义的模块条件。
无法处理该语句。
用户响应
通过在包含条件引用的复合语句中使用 DECLARE CONDITION 语句,或者通过在引用该条件的位置处可视的模块中定义条件来定义该条件。此外,也可以将条件引用替换为特定的 SQLSTATE 值或者除去引用了该条件的处理程序声明、SIGNAL 语句或 RESIGNAL 语句。
sqlcode:-781
sqlstate:42737
SQL0782N 在处理程序中指定的条件或 SQLSTATE 值无效。
说明
- 在同一作用域中的另一个处理程序已指定条件或 SQLSTATE 值。
- 在与 SQLEXCEPTION、SQLWARNING 或 NOT FOUND 相同的处理程序中指定了该条件或 SQLSTATE 值。
- 在容错的嵌套表表达式的 continue-handler 子句中指定的条件、SQLSTATE 值或 SQLCODE 值无效。
用户响应
从处理程序中除去该条件、SQLSTATE 值或 SQLCODE 值。
sqlcode:-782
sqlstate:428D7
SQL0783N 在 FOR 语句的 DECLARE CURSOR 语句中指定了重复的列名或未命名的列。
说明
FOR 语句中的选择列表必须包含唯一的列名。指定的选择列表包含重复的列名或未命名的表达式。
用户响应
在 FOR 语句中指定的选择列表中指定唯一的列名。
sqlcode:-783
sqlstate:42738
SQL0784N 此语句失败,因为无法删除名为 约束名称 的约束。
说明
对于在定义了 BUSINESS_TIME 时间段的情况下隐式生成的约束,无法使用带有 DROP CHECK 或 DROP CONSTRAINT 子句的 ALTER TABLE 语句将其删除。
用户响应
从 ALTER TABLE 语句中除去 DROP CHECK 或 DROP CONSTRAINT 子句。如果您需要删除此约束,可以使用 ALTER TABLE 语句的 DROP PERIOD 子句删除 BUSINESS_TIME 时间段。
sqlcode:-784
sqlstate:42860
SQL0785N SQLSTATE 或 SQLCODE 变量的声明或使用无效。
说明
- SQLSTATE 未声明为 CHAR(5)
- SQLCODE 未声明为 INTEGER
- 变量被赋予空值。
无法处理该语句。
用户响应
声明 SQLSTATE 变量是 CHAR(5),SQLCODE 变量是 INTEGER。将变量设置为有效值。
sqlcode:-785
sqlstate:428D8
SQL0787N RESIGNAL 语句不在处理程序中。
说明
只能在条件处理程序内使用 RESIGNAL 语句。
用户响应
除去 RESIGNAL 语句,或者转而使用 SIGNAL 语句。
sqlcode:-787
sqlstate:0K000
SQL0788N 未处理语句,因为多次标识了目标表 表名 的某一行以进行更新、删除或插入。
说明
当 MERGE 语句的 ON 搜索条件或 UPDATE 语句的 WHERE 搜索条件与具有多个源表引用行的目标表中的单一行匹配时,将返回此消息。如果目标表中的某一行与多个源表引用行匹配,那么可能会对该目标行多次执行更新或删除操作,而这不受支持。
用户响应
使用下列其中一种方式来响应:
- 更正搜索条件,以确保目标表中的每一行只与源表中的一行相匹配。
- 通过使用 GROUP BY 子句将源表中与目标表中的行匹配的行聚集起来。
- 通过使用 ROW_NUMBER() OLAP 表达式来清理数据。
sqlcode:-788
sqlstate:21506
SQL0789N 参数或 SQL 变量 名称 的数据类型在例程、复合 SQL 语句或者游标值构造函数的参数列表中不受支持。
说明
发生了下列情况之一:
- SQL 例程(函数、方法或过程)或复合 SQL 语句不支持 REFERENCE、LONG VARCHAR、LONG VARGRAPHIC 或结构化数据类型的参数或 SQL 变量。
- 主体是复合 SQL(编译型)语句的触发器、独立的复合 SQL 语句或者是 SQL 方法的例程不支持 XML 数据类型的参数或 SQL 变量。
- 不能为类型为 ARRAY、ROW 或 CURSOR 的参数指定缺省值。
- 外部例程不支持具有结构化数据类型的参数。
- 游标值构造函数的参数列表不支持 ARRAY、BOOLEAN、CURSOR、ROW、LONG VARCHAR、LONG VARGRAPHIC、REFERENCE 或结构化数据类型的参数。
用户响应
执行适用的下列其中任何一项操作:
- 请不要在 SQL 例程定义或复合 SQL 语句中使用 REFERENCE、LONG VARCHAR、LONG VARGRAPHIC 或结构化数据类型的参数或 SQL 变量。
- 请不要在触发器(其主体是复合 SQL(编译型)语句)、独立的复合 SQL 语句或者是 SQL 方法的例程中使用 XML 数据类型的参数或 SQL 变量。
- 请不要在外部例程中使用结构化数据类型的参数。
- 为参数或 SQL 变量 名称 指定另一数据类型。
- 请不要对类型为 ARRAY、ROW 或 CURSOR 的参数指定缺省值。
- 请不要在游标值构造函数的参数列表中使用 ARRAY、BOOLEAN、CURSOR、ROW、LONG VARCHAR、LONG VARGRAPHIC、REFERENCE 或结构化数据类型的参数。
sqlcode: -789
sqlstate:429BB
SQL0796N 将角色 角色名-1 授权给角色 角色名-2 无效,因为这会导致循环。
说明
如果会导致循环,那么不能对角色进行授权。角色 角色名-1 包含角色 角色名-2(可能通过另一角色),因此不能将其授权给 角色名-2。
用户响应
要根据需要排除导致循环的可能性,请从角色 角色名-1 中或从包含在 角色名-1 中但包含 角色名-2 的任意角色中撤销角色 角色名-2,然后重新提交该语句。
sqlcode:-796
sqlstate:428GF
SQL0797N 用不受支持的触发 SQL 语句定义触发器 触发器名。
说明
必须使用触发 SQL 语句来定义触发器,此触发 SQL 语句只能包括以下列表中的语句。
触发器可以包含以下控制语句:
- 复合 SQL(编译型)语句
- 复合 SQL(直接插入型)语句
- FOR 语句
- GET DIAGNOSTICS 语句
- IF 语句
- ITERATE 语句
- LEAVE 语句
- SIGNAL 语句
- WHILE 语句
AFTER 触发器或 INSTEAD OF 触发器还可以包括下列触发 SQL 语句:
- INSERT 语句
- 搜索的 UPDATE 语句
- 搜索的 DELETE 语句
- MERGE 语句
- CALL 语句
- 全查询
- 赋值语句(排除转换变量的赋值)
使用 SQL 复合(编译型)语句定义的 BEFORE 触发器还可包括以下触发 SQL 语句:
- INSERT 语句
- 搜索的 UPDATE 语句
- 搜索的 DELETE 语句
- MERGE 语句
- CALL 语句
- 全查询
- 赋值语句
如果未使用 SQL 复合(编译型)语句定义 BEFORE 触发器,或者使用 SQL 复合(编译型)语句定义了 BEFORE INSERT 触发器并且触发操作是针对 UNION ALL 视图执行的 INSERT 或针对 WITH ROW MOVEMENT 视图执行的 UPDATE,那么触发 SQL 语句不能包括:
- 使用修改 SQL 数据的复合 SQL(编译型)语句定义的表函数或标量函数
- 嵌套的 DELETE、INSERT、MERGE 或 UPDATE 语句
在某些情况下,触发器名 不可在消息中使用。
用户响应
检查触发器中的触发 SQL 语句,以找出与此消息中描述的列表不匹配的任何语句并将其除去。
sqlcode:-797
sqlstate:42987
SQL0798N 不能为定义为 GENERATED ALWAYS 的列 列名 指定值。
说明
当在表中插入或更新行时,为 GENERATED ALWAYS 列 列名 指定了一值。除非指定了关键字 DEFAULT,否则,对于插入操作,不应在列列表中(对于更新操作,则是不应在 SET 子句中)指定 GENERATED ALWAYS 列。
未执行 INSERT 或 UPDATE。
用户响应
从列列表或 SET 子句中除去 GENERATED ALWAYS 列,或者将 DEFAULT 指定为列值。
sqlcode:-798
sqlstate:428C9
SQL0799W 忽略了专用寄存器 专用寄存器名称 的 SET 语句,因为数据库服务器上不存在专用寄存器或者为专用寄存器指定的值无效。
说明
专用寄存器是应用程序进程的数据库管理器所定义的存储区域。专用寄存器用于存储可在 SQL 语句中引用的信息。
某些专用寄存器可使用 SET 变量语句来更新。
可对 DB2 客户机或驱动程序进行配置以设置专用寄存器。当对 DB2 客户机或驱动程序进行配置以设置专用寄存器时,客户机或驱动程序向数据库服务器发送应用程序 SQL 语句的同时发送 SET 变量语句。
如果尝试更新专用寄存器但数据库服务器上不存在专用寄存器或者为专用寄存器指定的值无效,那么会返回此消息。
DB2 客户机或驱动程序向数据库服务器发送应用程序 SQL 语句的同时发送 SET 变量语句时,无论专用寄存器设置成功还是失败,数据库服务器都会处理应用程序 SQL 语句。
用户响应
如果对 DB2 客户机或驱动程序进行配置以设置专用寄存器,请验证在客户机配置文件 db2dsdriver.cfg 中所指定的专用寄存器设置。
sqlcode:+799
sqlstate:01527
SQL0801N 尝试用零作除数。
说明
列函数或算术表达式的处理导致了除零。
无法处理该语句。对于 INSERT、UPDATE 或 DELETE 语句,未执行任何插入或更新。
用户响应
检查 SQL 语句以确定问题的原因。如果问题与数据有关,那么需要检查发生错误时所处理的数据。请参阅 SQL Reference 以了解数据类型的有效范围。
联合系统用户:检查 SQL 语句以确定问题的原因。如果该问题与数据相关,请检查出错时正在数据源上处理的数据。
sqlcode:-801
sqlstate:22012
SQL0802N 发生算术溢出或其他算术异常。
说明
列函数或算术表达式的处理导致算术溢出。
无法处理该语句。对于 INSERT、UPDATE 或 DELETE 语句,未执行任何插入或更新。
用户响应
检查 SQL 语句以确定问题的原因。如果问题与数据有关,那么需要检查发生错误时所处理的数据。请参阅 SQL Reference 以了解数据类型的有效范围。
当列函数不能处理由 SQL 语句返回的值时,也可能返回此错误。例如,当对其行数比 MAX_LONGINT_INT SQL 限制定义的行数多的表发出 SELECT COUNT 语句时,将导致算术溢出错误。考虑对具有多于 2147483647 个行的表使用 COUNT_BIG 列函数。
联合系统用户:检查 SQL 语句以确定问题的原因。如果该问题与数据相关,请检查出错时正在数据源上处理的数据。请参阅该数据源对应的 SQL Reference,确定数据类型的有效范围。
sqlcode:-802
sqlstate:22003
SQL0803N INSERT 语句、UPDATE 语句或由 DELETE 语句导致的外键更新中的一个或多个值无效,因为由 索引标识 标识的主键、唯一约束或者唯一索引将表 表名 的索引键限制为不能具有重复值。
说明
INSERT 或 UPDATE 对象表 表名 被一个或多个 UNIQUE 索引约束为在某些列或列组中具有唯一值。另外,父表上的 DELETE 语句导致更新从属表 表名(该从属表受一个或多个 UNIQUE 索引约束)中的外键。唯一索引可能支持在表上定义的主键或唯一约束。不能处理语句,因为完成所请求的 INSERT、UPDATE 或 DELETE 语句将导致重复的列值。如果索引在 XML 列上,那么可以从单个 XML 文档中生成索引键的重复值。
另外,如果视图是 INSERT 或 UPDATE 语句的对象,那么在其上定义视图的表 表名 会受到约束。
如果 索引标识 为整数值,那么可以通过发出下列查询来从 SYSCAT.INDEXES 中获取索引名:
SELECT INDNAME, INDSCHEMA
FROM SYSCAT.INDEXES
WHERE IID = <index-id>
AND TABSCHEMA = 'schema'
AND TABNAME = 'table'
其中,“schema”表示 表名 的模式部分,“table”表示 表名 的表名部分。
无法处理该语句。未更改表。
用户响应
检查 索引标识 标识的索引的定义。
对于 UPDATE 语句,确保指定的操作本身与唯一性约束一致。如果这样做未发生错误,那么检查对象表内容以确定问题的原因。
对于 INSERT 语句,检查对象表内容以确定在指定的值列表中哪个值违反了唯一性约束。另一方面,如果 INSERT 语句包含了子查询,那么该子查询寻址的对象表内容必须与对象表内容相匹配以确定问题的原因。注意,如果该表受安全策略保护,那么表示您的 LBAC 凭证可能不允许您查看导致错误的行。
如果索引在 XML 列上并且语句为 INSERT 或 UPDATE,那么应考虑 XML 文档是否将导致单个 XML 文档中产生重复值。
对于 DELETE 语句,检查用规则 ON DELETE SET NULL 定义的外键上唯一约束的已标识从属表。此表具有外键列,该外键列包括在不能设置为 NULL(因为该表的列中已存在 NULL)的已标识唯一索引中。
联合系统用户:找出导致请求失败的数据源中的问题,并检查先前列示的条件的索引定义和数据。
sqlcode:-803
sqlstate:23505
SQL0804N 当前请求的应用程序参数无效。原因码为 原因码。如果在 SQLDA 中的主变量或 SQLVAR 无效,那么:主变量/SQLVAR 号 = 变量号,SQLTYPE = sql-类型,SQLLEN = sql-长度,主变量/SQLVAR 类型 = 输入或输出。
说明
在处理当前请求时出错。
- 如果应用程序员已修改预编译器的输出,或以另一种方式重写了调用参数列表,那么预编译器创建的调用参数列表可能不正确。
- 在 SQL 语句中的 SQLDA 或主变量无效。
- 正在进行的请求不受支持或超出上下文范围。
对原因码的解释如下所示:
- 100
正在进行的请求不受支持或超出上下文范围。
- 101
SQLDA.SQLN 小于 SQLDA.SQLD
- 102
SQLVAR.SQLTYPE 无效。
联合系统用户:您指定的数据类型不受联合服务器或您想访问的数据源的支持。
- 103
在 SQLVAR.SQLLEN 或 SQLVAR2.SQLLONGLEN 中指定的长度对于 SQLVAR.SQLTYPE 中给定的 SQL 类型不正确。
- 104
应为 SQLVAR 个数的两倍,但是 SQLDA.SQLDAID 的 SQLDOUBLED 字段未设置为“2”。因为存在大对象类型或结构化类型,所以这可能是必需的。
- 105
双字节字符大对象具有由 SQLVAR2.SQLDATALEN 指针指示的奇数值,它总是以字节为单位,即使对于 DBCLOB 也是如此。
- 106
SQLDATA 指针无效,或者它指向的存储器空间不够。
- 107
SQLIND 指针无效,或者它指向的存储器空间不够。
- 108
SQLDATALEN 指针无效,或者它指向的存储器空间不够。
- 109
当前 SQL 语句期望特定数目的主变量/SQLVARS。
- 110
LOB 定位器与兼容类型的 LOB 不相关。
- 111
LOB 由 SQLVAR 的 SQLTYPE 指示,但第二个 SQLVAR 是 NULL。
- 112
SQLDATATYPE NAME 字段无效。它不符合在数据库中标识现有用户定义的类型的格式。标识现有用户定义的类型的格式如下:8 字节,后跟一个句点,再后跟 18 字节。
- 113
SQLFLAG4 字段无效。如果指定了结构化类型,那么该值必须为 X'12'。如果指定了引用类型,那么该值必须为 X'01'。否则,该值必须为 X'00'。
- 115
在不能包含 XML 数据的 SQLVAR.SQLNAME 字段中对 SQLVAR.SQLTYPE 设置了 XML 子类型指示符。
在带有主变量的 SQL 语句中,使用主变量号从该语句或子语句(对于复合 SQL)的起始位置开始计数,以找出无效的主变量。对于使用 SQLDA 的语句,SQLVAR 号用于查找无效的 SQLVAR。对于输入 SQLDA,只对输入主变量或 SQLVAR 进行计数;对于输出 SQLDA,与此类似。注意,此号码从 1 开始。
无法处理该语句。
用户响应
检查应用程序中是否有记录的任何错误。注意,程序员不要尝试修改预编译器输出。
联合系统用户:如果您接收到原因码 102,那么指定一个受支持的数据类型,并重新提交该程序。
sqlcode:-804
sqlstate:07002
SQL0805N 找不到程序包 程序包名。
说明
不能完成语句,因为未在目录中找到必要的程序包。
程序包名 的格式为:
- “pkgschema.pkgname 0Xcontoken”,其中一致性标记以十六进制给出。
- “pkgschema.pkgname.pkgversion”,如果程序包版本为空字符串,那么名称省略“.pkgversion”。
- “%.pkgname”,如果设置了 CURRENT PACKAGE PATH。CURRENT PACKAGE PATH 中模式名的设置是由百分比字符(“%”)来指示的。
此消息(SQLCODE)的可能原因是:
- 程序包未绑定或已删除。
- 如果尝试运行 DB2 实用程序或 CLI 应用程序,那么 DB2 实用程序可能需要重新绑定至数据库。
- “%.pkgname”,如果设置了 CURRENT PACKAGE PATH,但是在 CURRENT PACKAGE PATH 中的任何模式中都找不到名称为“pkgname”的程序包。
注意,当对给定的 package-schema.package-name 版本标识使用版本标识时,可能有以相同的程序包模式和程序包名定义的程序包,但是未找到正确的程序包,原因是现有程序包与请求的版本或一致性标记不一致。程序包必须与程序包名的所有三个部分相匹配。当正在使用多个版本,导致出现此消息的附加原因为:
- 正在执行的应用程序的版本已预编译、编译和链接,但是未绑定,或已绑定但是后来删除了该版本的程序包。
- 应用程序已预编译和绑定,但是未编译和/或链接,所以正在执行的应用程序不是最新的。
- 程序包由与生成编译并链接至应用程序可执行文件的已修改源文件的预编译不同的源文件预编译生成的绑定文件绑定。
- 新应用程序同与现有的程序包相同的名称(和版本)绑定,这样就替换了现有的程序包。如果运行与替换的程序包相关联的应用程序,那么将导致此错误。
在所有这些情况下,请求的一致性标记与现有版本的一致性标记不匹配,因此认为未找到程序包。
无法处理该语句。
用户响应
指定正确的程序包名或绑定该程序。如果正在运行的应用程序未与数据库绑定,请与数据库管理员联系以执行必需的绑定。确保正在执行的应用程序或对象模块是与生成程序包的预编译和绑定相关联的已编译和链接的修改源代码。
如果设置了 CURRENT PACKAGE PATH,那么确保在 CURRENT PACKAGE PATH 中指定了包括程序包的模式。
可以使用下列 SQL 语句来查询目录以确定是否有程序包的不同版本:
SELECT PKGSCHEMA, PKGNAME, PKGVERSION, UNIQUE_ID
FROM SYSCAT.PACKAGES
WHERE PKGSCHEMA='pkgschema' and PKGNAME='pkgname'.
注意 UNIQUE_ID 列与一致性标记相对应。
如果 DB2 实用程序需要重新绑定至数据库,那么当连接至数据库时,数据库管理员可以通过从实例的 bnd 子目录发出下列 CLP 命令之一来完成此操作:
- 对于 DB2 实用程序,发出“db2 bind @db2ubind.lst blocking all grant public”。
- 对于 CLI,发出“db2 bind @db2cli.lst blocking all grant public”。
联合系统用户:确保在适用的数据源上绑定联合服务器所必需的程序包。请参阅《联合系统指南》,以了解有关将程序包绑定至数据源的更多信息。
sqlcode:-805
sqlstate:51002
SQL0808N CONNECT 语句的语义与其他现有连接的语义不一致。
说明
CONNECT 语句来源于一个源文件,该源文件预编译成具有与存在连接的源文件不同的连接选项(SQLRULES、CONNECT 类型、SYNCPOINT 或 RELEASE 类型)。
用户响应
确保使用相同的 CONNECT 选项预编译所有的源文件,如果这不能实现,那么在发出第一个 CONNECT 语句之前,调用 SET CLIENT API 来对应用程序进程设置期望的选项。
sqlcode:-808
sqlstate:08001
SQL0811N 标量全查询、SELECT INTO 语句或 VALUES INTO 语句的结果多于一行。
说明
下列其中一项导致了该错误:
- 执行嵌入式 SELECT INTO 或 VALUES INTO 语句导致结果表多于一行。
- 执行标量全查询导致结果表多于一行。
联合系统用户:联合服务器或数据源可以检测到此情况。
无法处理该语句。
用户响应
确保语句包含适当的条件规范。如果有,那么可能有导致在仅期望返回一行时却返回了多行的数据问题。
联合系统用户:找出导致请求失败的数据源中的问题,并检查该对象的选择标准和数据。
sqlcode:-811
sqlstate:21000
SQL0817N 因为该 SQL 语句将导致禁止的更新操作,所以不能执行该语句。
说明
- 该应用程序正在作为 IMS 仅查询事务运行。
- 该应用程序是 IMS 或 CICS 应用程序,它尝试更新不支持两阶段落实的远程 DBMS 上的数据。
- 该应用程序尝试更新多个位置处的数据,但其中一个位置不支持两阶段落实。
这些 SQL 语句包括 INSERT、UPDATE、DELETE、CREATE、 ALTER、DROP、GRANT 和 REVOKE。
无法执行该语句。
用户响应
如果该应用程序正在作为 IMS 仅查询事务运行,请与 IMS 系统程序员联系,咨询有关更改您的应用程序正在其下运行的事务的仅查询状态的信息。
如果 IMS 或 CICS 应用程序正在尝试远程更新,那么必须将该应用程序更改为作为服务器 DBMS 上的本地应用程序运行,或必须将服务器 DBMS 升级,使之支持两阶段落实。
如果该应用程序正在尝试更新多个位置处的数据,那么必须更改该应用程序,或必须将所涉及的所有 DBMS 都升级,使它们支持两阶段落实。
sqlcode:-817
sqlstate:25000
SQL0818N 发生了时间戳记冲突。
说明
预编译时由预编译器生成的时间戳记与绑定时存储在程序包内的时间戳记不同。
- 应用程序已预编译、编译和链接,但是未绑定。
- 应用程序已预编译和绑定,但是未编译和/或链接,所以正在执行的应用程序不是最新的。
- 程序包由与生成编译并链接至应用程序可执行文件的已修改源文件的预编译不同的源文件预编译生成的绑定文件绑定。
- 新应用程序与相同名称和现有的程序包绑定,这样就替换了现有的程序包。如果运行与替换的程序包相关联的应用程序,那么将导致此错误。
联合系统用户:除了前面列示的原因之外,该问题还可因未在所有适用数据源上绑定必需的程序包而引起。
无法处理该语句。
用户响应
使用与对象模块匹配的程序的绑定文件再次绑定应用程序。或者,执行与存储在数据库中的程序包相应的程序。
如果正在安装样本数据库,那么记录此消息的编号和文本,然后与技术服务代表联系。
联合系统用户:除了前面列示的操作之外,确保在适用的数据源上绑定联合服务器所必需的程序包。请参阅《联合系统指南》,以了解有关将程序包绑定至数据源的更多信息。
sqlcode:-818
sqlstate:51003
SQL0822N SQLDA 包含数据地址或无效的指示符变量地址。
说明
应用程序将一个无效的地址置于 SQLDA 中。
无法处理该语句。
用户响应
更正应用程序以将有效的地址置于 SQLDA 中。
sqlcode:-822
sqlstate:51004
SQL0840N SELECT 列表中返回了太多项。
说明
SELECT 列表中返回的项数超过可允许的最大值。SELECT 列表的最大值(除了在公共表表达式上之外)是 1012。公共表表达式中 SELECT 列表的最大值是 5000。
无法处理该语句。
用户响应
确定是否所有信息都是实际需要的。(注意,SQL 语句 SELECT * from A, B, C 中的 SELECT list * 返回的项数是全部三个表中的列数之和) 如果有可能,重新编写 SQL 语句,使得仅返回必需的信息项。如果所有信息都是必要的,那么将 SQL 语句分成两条或多条语句。
sqlcode:-840
sqlstate:54004
SQL0842N 已存在与服务器 服务器名 的连接。
说明
SQLRULES(STD) 有效并且 CONNECT 语句标识现有的 SQL 连接。
用户响应
- 如果服务器名不是需要的名称,那么进行更正。
- 如果 SQLRULES(STD) 有效并且 CONNECT 语句标识现有的 SQL 连接,那么用 SET CONNECTION 替换 CONNECT,或将选项更改为 SQLRULES(DB2)。
更正应用程序中的错误,然后再次尝试。
sqlcode:-842
sqlstate:08002
SQL0843N 服务器名未指定现有的连接。
说明
语句、命令或 API 指定了不标识该应用程序进程的现有 SQL 连接的服务器名。
- SET CONNECTION 语句
- RELEASE 语句
- DISCONNECT 语句
- SET 或 QUERY CLIENT INFORMATION
用户响应
- 如果服务器名不是需要的名称,那么进行更正。
- 确保已建立与服务器的连接,且在对该连接发出请求前该连接处于当前状态或休止状态。
更正应用程序中的错误,然后再次尝试。
sqlcode:-843
sqlstate:08003
SQL0845N 在 NEXT VALUE 表达式在序列 序列名称 的当前会话中生成值之前,不能使用 PREVIOUS VALUE 表达式。
说明
PREVIOUS VALUE 表达式指定了序列 序列名,但是尚未为此序列生成值。在可以发出序列的 PREVIOUS VALUE 表达式之前,必须在此会话中发出 NEXT VALUE 表达式,以便为此序列生成值。
用户响应
在对会话中的同一序列发出任何 PREVIOUS VALUE 表达式之前,至少应对序列发出一个 NEXT VALUE 表达式。
sqlcode:-845
sqlstate:51035
SQL0846N 标识列或序列对象 对象类型 对象名 的规范无效。原因码:原因码。
说明
- 标识列或序列对象的基本数据类型不受支持。标识列和序列对象支持下列数据类型:SMALLINT、INTEGER、BIGINT 和 DECIMAL(或 NUMERIC),小数位为零。
- START WITH、INCREMENT BY、MINVALUE 或 MAXVALUE 的值超出了标识列或序列对象的数据类型的范围。
- MINVALUE 必须小于或等于 MAXVALUE。
- 为 CACHE 指定了无效值。该值必须为 INTEGER,最小值为 2。
用户响应
更正语法并重新提交该语句。
sqlcode:-846
sqlstate:42815
SQL0857N 指定了冲突的选项(选项-1 和 选项-2)。
说明
指定了冲突的选项。必须同时指定 option1 和 option2,或者同时不指定这两个选项。
如果在定义列时指定了 IMPLICITLY HIDDEN,那么该列还必须定义为 ROW CHANGE TIMESTAMP 列。
无法执行该语句。
用户响应
根据选项的不同,同时指定这些选项或不同时指定这些选项。
sqlcode:-857
sqlstate:42867
SQL0859N 对“事务管理器数据库”访问失败,SQLCODE 为 SQLCODE。
说明
- 未创建该数据库。
- 未用数据库名称更新或激活数据库管理器配置文件的 tm_database 字段。
- 数据库存在,但是与数据库的通信失败。
用户响应
- 请参阅随此消息返回的 SQLCODE,并且遵循该 SQLCODE 的适当操作。
- 验证 tm_database 是否存在,如果不存在,那么创建新数据库或选择当前存在的数据库来用作 TM 数据库。如果没有对磁盘存储器的严格约束,那么建议创建独立的数据库。
- 使用字段 tm_database 来更新 TM 数据库的数据库管理器配置(如果尚未完成)。
- 验证是否可以连接 tm_database。例如,使用“命令行处理器”尝试该连接。
- 确保选择的 tm_database 不是通过 DB2 Connect 访问的数据库。
sqlcode:-859
sqlstate:08502
SQL0863W 已成功进行连接,但只应使用单字节字符。
说明
服务器数据库和客户机应用程序正在将代码页用于不同的语言类型,并且不能保证在 7 位 ASCII 范围之外的任何字符(所有代码页中只存在 7 位 ASCII 范围中的字符)。例如,连接可能是在日文代码页与 Latin1 代码页之间进行的,但在 Latin1 代码页中,将没有日文字符可用,因此应避免所有这些字符(但是,英文字符则没问题)。
- 联合数据库支持单字节和双字节字符,但数据库客户机系统只支持单字节字符。
- 数据源支持单字节和双字节字符,但是联合系统只支持单字节字符。
用户响应
不要提交使用对于应用程序代码页和数据库代码页不是公共的字符的 SQL 语句或命令。
联合系统用户:不要提交使用对于客户机系统、联合系统和数据源不是公共的字符的 SQL 语句或命令。
sqlcode:+863
sqlstate:01539
SQL0864N 引用约束 约束名 尝试了修改表 表名 中由全查询内的 SQL 数据更改语句修改的行。
说明
在 FROM 子句中指定了 SQL 数据更改语句,但是 SQL 数据更改语句的底层目标基本表具有将修改同一个表的引用约束。这是不允许的。
无法处理该语句。
用户响应
避免在 FROM 子句中使用 SQL 数据更改语句,或者更改引用约束以便使它不会修改是 SQL 数据更改语句的目标的表。
sqlcode: -864
sqlstate:560C6
SQL0865N m_database 值无效。
说明
在数据库管理器配置中选择作为 tm_database 的数据库无效。该数据库必须处于 DB2 V2.1 或更高版本,并且不能是通过 DRDA 协议(即,通过 DB2 Connect)访问的数据库。
无法执行该语句。
用户响应
- 更新数据库管理器配置,以对 tm_database 参数 指定有效的数据库。
- 发出 db2stop 和 db2start 以确保更改生效。
sqlcode:-865
sqlstate:08001
SQL0866N 数据服务器驱动程序或数据服务器客户机已终止与名为 数据库名称 的数据库的连接,因为 db2dsdriver.cfg 文件的 <alternategroup> 节无效。
说明
可以使用 db2dsdriver.cfg 文件的 <alternategroup> 节为要连接至的客户机自动重新路由指定多个备用数据库服务器,以免与数据库的连接失败。此功能在 DB2 for Linux, UNIX, and Windows 以及 DB2 for z/OS 服务器中受支持。
当连接至 DB2 for z/OS 数据库服务器时,db2dsdriver.cfg 文件的 <alternategroup> 节的内容存在某些限制。如果名为 db_A 的数据库位于 DB2 for z/OS 数据库服务器上,那么 db_A 的 <alternategroup> 节中不能有多个 <database> 条目。
出现下列其中一种情况时,将返回此消息:
- 备用组在名为 数据库名称 的数据库所在的数据库服务器上不受支持。
- db2dsdriver.cfg 内容不满足 <alternategroup> 节的 DB2 for z/OS 限制。
用户响应
在 db2dsdriver.cfg 文件中,修改与给定的数据库 数据库名称 相关的 <alternategroup> 节,以便那些条目和节满足 <alternategroup> 支持限制:
- 除去 db2dsdriver.cfg 文件中的 <alternategroup> 节。
- 在 <alternategroup> 节中仅指定一个数据库条目。
sqlcode:-866
sqlstate:08001
SQL0868N 对连接已存在的服务器尝试了使用 USER/USING 子句的 CONNECT。
说明
存在与服务器的当前或休止连接,使用 USER/USING 子句连接(CONNECT)到此服务器的尝试无效。
用户响应
- 使用 SET CONNECTION 语句使到 DORMANT 连接的连接成为当前连接。
- 如果应用程序正在使用 SQLRULES(DB2),那么使用不带 USER/USING 的 CONNECT 语句。
- 完成现有的工作单元,断开连接,然后使用 USER/USING 重新连接。
sqlcode:-868
sqlstate:51022
SQL0873N 不能在同一条 SQL 语句中引用使用不同编码方案编码的对象。
说明
未使用同一编码方案定义 SQL 语句中引用的所有表、SQL 函数和 SQL 方法。
- 在语句中引用了使用 ASCII 或 Unicode 编码方案创建的表,同时具有未使用同一编码方案创建的表
- 在语句中引用了使用 ASCII 或 Unicode 编码方案创建的 SQL 函数或 SQL 方法,同时具有未使用同一编码方案创建的表
- 有源函数是使用不同于源函数的编码方案的编码方案创建的
- 异常表是使用不同于操作的基本表的编码方案的编码方案创建的
用户响应
更正 SQL 语句以便只引用使用同一编码方案的对象。
sqlcode:-873
sqlstate:53090
SQL0874N 所有参数的 CCSID 都必须与例程的 PARAMETER CCSID 相匹配。
说明
例程的所有参数必须与例程本身使用同一编码方案。如果对参数指定了 CCSID,那么它必须与对例程隐式或显式指定的 PARAMETER CCSID 选项相匹配。
用户响应
从参数中除去 CCSID 选项或更改该语句以使从头到尾指定相同的 CCSID 值。
sqlcode:-874
sqlstate:53091
SQL0880N 在此上下文中,SAVEPOINT 保存点名 不存在或无效。
说明
发出 RELEASE 或 ROLLBACK TO SAVEPOINT 保存点名 语句时出错。 不存在具有该名称的保存点,或它是在当前原子执行上下文外部建立的。
无法处理该语句。
用户响应
在语句中更正保存点的名称,并重新发出该语句。
sqlcode:-880
sqlstate:3B001
SQL0881N 已经存在具有名称 保存点名 的 SAVEPOINT,但是,不能再使用此保存点名。
说明
在 SAVEPOINT 语句中已使用名称 保存点名。不能再使用该保存点名,因为至少有一个使用此名称的 SAVEPOINT 语句也指定了 UNIQUE 关键字,它要求该名称必须是唯一的。
无法处理该语句。未设置新的保存点。具有同一名称的旧保存点仍然存在。
用户响应
为此保存点选择另一个名称,并重新发出 SAVEPOINT 语句。如果必须再使用此现有保存点名,那么发出 RELEASE SAVEPOINT 语句以释放现有的保存点。然而,您应该知道,RELEASE SAVEPOINT 语句还会释放自建立 指定的保存点以来在事务中所建立的任何保存点。有关更多信息,请参阅 SQL Reference。
sqlcode:-881
sqlstate:3B501
SQL0882N 保存点不存在。
说明
发出 ROLLBACK TO SAVEPOINT 语句时出错。当没有任何现有的保存点时,不允许发出未指定特定保存名的 ROLLBACK TO SAVEPOINT。
无法处理该语句。
用户响应
发出另一语句,或者尝试用 ROLLBACK 语句回滚整个事务。
sqlcode:-882
sqlstate:3B502
SQL0900N 应用程序状态出错。不存在数据库连接。
说明
- 应用程序状态的严重错误导致丢失数据库连接。
- 应用程序可能已与数据库断开连接,在执行下一条 SQL 语句之前未建立新的当前连接。
- 请求切换可信连接中的用户未成功。
用户响应
通过(使用 CONNECT TO 或 SET CONNECTION)切换至现有的一个休眠连接、通过(使用 CONNECT)建立新连接或者通过成功切换至可信连接中的另一个用户来重新建立当前连接。
sqlcode:-900
sqlstate:08003
SQL0901N SQL 语句或命令由于数据库系统错误而失败。(原因:原因)。
说明
在许多场景中,有可能返回此消息。以下是两个有可能返回此消息的场景示例:
- Windows 操作系统:在 Windows 操作系统上返回此错误的一种原因是,反病毒或防火墙软件不允许数据库管理器读取或写入与 DB2 数据库或数据库管理器相关的文件。
- 迁移和升级场景:在升级到新版本之后或者在应用修订包之后可能返回此错误的一种原因是,有一个或更多的表、相关索引或统计视图的统计信息并非最新。
在某些情况下,虽然这次尝试执行 SQL 语句失败,但将来尝试执行此 SQL 语句或其他语句有可能成功。
运行时标记 原因 可能为空,也可能包含仅供 IBM 软件支持人员参考的英文文本。
用户响应
作为对此错误的响应,执行以下故障诊断步骤:
- Windows 操作系统:
禁用反病毒或防火墙软件。
如果在安装了 DB2 数据库的计算机上安装了反病毒或防火墙软件并且正在运行此软件,请将该反病毒或防火墙软件禁用并再次执行此语句,以确定问题是否由该反病毒或防火墙软件引起。
如果禁用反病毒或防火墙软件可以解决问题,请为下列与 DB2 数据库相关的目录添加例外情况,然后再次启用该反病毒或防火墙软件:
- “IBM\\sqllib”- DB2 数据库应用程序文件
- “IBM\\DB2”- 数据库管理器实例
- “<install-drive>\\DB2”- 数据库分区目录
- 迁移和升级场景:
使用 RUNSTATS 命令来更新统计信息,然后再次执行此语句。
- 联合环境:
- 确定是联合数据源还是联合数据库服务器返回了错误。
- 收集诊断信息,并执行返回了错误的数据源或联合数据库服务器的相应故障诊断步骤。
请参考返回了错误的数据源或联合数据库服务器的相应诊断和故障诊断参考信息,这是因为,数据源的问题确定过程有所不同。
执行上述故障诊断步骤后,如果仍发生错误,请与 IBM 软件支持人员联系以寻求帮助:
- 使用 DB2 跟踪和“独立跟踪工具”之类的跟踪工具来收集诊断信息。
- 收集以下诊断信息:
- 问题描述
- SQLCODE
- 原因:原因
- SQLCA 内容(如果有可能)
- 跟踪文件(如果有可能)。
- 与 IBM 软件支持人员联系。
sqlcode:-901
sqlstate:5UA0L 和 58004
SQL0902C 发生了系统错误。无法处理后续的 SQL 语句。IBM 软件支持原因码:原因码。
说明
当数据库管理器遇到关键错误(例如严重的操作系统错误)或者访问存储介质时发生错误(这可能导致数据库不再可用)时,将返回此消息。数据库管理器可能会在不同的场景中遇到操作系统错误或严重的介质错误。以下是可能返回此消息的场景的一个示例:
- 当数据库管理器资源需要信标,但没有足够的信标可满足请求时,可能会返回此消息。
运行时标记 原因码 有时可能为空,并且仅用于为 IBM 软件支持人员提供帮助。
用户响应
作为对此消息的响应,执行以下故障诊断步骤:
- 查看 db2diag 日志文件中的诊断信息,以确定返回此消息前发生的错误。
- 如果 db2diag 日志文件中的消息指出请求使用的信标过多,或者没有足够的信标可用于满足数据库管理器请求,请使用操作系统参数增大信标数目。
执行上述故障诊断步骤后,如果仍发生错误,请与 IBM 软件支持人员联系以寻求帮助:
- 使用 DB2 跟踪和“独立跟踪工具”之类的跟踪工具来收集诊断信息。
- 收集以下诊断信息:
- 问题描述
- SQLCODE
- 原因:原因
- SQLCA 内容(如果有可能)
- 跟踪文件(如果有可能)
- 与 IBM 软件支持人员联系。
联合系统用户:找出导致请求失败的数据源中的问题,并对该数据源执行必需的诊断步骤。数据源的问题确定过程各有不同,因此参阅适用的数据源手册。
sqlcode:-902
sqlstate:58005
SQL0903N COMMIT 语句失败,事务已回滚。原因码:原因码。
说明
一个或多个参与当前工作单元的服务器无法准备数据库,因此无法进行落实。COMMIT 语句已失败,事务已回滚。如果只有一台服务器参与当前工作单元,那么表示可能已落实该事务。
可能的原因码是:
- 01
与其中一个参与工作单元的数据库的连接丢失。
- 02
访问了其中一个参与工作单元的数据库或节点,但无法预编译落实。
联合系统用户:如果您连接的数据库是使用昵称的联合服务器数据库,那么无法预编译落实昵称所必需的其中一个数据源。
- 03
无法预编译落实参与工作单元的 DB2 Data Links Manager。
- 04
已创建或者已声明的一个或多个临时表处于不一致状态。
- 05
发生了意外错误。查阅管理通知日志以了解详细信息。
联合系统用户:如果您连接的数据库是使用昵称的联合服务器数据库,那么与数据库中的昵称所必需的其中一个数据源的连接丢失。
- 06
无法将再同步信息发送至其中一个参与者。该参与者只支持 IPv4。请对该参与者启用双堆栈方式。
用户响应
如果丢失了与数据库的连接,那么重新建立连接。如果故障与连接无关,那么参阅远程系统上的错误诊断日志以确定故障的性质以及可能需要的操作。重新运行应用程序。
sqlcode:-903
sqlstate:40504
SQL0904N 执行不成功是由不可用的资源导致的。原因码:原因码,资源类型:资源类型,资源名称:资源名称。
说明
因为类型为 资源类型 的资源 资源名称 当时不可用,所以不能执行 SQL 语句,资源不可用的原因由 原因码 指示。请参阅 DB2 MVS 版的“问题确定”文档,以获取有关资源类型代码的说明。
用户响应
验证不可用的资源的标识。要确定资源不可用的原因,请参阅指定的 原因码。
sqlcode:-904
sqlstate:57011
SQL0905N 由于超过资源限制,因此执行不成功。资源名称 = 资源名称,限制 = 限制量-1 CPU 秒(限制量-2 服务单元)由 限制源 派生的。
说明
因为超过资源限制,SQL 语句的执行被终止。
超过限制的资源的名称是 资源名称。它也是资源限制规范表中的列的名称,限制就是从该表派生出来的。在 CPU 秒数中,超过的限制是 限制量-1,在服务单元中,它是 限制量-2。资源名称 可能是 ASUTIME,它是每条 SQL 语句所允许的 CPU 秒数。允许的最大 CPU 秒数为 限制量-1。最大服务单元数为 限制量-2。
用来派生限制量的源为 限制源,它是资源限制规范表或“系统参数”的名称。如果该源是系统参数,那么资源限制规范表不包含可用的条目或访问该表时发生了错误。在任一情况下,该限制都是从安装(系统)参数中获得的。
用户响应
确定为何此 SQL 语句需要这样长的时间并执行适当的操作。考虑简化该 SQL 语句、重构表和索引、或者与负责维护该资源限制规范表的安装组联系。
接收此返回码的应用程序可以执行附加的 SQL 语句。
sqlcode:-905
sqlstate:57014
SQL0906N 不能执行 SQL 语句,因为先前的错误导致此函数被禁用。
说明
执行 SQL 语句失败,因为先前的错误导致所请求的函数被禁用。如果应用程序拦截到一个异常结束(例如,由 PL/I 程序中的 ON ERROR 条件引起)时继续执行 SQL 语句,可能就会发生这种情况。如果 DB2 CICS 事务遇到创建线程错误时仍继续发出 SQL 请求而不先发出 SYNCPOINT ROLLBACK,也可能会发生这种情况。
用户响应
一般情况下,应用程序一旦收到此返回码就应终止。 该应用程序执行其他 SQL 语句的所有后续尝试也将失败并带有相同的返回码。对于 DB2 CICS 事务,如果 SQLCA 中的 SQLERRP 字段中包含模块名 DSNCEXT1,那么该事务可能会发出 SYNCPOINT ROLLBACK 并继续处理。 如果该事务选择 ROLLBACK 并继续处理,那么它必须能更正最初导致发生创建线程错误的那些情况。
sqlcode:-906
sqlstate:24514, 51005, 58023
SQL0907N 已尝试通过约束或触发器 名称 来修改 MERGE 语句的目标表 表名。
说明
MERGE 语句导致激活了约束或触发器 名称,该约束或触发器尝试对还作为该 MERGE 语句目标表的表 表名 或位于同一个表层次结构中的表执行更新、插入或删除。这是不允许的。
用户响应
更改 MERGE 语句以除去导致激活约束或触发器的操作,或改变带有约束或触发器的表以除去对目标表的引用。
sqlcode:-907
sqlstate:27000
SQL0908N 使用 授权标识 权限 BIND 或 REBIND 时发生 绑定类型 错误,或不允许 AUTO_REBIND 操作。
说明
- bind-type
- 绑定操作类型(BIND、REBIND 或 AUTO-REBIND)。
- 授权标识
- BIND 子命令的调用程序的授权标识,或者是计划执行 AUTO-REBIND 操作的调用程序的主授权标识。
用户响应
如果应该允许绑定所指示的授权标识,那么更改活动的 RLST 表中的该条目。 如果禁用 AUTO-REBIND 操作,那么在重新执行程序包之前,重新绑定该程序包。
sqlcode:-908
sqlstate:23510
SQL0909N 对象已删除。
说明
应用程序(1)删除了表,然后尝试访问它,或者,(2)删除了索引,然后尝试使用该索引来访问其对象表。
用户响应
必须更正应用程序的逻辑,以便使它在被删除之后,不要尝试访问或使用对象。
删除应用程序中的索引是相当危险的,因为没有方法可以确定(通过 BIND 或 REBIND)为该应用程序实际生成的计划是否使用特定的索引来访问其对象表。
sqlcode:-909
sqlstate:57007
SQL0910N SQL 语句不能访问在其上的修改被暂挂的对象。
说明
应用程序尝试访问同一工作单元中的对象,在该工作单元中:
- 应用程序向对象或相关对象(例如,表索引)发出了 DROP
- 应用程序向添加或删除约束的对象发出一条语句。
- 应用程序发出直接或间接影响对象的 DROP TRIGGER 或 CREATE TRIGGER 语句。
- 应用程序发出了 ROLLBACK TO SAVEPOINT 语句,它将对象置于修改暂挂状态。
- 应用程序发出了一条语句,它导致已创建的 NOT LOGGED 临时表或者已声明的 NOT LOGGED 临时表的所有行都被删除。
- 应用程序向对象(在此例中是一个表)发出了 ALTER TABLE ... ADD PARTITION、ALTER TABLE ... ATTACH PARTITION 或者 ALTER TABLE ... DETACH PARTITION 语句。如果工作单元中包含一个 ALTER TABLE ... ATTACH PARTITION,那么以后在同一个工作单元中就不能对同一个表执行 ALTER TABLE ... DETACH PARTITION。
- 应用程序发出了 DETACH 以便在一个分区 MDC 表中的一个数据分区中创建此对象。
- 应用程序发出了一个 SQL 语句来尝试访问一个可信上下文对象,而对该对象进行的修改却处于暂挂状态。该 SQL 语句可能是下面的其中一个:
- ALTER TRUSTED CONTEXT
- CREATE TRUSTED CONTEXT
- DROP TRUSTED CONTEXT
- 应用程序已发出 CREATE USER TEMPORARY TABLESPACE 语句或 ALTER TABLESPACE 语句。如果工作单元包含 CREATE USER TEMPORARY TABLESPACE 语句或 ALTER STATEMENT 语句,那么在同一工作单元中,以后不能进行将致使表被实例化的已创建临时表引用。
或者,应用程序发出了一个 SQL 语句来尝试访问一个 WLM 对象,而对该对象进行的修改却处于暂挂状态。该 SQL 语句可能是下面的其中一个:
- ALTER HISTOGRAM TEMPLATE
- ALTER THRESHOLD
- ALTER SERVICE CLASS
- ALTER WORK ACTION
- ALTER WORK CLASS
- ALTER WORKLOAD
- CREATE HISTOGRAM TEMPLATE
- CREATE THRESHOLD
- CREATE SERVICE CLASS
- CREATE WORK ACTION
- CREATE WORK CLASS
- CREATE WORKLOAD
- 对以下任何对象执行 DROP 操作:HISTOGRAM TEMPLATE、THRESHOLD、SERVICE CLASS、WORK ACTION、WORK CLASS 和 WORKLOAD
- GRANT(工作负载特权)
- REVOKE(工作负载特权)
联合系统用户:除了前面列示的原因之外,还可能存在导致无法访问该对象的其他数据源特定限制。
不能处理 SQL 语句。
用户响应
修改应用程序,以使在执行修改的同一工作单元里没有尝试访问对象。总的说来,隔离不同工作单元中的“数据定义语言”(DDL) 语句比隔离访问相同对象的“数据操作语言”(DML) 语句要好。
在可以成功地处理失败的语句之前,必须落实或回滚工作单元。如果落实的修改导致要删除对象,那么可能必须重新创建该对象才能使失败的 SQL 语句处理成功。
如果对象是在 SAVEPOINT 内修改的,那么修改应用程序,以使在应用程序发出 ROLLBACK TO SAVEPOINT 语句之后,它不会尝试访问该对象。访问已修改对象且在 ROLLBACK TO SAVEPOINT 时处于打开状态的任何游标将不可访问。修改应用程序,以使它关闭该游标。
如果涉及已创建的 NOT LOGGED 临时表或者已声明的 NOT LOGGED 临时表的插入、删除或更新语句失败,那么该表中的所有行都被删除。在发生故障时,针对该表打开的任何游标都将不可访问并且应该由应用程序关闭。
如果 ALTER TABLE ... DETACH PARTITION 因暂挂的 ALTER TABLE ... ATTACH PARTITION 而失败,那么应使用两个不同的工作单元来执行这两项操作。
如果该 SQL 语句尝试访问一个可信上下文对象,那么稍后重新发出该语句。
如果该 SQL 语句尝试访问一个 WLM 对象,那么稍后重新发出该语句。
联合系统用户:如果前面的操作无法解决该问题,那么找出请求,并确定数据源还存在哪些约束会导致无法访问该对象。确保应用程序未违反任何那些约束。
sqlcode:-910
sqlstate:57007
SQL0911N 因为死锁或超时,所以当前事务已回滚。原因码:原因码。
说明
当前工作单元参与了未解决的对象争用,因此必须回滚。
原因码如下所示:
- 2
由于死锁而导致事务已回滚。
- 68
由于锁定超时而导致事务已回滚。
- 72
由于存在与事务中所涉及的 DB2 Data Links Manager 错误,所以事务已回滚。
- 73
由于 CONCURRENTDBCOORDACTIVITIES 阈值之类的排队阈值导致两个或更多活动进入死锁状态,所以事务已回滚。
- 74
与原因码 73 相似,由于两个或更多个活动进入死锁状态,所以事务已回滚。
- 75
由于两个或更多应用程序在等待由工作负载管理器许可控制和锁定进行管理的资源组合时发生死锁,所以事务已回滚。
- 76
事务已回滚,因为两个或更多应用程序在等待由工作负载管理器许可控制管理的资源时发生死锁。
应用程序已回滚至上一次 COMMIT 操作。
用户响应
必须再次输入与工作单元相关的更改。
为了帮助避免死锁或锁定超时,对长时间运行的应用程序或有可能遇到死锁的应用程序频繁发出 COMMIT 操作(如果有可能)。
联合系统用户:联合服务器或数据源处可能会发生死锁。没有检测跨越数据源并潜在地跨越联合系统的死锁的机制。有可能标识使请求失败的数据源(请参阅 Problem Determination Guide 以确定哪一个数据源使 SQL 语句的处理失败)。
当处理 SQL 语句的某些组合时,通常会发生死锁或者预期会发生死锁。建议您设计应用程序来尽可能避免死锁。
如果因为排队阈值(例如,CONCURRENTDBCOORDACTIVITIES 阈值)太小而进入死锁状态,请增大排队阈值。
如果因为应用程序正在等待由工作负载管理器许可控制管理的资源而进入死锁状态,请增大正在其中执行应用程序的最后一个语句的服务类的 resourceshare。如果要帮助避免(涉及工作负载管理器许可控制管理的)资源的死锁,请关闭不再需要的 SQL 游标以减小应用程序中并行执行的 SQL 语句数。
sqlcode:-911
sqlstate:40001
SQL0912N 已经达到数据库的锁定请求的最大数目。原因码:原因码。
说明
由于用于锁定请求的内存不足,因此已达到数据库的最大锁定数。
原因码指示已达到的内存限制的类型:
- 1
局部锁定管理器内存,使用 LOCKLIST 数据库配置参数来配置。
- 2
全局锁定管理器内存,使用 CF_LOCK_SZ 数据库配置参数来配置。
无法处理该语句。
用户响应
在提交其他 SQL 语句前,应用程序应该提交 COMMIT 或 ROLLBACK 语句。请考虑增大原因码所指示的数据库配置参数的值,以支持更多锁定请求。
- 1
增大 LOCKLIST 数据库配置参数的值,此参数管理为局部锁定管理器所分配的锁定内存。
- 2
增大 CF_LOCK_SZ 数据库配置参数的值,此参数管理为全局锁定管理器所分配的锁定内存。
sqlcode:-912
sqlstate:57011
SQL0913N 死锁或超时导致执行分布式事务不成功。原因码:原因码。
说明
分布式事务发出的请求涉及到未解决的争用(与使用对象有关),执行失败。
原因码如下所示:
- 2
由于死锁而导致事务分支失败。
- 68
由于锁定超时而导致事务分支失败。
- 72
由于存在参与事务的 DB2 Data Links Manager 有关的错误,因此事务已回滚。
- 80
由于超时而导致语句失败。
根据数据库服务器或客户机的版本和平台的不同,此消息的正文和运行时标记可能有所变化。
用户响应
- 对于原因码 80,您可以再次尝试运行失败的语句而不用终止应用程序。如果应用程序访问多个远程数据库,那么回滚事务来避免全局死锁的可能性可能更好。
- 对于其他原因码,发出请求以回滚事务。因为当前事务分支失败,所以事务不能落实。
- 为了帮助避免死锁或锁定超时,如果可能,在长时间运行的应用程序或需要高度并发访问数据的应用程序里,频繁发出 COMMIT 操作。
sqlcode:-913
sqlstate:57033
SQL0917N 绑定程序包失败。
说明
发生了阻止创建程序包的错误。
此 SQLCODE 可能会在绑定处理或落实处理期间发出。如果是在落实处理期间发出,那么会回滚对数据库作出的所有更改。如果是在绑定处理期间发出,那么只有程序包创建操作会失败,在该逻辑工作单元内作出的其他更改仍然可落实。
用户响应
此问题通常是由于一个或多条 SQL 语句因错误而未被绑定引起的。
确定哪些语句导致错误并纠正这些语句。重新发出该命令以创建程序包。
sqlcode:-917
sqlstate:42969
SQL0918N 应用程序必须执行回滚。
说明
在数据库中已回滚了工作单元,但是可能未回滚涉及到此工作单元中的其他资源管理器。为了确保此应用程序的完整性,在应用程序发出回滚之前将拒绝所有 SQL 请求。
用户响应
在应用程序发出回滚之前,所有 SQL 请求都将被拒绝。例如,在 CICS 环境中,这将是 CICS SYNCPOINT ROLLBACK 命令。
sqlcode:-918
sqlstate:51021
SQL0920N 不能从其他数据库客户机系统中访问数据库客户系统的数据。
说明
已将工作站配置为客户机或具有本地客户机的服务器。其他工作站不能共享在此系统中创建的任何数据库。
不能处理该函数。
用户响应
仅从服务器工作站中请求数据。
sqlcode:-920
sqlstate:57019
SQL0925N SQL COMMIT 对应用程序执行环境无效。
说明
- 在“分布式事务处理”环境中(例如,CICS)尝试执行静态 SQL COMMIT 语句,但是需要特定于环境的落实语句。例如,在 CICS 环境中,这将是 CICS SYNCPOINT 命令。
- 已经预编译或者设置为在“非 TP 监视器”环境中使用 CONNECT 2 的 DB2 应用程序发出了动态 SQL COMMIT 语句,然而,只允许静态 SQL COMMIT。
- 当从存储过程中发出时,如果调用程序正在分布式工作单元或“分布式事务处理”环境中执行,那么也不允许 SQL COMMIT。
用户响应
- 除去发出 COMMIT 的语句,并用作为环境的有效等价物的语句来替换它
- 对于“非 TP 监视器”环境中 CONNECT 的 2 类连接,仅使用静态 COMMIT。
- 对于存储过程,除去 COMMIT
sqlcode:-925
sqlstate:2D521
SQL0926N SQL ROLLBACK 对于应用程序执行环境无效。
说明
- 在“分布式事务处理”环境中(例如,CICS)尝试执行静态 SQL ROLLBACK 语句,但是需要特定于环境的回滚语句。例如,在 CICS 环境中,这将是 CICS SYNCPOINT ROLLBACK 命令。
- 已经预编译或设置为使用 CONNECT 2 的 DB2 应用程序已发出动态 SQL ROLLBACK 语句,然而,仅允许静态 SQL ROLLBACK。
- 当从存储过程发出时,如果调用程序正在分布式工作单元(CONNECT 的 2 类连接)或“分布式事务处理”环境中执行,那么还将限制 SQL ROLLBACK。
用户响应
- 除去发出 ROLLBACK 的语句,并用作为环境的有效等价物的语句来进行替换。
- 对于 2 类连接,仅使用静态 COMMIT。
- 对于存储过程,将它完全除去。
sqlcode:-926
sqlstate:2D521
SQL0930N 没有足够的存储空间可用来处理语句。
说明
请求了需要其他内存页的数据库,但是,没有更多页可用于数据库管理器。
无法处理该语句。
用户响应
可以采用的解决方案包括:
- 验证系统是否有足够的实际内存和虚拟内存。
- 除去后台进程。
- 如果在 DUOW 再同步期间出错,请减小 RESYNC_INTERVAL 数据库管理器配置参数值。
- 如果错误发生在引用例程(UDF、存储过程或方法)的语句上,那么可能是包含自变量和返回值所需要的存储量大于系统上的可用内存。如果例程是使用 BLOB、CLOB、DBCLOB 参数或返回值定义的,具有很大的大小(例如 2GB),可能会发生此情况。
如果这些解决方案无法解决问题,那么可能需要考虑更改例程的定义。
sqlcode:-930
sqlstate:5UA0L 和 57011
SQL0931C 发生操作系统文件表溢出。无法处理后续的 SQL 语句。
说明
已达到操作系统的限制。应用程序不允许发出附加的 SQL 语句。数据库被标记为需要恢复,并且阻止使用数据库的所有应用程序访问该数据库。
用户响应
终止使用数据库的所有应用程序。重新启动数据库。
- 将 MAXFILOP 数据库配置参数更改为较小的值(这将减少 DB2 对操作系统文件表的使用),和/或
- 如果适当,那么终止其他正在使用文件的应用程序,和/或,
- 请参阅有关增大操作系统文件表限制的操作系统文档。在大多数 UNIX 环境中,这可通过用一个更大值更新内核配置来完成。(在 AIX 上,只能通过增加机器中的内存量来使之成为可能)。
sqlcode:-931
sqlstate:58005
SQL0949N UTL_FILE 模块例程尝试执行无效的操作系统操作。操作系统错误:错误文本。
说明
UTL_FILE 模块例程尝试执行的操作导致操作系统返回 错误文本 所指示的错误。
用户响应
请参阅操作系统错误消息信息,以确定如何解决 错误文本 所报告的问题。
sqlcode:-949
sqlstate:58024
SQL0950N 不能删除表或索引,因为当前正在使用。
说明
当打开的游标正在使用表或索引时,不能发出 DROP TABLE 或 DROP INDEX 语句。
无法处理该语句。未删除表或索引。
用户响应
关闭任何需要的游标并重新提交该语句。
sqlcode:-950
sqlstate:55006
SQL0951N 不能改变类型为 对象类型 的对象 对象名,因为它当前正被同一应用程序进程使用。
说明
当一个对象被锁定或者正在使用时,不能对该对象发出 ALTER、SET INTEGRITY 或 TRUNCATE 语句。
无法处理该语句。未改变该对象。
用户响应
关闭那些直接或间接依赖于对象 对象名 的任何游标并重新提交该语句。
sqlcode:-951
sqlstate:55007
SQL0952N 由于中断而取消处理。
说明
用户可能按了中断键序列。
终止语句处理。在发生终止之前,可能已对数据库应用了某些更改,但未落实。
如果由于查询超时而导致调用级接口(CLI)发出中断命令,那么您也会接收到此错误。例如:如果应用程序使用 SQLSetStmtAttr() 函数将 SQL_ATTR_QUERY_TIMEOUT 语句属性配置为一个非零值,且 SQL 语句或 XQuery 表达式未在指定时间内完成,那么 CLI 就会发出中断指令以取消执行并返回到应用程序。
联合系统用户:数据源也可能会检测到此情况。
用户响应
继续执行应用程序。
如果正在安装样本数据库,那么删除它并再次安装样本数据库。
如果您想阻止 CLI 在发生查询超时的情况下发出中断指令,那么可以通过在 db2cli.ini 文件中设置 QUERYTIMEOUTINTERVAL=0 来禁止查询超时行为。除非在服务器中设置了死锁或锁定等待超时值,否则禁止查询超时行为就会允许查询完成运行。
sqlcode:-952
sqlstate:57014
SQL0954C 应用程序堆中没有足够的存储空间可用来处理语句。
说明
使用了应用程序的所有可用内存。
无法处理该语句。
用户响应
接收到此消息时,终止应用程序。如果 applheapsz 数据库配置参数已设置为 AUTOMATIC,您将需要增大 APPL_MEMORY 数据库配置设置的值,或者增大 INSTANCE_MEMORY 数据库管理器配置设置的值。否则,请增大 applheapsz 数据库配置参数的值以允许更大的应用程序堆。
db2 UPDATE DB CFG FOR sample USING APPLHEAPSZ 4000如果所有相关联的配置参数都设置为 AUTOMATIC 或 COMPUTED,那么实例的内存需求将超过机器上配置的内存量。可以采用的解决方案包括减少数据库工作负载、启用连接集中器功能部件或者向机器添加更多内存。
sqlcode:-954
sqlstate:57011
SQL0955C 无法分配排序内存以处理语句。原因码:原因码。
说明
就像原因码所指示的那样,数据库代理程序没有足够虚拟内存可用,无法进行排序处理:
- 1
专用进程内存不足。
- 2
在数据库范围共享内存区中指定的共享内存不足以进行排序处理。
- 3
没有足够的共享内存可供对按列组织的表执行的查询使用。
无法处理此语句,但是可以处理其他 SQL 语句。
用户响应
要对此消息作出响应,请执行与每个原因码相对应的操作:
- 1
在实例或系统级别增加可用的内存资源。另外,也可以减少所配置的内存需求。例如,减小数据库配置参数 SORTHEAP 的值。
- 2
在数据库、实例或系统级别增加可用的内存资源。另外,也可以减少所配置的内存需求。例如,减小数据库配置参数 SORTHEAP 的值。
- 3
增大数据库配置参数 SORTHEAP 的值。可能需要增大更高级别的数据库配置参数(例如 SHEAPTHRES_SHR)的设置。
sqlcode:-955
sqlstate:57011
SQL0956C 数据库堆中没有足够的存储空间可用来处理语句。
说明
使用了数据库的所有可用内存。
无法处理该语句。
用户响应
接收到此消息时,终止应用程序。
增大数据库配置参数 dbheap 的值以允许更大的数据库堆。如果 I/O 服务器数接近上限,那么减小此数目可能也会有所帮助。
如果 dbheap 数据库配置参数已设置为 AUTOMATIC,您将需要增大 DATABASE_MEMORY 数据库配置设置的值,或者增大 INSTANCE_MEMORY 数据库管理器配置设置的值。
更新配置参数时,建议更改这些参数的值。每次将它们增大当前大小的 10%,直到错误情况得到解决为止。要更改 dbheap,请输入一个类似如下的命令,该命令对数据库样本将 dbheap 设置为 2400:
db2 UPDATE DB CFG FOR sample
USING DBHEAP 2400
要在已与数据库断开连接的情况下更改 dbheap,请输入一个类似如下的命令:
db2 CONNECT RESET;
db2 UPDATE DB CFG FOR sample
USING DBHEAP 2400
如果所有相关联的配置参数都设置为 AUTOMATIC 或 COMPUTED,那么实例的内存需求将超过机器上配置的内存量。可以采用的解决方案包括减少数据库工作负载、启用连接集中器功能部件或者向机器添加更多内存。
sqlcode:-956
sqlstate:57011
SQL0958C 已达到最大打开文件数。
说明
已经达到数据库可用的最大文件句柄数。
无法处理该语句。
用户响应
增大影响在数据库位置上所允许的打开文件最大数目的任何参数。这包括增大配置参数(maxfilop)的值以允许将更多文件句柄用于实例,以及终止其他会话以减少使用的文件句柄数。
sqlcode:-958
sqlstate:57009
SQL0959C 在服务器的通信堆中没有足够的存储空间可用来处理语句。
说明
已使用在服务器通信堆中的所有可用内存。
不能处理该命令或语句。
用户响应
接收到此消息时,终止应用程序。增大服务器工作站数据库管理器配置文件中通信堆 ( comheapsz) 参数的大小。
注意:此消息仅适用于版本 2 之前的 DB2 发行版。
sqlcode:-959
sqlstate:57011
SQL0960C 在使用以下名称或标识 表空间列表 的表空间中创建的对象已达到最大数目。
说明
由于已达到该表空间的最大对象数,因此无法在该表空间中创建新对象。
用户响应
指定另一个表空间以便在其中创建该对象或表。如果该表空间是 SYSTEM TEMPORARY 表空间,那么表示已使用了太多的并发临时表。
sqlcode:-960
sqlstate:57011
SQL0964C 数据库的事务日志已满。
说明
已使用事务日志中的所有空间。
如果使用具有辅助日志文件的循环日志,那么尝试分配和使用这些日志。 当文件系统没有更多空间时,不能使用辅助日志。
如果使用归档日志,那么文件系统不提供空间来包含新日志文件。
当数据库几乎已用完所有可能的日志序号时,也会返回此消息。数据库管理器使用称为日志序号 (LSN) 的唯一标识来标识数据库日志记录。当事务导致写入数据库日志时,数据库将使用新的 LSN 值。
应用程序无法执行任何导致数据库写入日志记录的事务。
无法处理该语句。
用户响应
在接收到此消息(SQLCODE)时,执行 COMMIT 或 ROLLBACK,或再次尝试执行该操作。
如果并发应用程序正在更新数据库,那么再次尝试执行该操作。另一个应用程序完成事务后,可能会释放日志空间。
发出更频繁的落实操作。如果事务还未落实,那么当落实事务时,可能会释放日志空间。设计应用程序时,应考虑何时落实更新事务,以防止发生日志已满的情况。
如果发生死锁,那么更频繁地对它们进行检查。这可以通过减小数据库配置参数 DLCHKTIME 来实现。这将检测到死锁,并且很快解决(通过 ROLLBACK),这将释放日志空间。
如果经常发生这种情况,那么增大数据库配置参数以允许更大的日志文件。更大的日志文件需要更多空间,但是减少了应用程序再次尝试执行该操作的需要。可能需要调整的事务配置参数是 LOGFILSIZ、LOGPRIMARY 和 LOGSECOND。
如果正在安装样本数据库,那么删除它并再次安装样本数据库。
如果由于数据库几乎用完所有可能的 LSN 值而返回此消息,那么您可以通过执行以下操作将 LSN 值重置为零:
- 卸载数据库中的所有数据
- 删除并重新创建数据库
- 装入所有数据
sqlcode:-964
sqlstate:57011
SQL0965W 在此工作站上的消息文件中没有与 SQL 警告 sqlcode 相对应的消息正文。该警告是从模块 名称 中返回的,原始标记为 标记列表。
说明
数据库服务器将代码 sqlcode 返回给应用程序。警告代码与此工作站上的 DB2 消息文件中的消息不对应。
用户响应
请参阅数据库服务器文档以了解有关所指定 SQLCODE 的更多信息。
SQL0966N 找不到或打不开“数据库连接服务”目录中指定的错误映射文件 名称。
说明
- 错误映射文件不存在。
- 错误映射文件当前被另一个应用程序打开。
- 错误映射文件未定位于期望的路径中。
- 错误映射文件被毁坏。
检索不到错误映射数据。
用户响应
从打开文件的应用程序中释放文件,或者重新安装或复原原始文件。
sqlcode:-966
sqlstate:57013
SQL0967N “数据库连接服务”目录中指定的错误映射文件 名称 的格式无效。
说明
当程序读取错误映射文件时出错。
检索不到错误映射数据。
用户响应
更正错误映射文件中的所有语法错误。
sqlcode:-967
sqlstate:55031
SQL0968C 文件系统已满。
说明
包含数据库的其中一个文件系统已满。此文件系统可能包含数据库目录、数据库日志文件或表空间容器。
在 DB2 pureScale 环境中,如果您正在将成员添加到数据库管理器实例,那么没有足够的磁盘空间来创建其他成员文件。
无法处理该语句。
用户响应
通过擦除不想要的文件来释放系统空间。不要擦除数据库文件。如果需要附加空间,那么可能有必要删除标识为不必需的表和索引。
在基于 UNIX 的系统中,此磁盘满状态可能是由于超过当前用户标识所允许的最大文件大小所导致的。使用 chuser 命令来更新 fsize。可能必须进行重新引导。
当容器大小不相同时,可能会导致出现磁盘已满的情况。如果文件系统中有充足的空间,那么删除该表空间并使用大小相等的容器重新创建。
如果无法处理的语句引用了 LOB 数据类型:
- 确保在应用程序中使用的任何游标在使用后被立即关闭。
- 确保应用程序中的 COMMIT 语句是周期性地执行的。
- 对系统临时表空间添加其他容器,以便在执行此语句期间保留临时 LOB 数据。
在 DB2 pureScale 环境中,请通过擦除不需要的文件释放系统空间或者向文件系统添加容量,然后重新运行此命令。
sqlcode:-968
sqlstate:57011
SQL0969N 在此工作站上的消息文件中没有与 SQL 错误 错误 相对应的消息文本。该错误是从模块 名称 中返回的,原始标记为 标记列表。
说明
数据库服务器将 SQLCODE 错误 返回给应用程序。该错误代码与此工作站上的 DB2 消息文件中的消息不对应。
用户响应
请参阅数据库服务器文档以了解有关所指定 SQLCODE 的信息。执行数据库服务器文档中指定的操作来修正此问题。
联合系统用户:找出导致请求失败的数据源中的问题。 在数据源上的适用手册中查找 错误。如果该问题与数据相关,那么可能有必要检查出错时正在数据源上处理的数据。
SQL0970N 系统尝试写入只读文件。
说明
数据库使用的文件被标记为只读,或不存在。数据库需要对此文件进行写访问。
无法处理该语句。
用户响应
接收到此消息(SQLCODE)后就终止应用程序。确保所有数据库文件都允许读和写访问权。检查指定文件名中不必要的空格。
sqlcode:-970
sqlstate:55009
SQL0972N 数据库驱动器中是不正确的软盘。
说明
驱动器中的软盘不是数据库软盘。
无法处理该语句。
用户响应
将所需的软盘放入驱动器中。如果应用程序开始使用驻留在软盘中的数据库,那么不要取出软盘。
sqlcode:-972
sqlstate:57019
SQL0973N 在 堆名 堆或堆栈中没有足够的存储空间可用来处理语句。
说明
已使用此堆的所有可用内存。
无法处理该语句。
用户响应
接收到此消息(SQLCODE)后就终止应用程序。修改配置参数 堆名称 以增大堆或堆栈大小。
如果配置参数 堆名称 已设置为 AUTOMATIC,您将需要增大 APPL_MEMORY 数据库配置设置的值、DATABASE_MEMORY 数据库配置设置的值或者 INSTANCE_MEMORY 数据库管理器配置设置的值。否则,修改配置参数 堆名称 的值以增大堆大小。
程序包高速缓存和目录高速缓存具有软限制。对于这些限制,您将需要提高 DATABASE_MEMORY 数据库配置设置或 INSTANCE_MEMORY 数据库管理器配置设置。
修改 DATABASE_MEMORY 数据库配置参数时,将此参数设置为 AUTOMATIC 会告知数据库管理器自动地管理数据库内存。
对于应用程序共享堆大小,您将需要增大 APPL_MEMORY 数据库配置设置的值,或者增大 INSTANCE_MEMORY 数据库管理器配置设置的值。
更新配置参数时,建议更改这些参数的值。每次将它们增大当前大小的 10%,直到错误情况得到解决为止。
例如,如果 堆名称 为 UTIL_HEAP_SZ 且数据库名称为 TORDB1,要将此数据库配置参数更新为 10000,那么应发出以下命令:
db2 update db cfg
for TORDB1
using UTIL_HEAP_SZ 10000
要查看数据库配置参数的列表,使用 GET DATABASE CONFIGURATION 命令。
要更新数据库管理器配置参数,将 MON_HEAP_SZ 设置为新大小 100,发出以下命令:
db2 update dbm cfg
using MON_HEAP_SZ 100
要查看数据库管理器配置参数的列表,使用 GET DATABASE MANAGER CONFIGURATION 命令。
如果所有相关联的配置参数都设置为 AUTOMATIC 或 COMPUTED,那么实例的内存需求将超过机器上配置的内存量。可以采用的解决方案包括减少数据库工作负载、启用连接集中器功能部件或者向机器添加更多内存。
sqlcode:-973
sqlstate:57011
SQL0974N 包含数据库的驱动器被锁定。
说明
系统报告说明包含数据库的驱动器已锁定。
无法处理该语句。
用户响应
确保系统上没有发生可以锁定驱动器的其他处理(例如,CHKDSK)。再次尝试执行该操作。
如果正在安装样本数据库,那么删除它并再次安装样本数据库。
sqlcode:-974
sqlstate:57020
SQL0975N 不能启动新事务,因为数据库或实例 名称 被用户 用户名 停顿。停顿类型:类型。
说明
另一个用户已停顿您正在尝试使用的实例或数据库,在实例或数据库不再处于停顿状态之前,不允许新事务。
停顿类型 类型 指的是已停顿的实例或数据库,对于实例是“1”,对于数据库是“2”。
用户响应
与当前已停顿该实例或数据库的用户联系,以确定该实例或数据库何时将不再处于停顿状态,并在那时重试此请求。
sqlcode:-975
sqlstate:57046
SQL0976N 指定的 I/O 设备未就绪。
说明
该 I/O 设备或介质未就绪,无法接受 I/O 命令。
无法处理该语句。
用户响应:
确保该 I/O 设备或介质就绪,然后再次尝试执行该操作。
用户响应
sqlcode:-976
sqlstate:57021
SQL0977N COMMIT 状态未知。
说明
tm_database 在 COMMIT 处理期间已变得不可用,这已导致 COMMIT 的结果未知。当 tm_database 可用时,将发生数据库再同步。注意,在再同步期间,可能已回滚了事务。可安全地进一步执行锁定 SQL 语句,然而,在完成再同步进程之前,锁定可能会被一直挂起。
用户响应
验证是否可以连接 tm_database,例如,通过使用 CLP。如果不能连接,那么遵循返回的 SQLCODE 所必需的操作以确保可以建立连接。
sqlcode:-977
sqlstate:40003
SQL0978N 存储介质处于写保护状态。
说明
尝试对数据库执行写操作,但数据库存储介质处于写保护状态。
无法处理该语句。
用户响应
验证是否正在使用正确的存储介质。必要时,撤销对存储介质的写保护。
sqlcode:-978
sqlstate:55009
SQL0979N 对于运行时 SYNCPOINT 为 NONE 的应用程序进程,COMMIT 已对 数目 个数据库失败。故障包括下列数据库别名和 SQLSTATE 对(最多可以返回四对):别名/SQLSTATE1、别名/SQLSTATE2、别名/SQLSTATE3 和 别名/SQLSTATE4。
说明
应用程序连接至多个数据库,发出了 COMMIT,但对于其中一个或多个这些连接失败。
联合系统用户:如果其中一个失败的连接是使用昵称的联合服务器数据库,那么对昵称所需的其中一个数据源进行落实失败。
用户响应
根据应用程序和正在更新的数据的性质,用户可能希望停止正在执行的处理,记录故障,并发出适当的 SQL 以确保所涉及的所有数据库都一致反映应用程序预编译执行的更改。
如果不能返回受 COMMIT 错误影响的数据库的完整列表,请参阅完整列表的诊断日志。
sqlcode:-979
sqlstate:40003
SQL0980C 发生了磁盘错误。无法处理后续的 SQL 语句。
说明
发生磁盘错误,将阻止成功执行当前的和后续的 SQL 语句。应用程序不允许发出附加的 SQL 语句。例如,与应用程序相关的恢复例程不能发出附加的 SQL 语句。数据库被标记为需要恢复,并且阻止使用数据库的所有应用程序访问该数据库。
无法处理该语句。
用户响应
记录来自 SQLCA 的所有错误信息(如果有可能)。终止使用数据库的所有应用程序。确定错误是否是硬件错误。重新启动数据库。如果不能恢复,那么根据备份副本复原数据库。
如果正在安装样本数据库,那么删除它并再次安装样本数据库。
sqlcode:-980
sqlstate:58005
SQL0982N 发生了磁盘错误。但是,可以处理后续的 SQL 语句。
说明
在处理临时系统文件期间发生磁盘错误,将阻止成功执行当前的 SQL 语句。但是,可以处理后续的 SQL 语句。
无法处理该语句。
用户响应
接收到此消息(SQLCODE)后就终止应用程序。
sqlcode:-982
sqlstate:58004
SQL0983N 事务日志不属于当前的数据库。
说明
存储在日志文件中的特征符与和数据库有关的特征符不匹配。当用户指定的存储日志文件的目录与存储数据库的目录不相同时,通常会发生此错误。可能涉及文件重定向。
无法处理该语句。
用户响应
用对日志文件的正确访问权重新提交命令。
sqlcode:-983
sqlstate:57036
SQL0984C COMMIT 或 ROLLBACK 不成功。无法处理后续的 SQL 语句。
说明
因为系统错误,而不能成功地处理落实或回滚操作。应用程序不允许发出附加的 SQL 语句。例如,与应用程序相关联的恢复例程可能不发出附加的 SQL 语句。数据库被标记为需要恢复,并且阻止使用数据库的所有应用程序访问该数据库。
无法处理该语句。
用户响应
记录消息号 (SQLCODE) 以及所有 SQLCA 错误信息(如果可能)。终止使用数据库的所有应用程序。重新启动数据库。如果正在安装样本数据库,那么删除它并再次安装样本数据库。
如果不能恢复,那么根据备份副本复原数据库。
如果跟踪是活动的,那么在操作系统命令提示符处调用“独立跟踪设施”。与技术服务代表联系并提供以下信息:
需要的信息:
- 问题描述
- SQLCODE
- SQLCA 内容(如果有可能)
- 跟踪文件(如果有可能)。
联合系统用户:找出导致请求失败的数据源中的问题,并对该数据源执行必需的诊断步骤和数据库恢复过程。各个数据源的故障诊断过程和数据库恢复过程各有不同,因此请参阅适用的数据源手册。
sqlcode:-984
sqlstate:58005
SQL0985C 处理数据库目录时发生文件错误。数据库不可用。
说明
系统不能从目录文件上的 I/O 错误恢复。
系统不能处理使用数据库的任何语句。
用户响应
根据备份副本复原数据库。
如果正在安装样本数据库,那么删除它并再次安装样本数据库。
sqlcode:-985
sqlstate:58005
SQL0986N 处理用户表时发生文件错误。此表不可使用。
说明
表中的数据不再有效。
系统不能处理使用此表的任何语句。
用户响应
如果数据库不一致,那么根据备份版本复原数据库。
如果正在安装样本数据库,那么删除它并再次安装样本数据库。
sqlcode:-986
sqlstate:58004
SQL0987C 不能分配应用程序控制共享内存集。
说明
- 系统中分配的共享内存标识数。
- 系统中可用的调页空间量或交换空间量。
- 系统中可用的物理内存量。
用户响应
- 确保有足够的内存资源可用于满足数据库管理器的需求和在系统上运行的其他程序的需求。
- 通过减小数据库配置参数 app_ctl_heap_sz 来减小此内存集对数据库管理器内存的需求。
- 减小数据库配置参数 dbheap、util_heap_sz 和 buffpage 中的一个或多个。参阅《管理指南》,以了解影响所分配的数据库全局内存量的参数。
- 如果 intra_parallel 被设置为“是”,那么减小数据库管理器配置参数 sheapthres,否则将 intra_parallel 设置为“否”。
- 在适当的地方,停止使用该系统的其他程序。
sqlcode:-987
sqlstate:57011
SQL0989N AFTER 触发器 触发器名称 尝试了修改表 表名 中由 FROM 子句内的 SQL 数据更改语句修改的行。
说明
在 FROM 子句中指定了 SQL 数据更改语句,但是 SQL 数据更改语句的底层目标基本表定义了将修改同一个表的 AFTER 触发器。这是不允许的。
无法处理该语句。
用户响应
避免在 FROM 子句中使用 SQL 数据更改语句,或者更改触发器以便使它不会修改是 SQL 数据更改语句的目标的表。
sqlcode:-989
sqlstate:560C3
SQL0990C 发生了索引错误。请重组该表。
说明
索引进行了可观的活动,使用了索引的所有可用空间。
联合系统用户:数据源也可能会检测到此情况。
无法处理该语句。
用户响应
落实工作并再次尝试运行该命令。如果错误继续,那么回滚工作。如果错误仍存在,那么重组该表(如果有可能)。
联合系统用户:找出导致请求失败的数据源中的问题,并遵循为该数据源重新创建索引的过程。
SQL0992C 预编译的程序的发行版号无效。
说明
预编译的程序(程序包)的发行版号与数据库管理器的已安装版本的发行版号不兼容。
预编译的程序 (package) 不能对数据库管理器的当前版本使用。无法处理此命令。
用户响应
只使用用兼容的数据库管理器发行版级别预编译的程序。
sqlcode:-992
sqlstate:51008
SQL0993W 数据库配置文件中日志 (newlogpath) 的新路径无效。
说明
- 该路径不存在。
- 在指定的路径中找到了具有正确名称的文件,但它不是此数据库的日志文件。
- 数据库管理器实例标识没有访问该路径或日志文件的许可权。
未完成请求的更改。
用户响应
要更改日志文件的路径,提交带有有效值的数据库配置命令。
sqlcode:+993
sqlstate:01562
SQL0994N 应用程序保存点的用法无效。
说明
- 请求多个活动保存点。
- 如果没有活动保存点,那么发出结束保存点调用。
- 如果没有活动保存点,那么发出回滚保存点调用。
不能处理该函数。
用户响应
更正程序中的保存点用法。
SQL0995W 日志文件 (logpath) 的当前路径无效。日志文件路径被重置为缺省值。
说明
- 该路径不存在。
- 在指定的路径中找到了具有正确名称的文件,但它不是此数据库的日志文件。
- 数据库管理器实例标识没有访问该路径或日志文件的许可权。
对于循环日志记录,日志文件是在缺省日志路径中创建的。对于归档日志记录,下一个日志文件是在缺省日志路径中创建的。未完成请求的更改。
用户响应
要更改日志文件的路径,提交带有有效值的配置命令。
sqlcode:+995
sqlstate:01563
SQL0996N 不能为表空间中的对象释放页面。
说明
在表空间中存在毁坏的内部数据库页或内部逻辑错误。
用户响应
停止使用对象或表空间。与 IBM 服务中心联系,以检查对象和表空间。
sqlcode:-996
sqlstate:58035
SQL0997W 关于事务处理的一般参考消息。原因码:XA-原因码。
说明
- XA_RDONLY (3) - 事务分支是只读的,已落实。
- 64 - TM 数据库指示在 DUOW 再同步时要落实的事务
- 65 - TM 数据库指示事务要在 DUOW 再同步时回滚
用户响应
不需要执行任何操作。
SQL0998N 在事务或试探性处理期间出错。原因码:原因码。子代码:子代码。
说明
当处理分布式事务时,检测到错误。事务是:
- 在“分布式事务处理”环境(如 CICS 或其他事务管理器中的那些)下运行。
- 执行试探性操作。
- 更新联合数据库中的多个昵称,每个更新的昵称表示不同的数据源。在此情况下,在事务处理期间,其中一个数据源失败。在此情况下,返回的原因码为数据源上故障的原因,而不是联合数据库上故障的原因。
可能的原因码(对应的 X/Open XA 原因码显示在括号中)是:
- 01 -(XAER_ASYNC)尚未完成异步操作。
- 02 -(XAER_RMERR)在事务分支中发生资源管理器错误。
- 03 -(XAER_NOTA)XID 无效。
- 04 -(XAER_INVAL)给定的自变量无效。可能的子代码为:
- 01 - xa_info 指针无效,例如,XAOpen 字符串为 NULL。
- 02 - 数据库名称超过最大长度。
- 03 - 用户名超过最大长度。
- 04 - 密码超过最大长度。
- 05 - 指定了用户名,但没有指定密码。
- 06 - 指定了密码,但没有指定用户名。
- 07 - xa_info 字符串中的参数太多。
- 08 - 多个 xa_open 为同一数据库名称生成不同的 RM 标识。
- 09 - 未指定数据库名称。
- 10 - exe_type 无效。
- 11 - xa_config 文件中不存在 Sybase LRM 名称,或者 xa_config 文件不存在。
- 05 - 在不适当的上下文中调用了(XAER_PROTO)例程。
- 06 -(XAER_RMFAIL)资源管理器不可用。
- 07 -(XAER_DUPID)XID 已经存在。
- 08 -(XAER_OUTSIDE)RM 执行全局事务以外的工作。
- 09 - 向事务管理器注册(ax_reg)失败。可能的子代码为:
- 01 - 找不到连接的 XID
- 02 - 不能装入在 tp_mon_name 配置参数中指定的动态库。
- 10 - 尝试在暂挂时启动另一个事务。
- 12 - 向事务管理器注销(ax_unreg)失败。
- 13 - ax 接口故障:找不到 ax_reg() 和 ax_unreg()。
- 14 - 访问“Microsoft 分布式事务协调器”失败。MSDTC 服务可能已关闭。必须终止当前的事务。
- 15 - 该事务不存在。
- 16 -“Microsoft 分布式事务协调器”(MSDTC)发生了故障。可能的子代码为:
- 01 - 数据库管理器无法与 MSDTC 通信。
- 02 - MSDTC 无法注册该连接。该子代码表示 Microsoft 错误代码。
- 03 - MSDTC 无法将该连接加入“分布式事务”中。该子代码表示 Microsoft 错误代码。
- 04 - 因为存在活动事务,所以无法加入该连接。
- 05 - 不存在事务。尚未加入连接。
- 35 - 试探性操作对于非 XA 数据库无效。
- 36 - 数据库管理器不知道 XID。
- 37 - 已试探性地落实了事务。
- 38 - 已试探性地回滚了事务。
- 39 - 该事务不是不确定事务。
- 40 - 此事务仅允许回滚。
- 41 - 在某些 MPP 次级节点上,因为节点故障,而未试探性地落实事务。
- 42 - DB2 Connect XA 支持仅可用于使用 TCPIP 来建立的出站连接。
- 43 - 由于服务器不支持本地 XA,因此无法建立连接。
- 69 - DUOW 再同步期间,数据库日志标识不匹配。
- 85 - 作为试探处理的结果,部分落实并回滚了事务。
- 210 - 此事务只允许试探性落实。一些节点已处于落实状态。
- 221 - 主机上的 DBMS 版本要求参与同一 XA 事务的所有应用程序使用同一用户标识来连接数据库。
- 222 - 主机上的 DBMS 版本要求参与同一 XA 事务的所有应用程序具有同一 CCSID。
- 223 - DB2 Connect XA 支持仅可用于使用 TCPIP 来建立入站连接的本地客户机或远程客户机。
- 224 - DB2 Connect XA 支持仅可用于至少为 V7.1 的客户机。
- 225 - 操作在“XA 松耦合事务”中无效。可能的子代码为:
- 01 - 不允许 DDL 语句。
- 02 - 不允许指定 WHERE CURRENT OF 子句的更新和删除。
- 03 - 不允许缓冲插入操作。
- 04 - 此事务仅允许回滚。
- 05 - 不允许隐式重新绑定操作。
- 226 - 已回滚了事务。
- 227 - 试探性请求应在协调程序节点上运行。
- 228 - 存在打开的游标。
- 229 - 先前事务尚未完成。
- 230 - 已落实事务。
用户响应
对于原因码 1 至 8,因为有时 SQLCA 不能返回到调用程序,所以将在系统日志中生成一个条目。
如果该错误由与昵称相关联的失败数据源引起,那么失败的数据源的位置将总是出现在联合服务器的系统日志中。
对于原因码 4,验证 xa open 字符串的内容并执行必需的更正。
对于原因码 4 子代码 11,应确保 xa_config 文件存在于 $SYBASE/$SYBASE_OCS 目录中,并且该文件中存在指定为 NODE 服务器选项的 LRM 名称。
对于原因码 9 子代码 02,确保 tp_mon_name 配置参数包含外部产品中动态库的名称,该外部产品将 ax_reg() 函数用于事务的动态注册。
对于原因码 14,确保 MSDTC 服务是活动的。
对于原因码 15,当 MSDTC 事务超时值太小时,就可能会发生这种情况。增大超时值并查看该错误是否继续。
对于原因码 16:
- 子代码 01,确保 MSDTC 服务是活动的。
- 子代码 02,MSDTC 无法注册连接。有关更多信息,请参阅 db2diag 日志文件或 Windows 事件查看器,以获取标题为 MicrosoftXARMCreate 的条目。
- 子代码 03,MSDTC 无法将连接加入“事务”中。有关更多信息,请参阅 db2diag 日志文件或 Windows 事件查看器,以获取标题为 MicrosoftEnlishWithRM 的条目。最常见的错误是已显式或隐式回滚了当前事务。当 MSDTC 事务超时太小时,可能发生这种情况。增大超时值并查看该错误是否继续。
- 子代码 04,尝试了加入当前在另一分布式事务中处于活动状态的连接。
- 子代码 05,在尝试发出 SQL 语句之前加入连接。
对于原因码 35,尝试对全局事务中只充当只读资源管理器的数据库执行试探性操作。示例是任何 DRDA 数据库,例如,DB2 MVS 版。这些类型的非 XA 数据库将不会有任何 XA 不确定事务。
对于原因码 36、37 和 38,尝试对不确定事务执行无效的试探性操作。您指定了错误的 XID,或在您记录此 XID 之后,已发生试探或再同步操作。执行“试探性查询”请求以获取当前的不确定事务的列表,从而验证是否还需要执行试探性操作。
对于原因码 39,指定的 XID 用于已经结束并正在等待两阶段落实进程开始的事务。只能对进入了两阶段落实过程并成为不确定事务的事务执行试探操作。
对于原因码 40,尝试在已失败的事务下执行 SQL 语句。一个示例是,在事务线程中尝试 SQL 语句,而该事务线程已在参与同一事务的紧耦合线程异常终止之后成功注册。
对于原因码 41,可以在管理通知日志找到更多有关该问题的信息。需要在失败的节点上重新启动数据库管理器。可能有必要与系统管理员联系以获取帮助。
对于原因码 42,出站连接可通过修改网关目录以使用 TCPIP 通信协议来建立。
对于原因码 43,如果要连接至 DB2 for z/OS 服务器或 DB2 for i 服务器,请使用 DB2 Connect 对数据库进行编目,然后启动同步点管理器。
对于原因码 69,事务管理器(TM)数据库或资源管理器(RM)数据库或这两者与生成不确定事务时的 TM 和/或 RM 数据库不同。换句话说,TM 数据库名称或 RM 数据库名称可能引用了不同的数据库实例。日志标识不匹配可能是由下列原因造成的:
- 在 RM 实例中 TM 数据库的数据库目录不正确。
- 在生成不确定事务之后,配置可能已更改。
- 可能已删除并重新创建了数据库。在这种情况下,只能试探性地落实或回滚不确定事务。
对于原因码 85,您正在更新多个数据源,但其中一些数据源已被试探性回滚或落实,导致事务被部分落实或回滚。因为此原因码,数据现处于不一致状态,您必须手动检查事务所更新的每个数据源以更正数据。
对于原因码 210,一些节点已处于落实状态。必须执行试探性落实以解析不确定事务。
对于原因码 221,确保参与同一 XA 事务的所有应用程序使用同一用户标识来连接数据库。
对于原因码 222,确保参与同一 XA 事务的所有应用程序具有同一 CCSID。
对于原因码 223,修改应用程序和客户机设置以使用本地客户机,或者,对于远程客户机,将 TCPIP 用作通信协议以连接网关。
对于原因码 224,将客户机更新为 V7.1 或更高版本。
对于原因码 225,确保应用程序不包含“XA 松耦合事务”中的任何无效操作。可使用“XA 松耦合事务” 的常见应用程序服务器环境有 IBM Encina Transaction Server、IBM WebSphere Application Server、Microsoft Transaction Server 和 BEA Tuxedo。如果您遇到此原因码,那么必须查看应用程序并确保未执行所指示的任何操作。
对于原因码 226,事务已达到回滚状态,现在正在此节点上回滚。
对于原因码 227,试探性请求应在协调程序节点上运行,请参阅 db2diag 日志文件以了解协调程序节点号。
对于原因码 228,在发出该请求之前,确保游标已关闭。
对于原因码 229,在发出该请求之前,确保先前事务已完成。
对于原因码 230,已落实事务。
一般信息收集过程:
如果不能解决原因码标识的问题,那么记录消息号(SQLCODE)、原因码和消息中的可选子代码或系统日志中的 SQLCA。
如果故障源于联合数据库,那么还应记录在联合服务器的系统日志中找到的失败数据源的位置。
如果跟踪功能处于活动状态,请从操作系统命令提示符调用“独立跟踪工具”。然后,请与技术服务代表联系,并提供以下信息:
- 问题描述
- SQLCODE、嵌入式原因码和子代码
- SQLCA 内容(如果有可能)
- 跟踪文件(如果有可能)
- 如果该故障源于联合服务器,还应提供失败的数据源的位置。
在事务管理器和数据库管理器的控制台或消息记录中可能有更多信息。
sqlcode:-998
sqlstate:58005