DB2 的数据提供程序利用 IBM SQLCAMESSAGE 存储过程,该存储过程用于返回详细的错误消息。 若要使用此功能,应将数据源配置为对主机 CCSID 使用 EBCDIC 值。
下表描述的 DB2 服务器错误可能会在您执行更正操作所必须采取的措施时发生。
SQLSTATE | SQLCODE | 消息 | 说明 |
---|---|---|---|
42601 | -104 | 非法符号。 标记是无效的意外标记。 文本后发现了意外的令牌<>。<> 预期的令牌可能包括: <token-list>。 |
原因:服务器无法执行包含非法、无效或意外符号或标记的 SQL 语句。 操作:请验证该 SQL 语法是否使用面向特定 IBM DB2 平台和版本的 IBM DB2 SQL 参考。 检查数据使用者应用程序是否使用不支持的分隔对象标识符 (例如方括号 ([<object-name>]) ,而不是使用支持的分隔符 (双引号) 。 |
42602 | -113 | 在 中找到无效字符: <字符串>、原因代码 <原因代码>。 已检测到名称中无效的字符。 <identifier> 包含不允许或不包含任何字符的字符。 |
原因:在客户端连接到 DB2 服务器时,服务器无法处理 SQL SET CURRENT SQLID 语句。 操作:请验证连接信息,以确保默认限定符值与其中对象已编入目录的 DB2 集合匹配。 有关详细信息,请参阅“默认限定符”。 |
42802 | -117 | 所分配值的个数与指定或隐含的列数不同。 语句中包含的值个数错误。 所分配值的个数与指定或隐含的列数或变量数不同。 |
原因:在指定的值的数量与表中列的数量不同时,服务器无法执行 SQL INSERT 语句。 操作:通过查询系统目录(例如 SYSIBM.SYSCOLUMNS)或执行客户端架构查询(例如 OLE DB IDBSchemaRowsets::GetSchemas(DBSCHEMA_COLUMNS) 或 ADO.NET MsDb2Connection.GetSchema(Columns))来验证列的个数是否与 SQL 语句中的对象个数相同。 |
22007 | -181 | 日期时间值的字符串表示形式不是有效的日期时间值 日期、时间或时间戳字符串中的值无效。 日期时间值的字符串表示形式超出了范围。 |
原因:服务器无法执行 DATETIME 值格式不正确或超出范围的 SQL 语句。 操作:请验证 DATETIME 是否在支持的范围内。具体范围如下:年份介于 0001-9999 之间,月份介于 1-12 之间,日期为 28/29/30/31(取决于月份以及是否为闰年),小时介于 0-24(对于美国,应为 0-12)之间,分钟介于 0-59 之间,秒介于 0-59 之间,微秒介于 0-999999 之间。 检查连接信息,确保 DateTime As Date 选项指定为 True,以指示客户端删除映射到 DB2 Timestamp 数据值的 Windows DateTime 数据值的时间部分,从而使 DB2 数据库能够将这些值读作 DB2 Date 数据值。 有关详细信息,请参阅“DateTime 作为 Date”。 |
42704 | -204 | <架构>。<对象> 是一个未识别的名称。 检测到未定义的对象或限制名称。 <name> 是未定义的名称。 |
原因:服务器无法执行引用无效 <架构>的 SQL 语句。<对象> 名称。 操作:请验证 SQL 语句中指定的对象名称。 请检查连接信息,以确保默认限定符值与其中对象已编入目录的 DB2 集合匹配。 有关详细信息,请参阅“默认限定符”。 |
42703 | -206 | <name> 在使用它的上下文中无效 列 <名> 不在指定表中。 <name> 在使用它的上下文中无效。 |
原因:服务器无法执行如下 SQL 语句:指定的列名既不是源或目标表的列,也不是引用了该语句的视图的列。 操作:请通过查询系统目录(例如 SYSIBM.SYSCOLUMNS)或执行客户端架构查询(例如 OLE DB IDBSchemaRowsets::GetSchemas(DBSCHEMA_COLUMNS) 或 ADO.NET MsDb2Connection.GetSchema(Columns))来验证列引用的个数是否与 SQL 语句中的对象个数相同。 |
08S01 | -360 | 找不到该主机资源。 查看初始目录值是否与主机资源名称相匹配。 | 原因:服务器无法将客户端连接到请求的 DRDA RDBNAM(关系数据库名称)。 操作:验证连接信息,确保“初始目录”值与 DB2 for z/OS 位置名称、DB2 for IBM i 关系数据库目录条目 (RDBDIRE) 或 DB2 for Windows 数据库名称匹配。 有关详细信息,请参阅初始“目录”。 |
42884 | -440 | 在<当前路径中找不到具有兼容参数的名称<的例程>类型> 找不到具有指定名称和兼容参数的例程。 找不到具有兼容参数的名为 routine-name>> 类型的<授权<例程。 |
原因:服务器无法执行包含错误数量的参数、无效参数数据类型或引用无效 <架构>的 SQL CALL 语句。<对象> 名称。 操作:请验证参数数目。 检查参数数据类型。 验证 SQL 语句中指定的对象名称。 检查连接信息,确保默认限定符的值与其中对象已编入目录的 DB2 集合匹配。 有关详细信息,请参阅“默认限定符”。 |
24501 | -501 | FETCH 或 CLOSE 语句中的已识别游标未打开。 游标 <名称> 未打开。 FETCH 语句或 CLOSE 语句中指定的游标未打开,或游标标量函数引用中的游标变量未打开。 |
原因:服务器无法执行这样的 SQL SELECT 或 CALL 语句:需要 FETCH 或 CLOSE 的游标未处于打开状态。 操作:请验证应用程序是否未发出 COMMIT 或 ROLLBACK,该命令可能会关闭游标。 请检查以前接收到的返回消息中是否指示服务器根据系统事件(例如 SQLCODE -404、-652、-679、-802、-901、-904、-909、-910、-911、-913 或 -952)自动关闭了游标。 验证连接信息,确保在使用某些一般使用者(包括 SQL Server Integration Services 和分布式查询处理器)以及使用远程工作单元事务时,AutoCommit 选项指定为 True。 有关详细信息,请参阅“AutoCommit”。 |
42501 | -551 | 无权访问对象。 无权在 resource-name 类型 <resource-type>> 中<对象<对象名称>。 <authorization-ID> 没有对 object-name <>执行操作<>所需的授权或权限。 |
原因:服务器无法执行具备以下特性的 SQL SELECT 或 CALL 语句:需要存储在当前用户无权访问的静态 SQL 程序包中的 CURSOR 语句。 客户端依靠 DB2 静态 SQL 程序包内的多个部分中的预定义 SQL 语句来支持 SQL SELECT 语句的执行。 默认情况下,如果运行时用户对程序包集合连接属性中指定的 DB2 集合具有程序包绑定、执行和授予权限,则客户端会自动定义包。 操作:请验证连接信息,以确保程序包集合值与 DB2 集合(其中定义了 HIS 2010 程序包以便当前用户标识符或 PUBLIC 执行)匹配。 使用数据访问工具、数据源向导、数据链接或数据访问库手动创建 HIS 2010 程序包,以便当前用户 ID 或 PUBLIC 执行。 使用有权自动创建 HIS 2010 程序包(创建、绑定和执行权限)的授权 ID 连接到 DB2。 有关详细信息,请参阅“收集包”。 |
42501 42602 |
-567 -567 |
<bind-type> AUTHORIZATION ERROR USING <auth-id> AUTHORITY PACKAGE = <package-name> PRIVILEGE = <privilege>. 不允许使用授权名称 &1。 <authorization-ID> 不是有效的授权 ID。 |
原因:在用户帐户无权创建或执行所需的 DB2 程序包时,服务器无法执行 SQL SELECT 语句。 操作:请验证连接信息,以确保程序包集合值与 DB2 集合(其中定义了 HIS 2010 程序包以便当前用户标识符或 PUBLIC 执行)匹配。 使用数据访问工具、数据源向导、数据链接或数据访问库手动创建 HIS 2010 程序包,以便当前用户 ID 或 PUBLIC 执行。 使用有权自动创建 HIS 2010 程序包(创建、绑定和执行权限)的授权 ID 连接到 DB2。 有关详细信息,请参阅“收集包”。 |
42710 | -601 | 要定义的对象的 NAME (VERSION 或 VOLUME SERIAL NUMBER) ,或者 RENAME 语句的目标与 OBJECT TYPE object-type <) object-name>> 的现有名称 (VERSION 或 VOLUME SERIAL NUMBER <相同。 <架构>类型<类型>中的 <name> 已存在。 要创建的对象的名称与类型<类型的>现有名称<名称>相同。 |
原因:在该名称已被同一类型的另一个对象使用时,服务器无法命名该对象。 操作:请独一无二地命名该对象,不要与现有数据库对象同名。 |
42721 | -725 | 在位置<位置>提供的特殊寄存器<寄存器>的值无效 | 原因:在 SET CURRENT SQLID 语句包含用户标识符或集合名称的无效值时,服务器无法处理该语句。 操作:请验证连接信息,以确保默认限定符值与其中对象已编入目录的 DB2 集合匹配。 有关详细信息,请参阅“默认限定符”。 |
23505 | -803 | 插入或更新的值无效,因为索引空间 <indexspace-name> 中的索引约束表的列,因此这些列中没有两行可以包含重复值。 RID OF EXISTING ROW IS X <行标识符> 指定了重复的键值。 由 DELETE 语句引起的 INSERT 语句、UPDATE 语句或外键更新中的一个或多个值无效,因为 index-id> 标识<的主键、唯一约束或唯一索引会约束表<名称>具有索引键的重复值。 |
原因:服务器无法针对受 UNIQUE INDEX(该语句会导致值重复)约束的表执行 INSERT 或 UPDATE 语句。 操作:请通过查询系统目录(例如 SYSIBM.SYSINDEXES)或执行客户端架构查询(例如 OLE DB IDBSchemaRowsets::GetSchemas(DBSCHEMA_INDEXES) 或 ADO.NET MsDb2Connection.GetSchema(Indexes))来验证数据值是否违反了限制。 |
51002 | -805 | DBRM 或包名称 <___location-name>。<collection-id>。<dbrmname>。<在 PLAN <plan-name> 中找不到 consistency-token>。 >原因<。 在 DRDA 服务器上找不到 collection-name 中的 <SQL 包<包>名称>。 找不到包 <包名称> 。 |
原因:服务器找不到 DB2 客户端执行动态 SQL SELECT 语句所需的 DB2 静态 SQL 程序包。 操作:验证连接信息,确保程序包集合值与 DB2 集合(其中定义了 HIS 2010 程序包以便当前用户 ID 或 PUBLIC 执行)匹配。 有关详细信息,请参阅“收集包”。 |
58004 | -901 | 由系统错误导致的执行失败不会妨碍后续 SQL 语句的成功执行。 SQL 系统错误。 由于发生了非严重系统错误,SQL 语句执行失败。 可以处理后续的 SQL 语句。 (原因<>。) |
原因:服务器无法执行当前的 SQL 语句,但后续的 SQL 语句可以继续执行。 此错误可能由分布式工作单元内的事务提交失败所致,或者由于约定或 SQL 语句中包含无效的长度(0 或超出最大长度)而导致的更新失败所致。 操作:在有原因代码的情况下,用户应检查原因代码,以确定是否需要进一步的用户或管理员操作,并确定如何通过修改应用程序、事务或命令来避免错误。 |
57011 | -904 | 资源不可用导致执行失败。 REASON <reason-code>、TYPE OF RESOURCE-type>< 和 RESOURCE NAME <resource-name>。 超出了资源限制。 由于资源不可用导致执行失败。 原因代码: <reason-code>,资源类型: <resource-type>,资源名称: <resource-name>。 |
原因:服务器无法执行 SQL 语句,因为语句的对象不可用。 操作:请验证对象和数据库是否可用,并且是否未处于死锁、脱机或其他不可用状态。 |
57033 | -913 | 死锁或超时导致执行失败。 REASON CODE <reason-code>、TYPE OF RESOURCE-type>< 和 RESOURCE NAME <resource-name>。 正在使用的资源名称类型 <resource-type>> 中的<行或对象 <object-name>。 由于出现死锁或超时导致执行失败。 原因代码 <reason-code>。 |
原因:服务器无法执行 SQL 语句,因为语句的对象不可用。 操作:请验证对象和数据库是否可用,并且是否未处于死锁、脱机或其他不可用状态。 提交或回滚上一个操作,然后断开与数据库的连接。 检查服务器的原因代码以获取有关对象状态的详细信息(例如 DB2 for z/OS 原因代码 00C90088 指示发生死锁,而 00C9008E 指示发生超时)。 |