SQL0750 - SQL0999
SQL0750N 表または列を名前変更できないためにステートメントが失敗しました。
説明
以下のいずれかの理由により、RENAME ステートメントのソース表を名前変更できません。
- 表が、1 つ以上の既存のマテリアライズ照会表で参照されている。
- 表が、1 つ以上の統計ビューで参照されている。
- 表が親または従属表として、参照制約に入っている。
- 表が 1 つ以上の XSR オブジェクトの分解用のターゲット表である。
- 表がシステム期間テンポラル表である。
- 表が履歴表である。
- データベース・マネージャーの構成パラメーター auto_reval が DISABLED に設定され、以下のいずれかが生じている。
- 表が既存のビューで参照されている。
- 表が既存のトリガーで参照されている。 これには、トリガー SQL ステートメントの表または参照上の トリガーを含みます。
- 表が既存の SQL 関数または SQL メソッドで参照されている。
- 表にはチェック制約が定義されている。 これには、生成された列が原因のチェック制約も含まれます。
- 表は待ち時間表 SYSTOOLS.REPL_MQT_LATENCY である。
- 表に登録済みの空間列が含まれる。
- 表に式ベースの索引がある。
以下に示した 1 つ以上の理由により、ALTER TABLE ステートメントのターゲット表の列を名前変更できません。
- ターゲット表が履歴表である
- 列が、random by generation 方式を使用したランダム分散表のランダム分散キー列である
ユーザーの処置
エラーが RENAME ステートメントに関するものである場合、RENAME ステートメントを発行する前に、表に従属するビュー、マテリアライズ照会表、トリガー、SQL 関数、SQL メソッド、チェック制約、参照制約、式ベースの索引、または XSR オブジェクトをドロップしてください。カタログを照会することにより、表に従属するオブジェクトを判別できます。
- 表に従属するビュー、式ベースの索引、またはマテリアライズ照会表の場合は、 表が BSCHEMA 列と BNAME 列に一致する SYSCAT.VIEWDEP を照会してください。
- 表に従属するトリガーの場合、表が BSCHEMA および BNAME 列に一致する SYSCAT.TRIGDEP を照会してください。
- SQL 関数または SQL メソッドの場合、表が BSCHEMA 列および BNAME 列に一致する SYSCAT.ROUTINEDEP を照会してください。
- 表に対するチェック制約の場合、 表が TABSCHEMA および TABBNAME 列に一致する SYSCAT.CHECKS を照会してください。
- 登録済みの空間列が含まれる表の場合、空間列を登録解除してください。
- 表に従属する参照制約の場合、表が TABSCHEMA および TABNAME 列、 または REFTABSCHEMA および REFTABNAME 列に一致する SYSCAT.REFERENCES を照会してください。
- ターゲットである表の分解用に有効な XSR オブジェクトの場合、表が BSCHEMA および BNAME 列 に一致する SYSCAT.XSROBJECTDEP を照会してください。
エラーが ALTER TABLE ステートメントの RENAME COLUMN アクションに関するものである場合、ターゲット表が履歴表である間は、列を直接名前変更できません。 以下のアクションのいずれかを実行して、列を名前変更できます。
- 履歴表を使用するシステム期間テンポラル表の名前を判別し、ALTER TABLE ステートメントのターゲットとしてその名前を使用して RENAME COLUMN 操作を実行してください。 これにより、システム期間テンポラル表とそれに関連付けられている履歴表の両方の列が名前変更されます。
- システム期間テンポラル表の名前を判別し、ALTER TABLE ステートメントのターゲットとしてその名前を使用して DROP VERSIONING 操作を実行してください。 これにより、履歴表とシステム期間テンポラル表が通常の表に変更されます。 これで、元の ALTER TABLE ステートメントの表の列を名前変更できます。 列を名前変更すると、表は、バージョン管理がドロップされた表の履歴表として機能できなくなります。
列が、random by generation 方式を使用したランダム分散表のランダム分散キー列である場合、アクションは不要です。この列はシステム生成列であり、名前変更できません。
sqlcode: -750
sqlstate: 42986
SQL0751N ルーチン routine-name (特定名 specific-name) が、許可されていないステートメントを実行しようとしました。
説明
ルーチンの本体をインプリメントするために使用されるプログラムは、 接続ステートメントの発行を許可されていません。 ルーチンが関数またはメソッドの場合は、 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 ステートメント用のケースが見つかりませんでした。
説明
ELSE 節のない CASE ステートメントが、SQL ルーチンのルーチン本体に見つかりました。 CASE ステートメントに指定されている条件が一致しません。
ユーザーの処置
可能性のある条件をすべて扱えるよう、CASE ステートメントを変更してください。
sqlcode: -773
sqlstate: 20000
SQL0774N このステートメントは、ATOMIC コンパウンド SQL ステートメント内では実行できません。
説明
ATOMIC コンパウンド SQL ステートメントのコンテキスト内で、COMMIT または ROLLBACK ステートメントを検出しました。 これらのステートメントは、このコンテキストでは許可されません。
ユーザーの処置
COMMIT または ROLLBACK ステートメントを除去するか、またはATOMIC コンパウンド・ステートメントにならないように、コンテキストを変更してください。
sqlcode: -774
sqlstate: 2D522
SQL0776N カーソル cursor-name の使用は無効です。
説明
カーソル cursor-name が、SQL プロシージャーの FOR ステートメントに カーソル名として指定されています。 このカーソルは、FOR ステートメント内の CLOSE、FETCH、または OPEN ステートメントには指定できません。
ユーザーの処置
CLOSE、FETCH、または OPEN ステートメントを除去してください。
sqlcode: -776
sqlstate: 428D4
SQL0777N ネストされたコンパウンド・ステートメントは許可されていません。
説明
SQL プロシージャーのルーチン本体の ATOMIC コンパウンド・ステートメントをネストすることはできません。
ユーザーの処置
ネストされた ATOMIC コンパウンド・ステートメントが SQL プロシージャーに組み込まれていないことを確認してください。
sqlcode: -777
sqlstate: 42919
SQL0778N 終了ラベル label が開始ラベルと同じではありません。
説明
FOR、 IF、 LOOP、 REPEAT、 WHILE またはコンパウンド・ステートメントの 末尾に指定されているラベル label が、ステートメントの先頭にあるラベルと 異なっています。 開始ラベルが指定されていない場合、終了ラベルを指定することはできません。
ユーザーの処置
FOR、IF、LOOP、REPEAT、WHILE、およびコンパウンド・ステートメントで、終了ラベルが開始ラベルと同じであることを確認してください。
sqlcode: -778
sqlstate: 428D5
SQL0779N GOTO、ITERATE または LEAVE ステートメントに指定されているラベル label が無効です。
説明
GOTO、 ITERATE または LEAVE ステートメントにラベル label が指定されています。 このラベルは定義されていないか、またはステートメントの有効なラベルではありません。
ITERATE ステートメントのラベルは、FOR、 LOOP、 REPEAT、 または WHILE ステートメントのラベルである必要があります。
LEAVE ステートメントのラベルは、FOR、LOOP、REPEAT、WHILE、 またはコンパウンド・ステートメントのラベルである必要があります。
- GOTO ステートメントが FOR ステートメントで定義されている場合、 label は、ネストされた FOR ステートメントまたはネストされた コンパウンド・ステートメント以外の同一の FOR ステートメントで定義される必要があります。
- GOTO ステートメントがコンパウンド・ステートメントで定義されている場合、 label は、ネストされた FOR ステートメントまたはネストされた コンパウンド・ステートメント以外の同一のコンパウンド・ステートメントで定義される必要があります。
- GOTO ステートメントがハンドラーで定義されている場合、 label は、他の有効範囲の規則に準拠して同一のハンドラーで 定義される必要があります。
- GOTO ステートメントがハンドラー外で定義されている場合、 label はハンドラー内で定義してはなりません。
ユーザーの処置
GOTO、ITERATE、または LEAVE ステートメントに有効なラベルを指定してください。
sqlcode: -779
sqlstate: 42736
SQL0780N UNDO がハンドラーに指定されていますが、ATOMIC がコンパウンド・ステートメントに指定されていません。
説明
UNDO が SQL プロシージャーにあるコンパウンド・ステートメントのハンドラーに指定されています。 コンパウンド・ステートメントが ATOMIC でないかぎり、UNDO を指定することはできません。
ユーザーの処置
コンパウンド・ステートメントが ATOMIC になるよう指定するか、またはハンドラーに EXIT あるいは CONTINUE を 指定してください。
sqlcode: -780
sqlstate: 428D6
SQL0781N 条件 condition-name が定義されていないか、定義が有効範囲内にありません。
説明
条件 condition-name がハンドラー宣言、SIGNAL ステートメント、または RESIGNAL ステートメントで指定されましたが、条件参照を含むコンパウンド・ステートメントの有効範囲内で条件が定義されていないか、または条件を定義済みモジュール条件として見つけることができませんでした。
ステートメントは処理できません。
ユーザーの処置
条件参照を含むコンパウンド・ステートメント内で DECLARE CONDITION ステートメントを使用するか、または条件が参照されている可視のモジュール内で条件を定義することにより、条件を定義してください。 別の方法として、条件参照を特定の SQLSTATE 値と置き換えるか、あるいは条件を参照するハンドラー宣言、SIGNAL ステートメント、または RESIGNAL ステートメントを除去することができます。
sqlcode: -781
sqlstate: 42737
SQL0782N ハンドラーに指定されている条件または SQLSTATE 値が無効です。
説明
- 条件または SQLSTATE 値が、すでに同じ有効範囲にある別のハンドラーによって指定されている
- 条件または SQLSTATE 値が、同じハンドラーに SQLEXCEPTION、SQLWARNING、または NOT FOUND として指定されている
- エラー・トレラントな nested-table-expression の continue-handler 節に指定された条件、SQLSTATE 値または SQLCODE 値が無効である
ユーザーの処置
条件、SQLSTATE 値、または SQLCODE 値をハンドラーから除去してください。
sqlcode: -782
sqlstate: 428D7
SQL0783N 重複する列名または無名列が、FOR ステートメントの DECLARE CURSOR ステートメントに指定されました。
説明
FOR ステートメントの選択リストには、ユニークな列名が入っていなければなりません。 指定された選択リストに重複する列名、または名前のない式があります。
ユーザーの処置
FOR ステートメントに指定されている選択リストにユニークな列名を指定してください。
sqlcode: -783
sqlstate: 42738
SQL0784N 制約 constraint-name をドロップできないためにステートメントが失敗しました。
説明
BUSINESS_TIME 期間が定義されている場合に暗黙的に生成される制約は、DROP CHECK 節または DROP CONSTRAINT 節を指定した ALTER TABLE ステートメントでは除去できません。
ユーザーの処置
DROP CHECK 節または DROP CONSTRAINT 節を ALTER TABLE ステートメントから除去してください。 制約をドロップする必要がある場合、ALTER TABLE ステートメントで DROP PERIOD 節を使って BUSINESS_TIME 期間をドロップできます。
sqlcode: -784
sqlstate: 42860
SQL0785N SQLSTATE または SQLCODE 変数の宣言あるいは使用は許可されていません。
説明
- SQLSTATE が CHAR(5) として宣言されていない
- SQLCODE が INTEGER として宣言されていない
- 変数に NULL 値が割り当てられている
ステートメントは処理できません。
ユーザーの処置
SQLSTATE 変数を CHAR(5) として、また SQLCODE 変数を INTEGER として宣言してください。 変数を有効な値に設定してください。
sqlcode: -785
sqlstate: 428D8
SQL0787N RESIGNAL ステートメントがハンドラー内にありません。
説明
RESIGNAL ステートメントは、条件ハンドラー内でのみ使用できます。
ユーザーの処置
RESIGNAL ステートメントを除去するか、あるいは SIGNAL ステートメントを代わりに使用してください。
sqlcode: -787
sqlstate: 0K000
SQL0788N ターゲット表 table-name の特定行が、更新、削除、挿入の対象として複数回確認されたため、ステートメントが処理されませんでした。
説明
MERGE ステートメントの ON 検索条件、または UPDATE ステートメントの WHERE 検索条件において、ターゲット表の単一行がソース表参照の複数行と一致すると、このメッセージが返されます。ターゲット表の単一行がソース表参照の複数行と一致すると、更新操作または削除操作でそのターゲット行が複数回操作されることになりますが、この操作はサポートされていません。
ユーザーの処置
以下のいずれかの方法で応答します。
- 検索条件を訂正して、ターゲット表の各行が、ソース表の 1 行にのみ一致することを確認してください。
- GROUP BY 文節を使用して、ターゲット表の行と一致する、ソース表内の複数行を集約します。
- ROW_NUMBER() OLAP 式を使用してデータのクレンジングを行います。
sqlcode: -788
sqlstate: 21506
SQL0789N パラメーターまたは SQL 変数 name のデータ・タイプは、ルーチン、コンパウンド 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 変数 name に異なるデータ・タイプを指定してください。
- ARRAY、ROW、または CURSOR タイプのパラメーターにデフォルト値を指定しないでください。
- カーソル値コンストラクターのパラメーター・リストでは、ARRAY、BOOLEAN、CURSOR、ROW、LONG VARCHAR、LONG VARGRAPHIC、REFERENCE、および構造化データ・タイプのパラメーターを使用しないでください。
sqlcode: -789
sqlstate: 429BB
SQL0796N 役割 role-name1 を役割 role-name2 に付与することは循環を作成するため、それは無効です。
説明
役割が循環を作成する場合、役割を付与できません。 役割 role-name1 には、恐らくは別の役割を介した役割 role-name2 が含まれます。そのため、役割を role-name2 に付与することはできません。
ユーザーの処置
該当する場合、循環が作成されないようにするには、役割 role-name2 を役割 role-name1 から取り消すか、または role-name2 が含まれている role-name1 の中に含まれる役割から取り消してから、ステートメントを再サブミットしてください。
sqlcode: -796
sqlstate: 428GF
SQL0797N トリガー trigger-name が、サポートされていない トリガー 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 ステートメント
いくつかの場合には、trigger-name がこのメッセージに現れません。
ユーザーの処置
このトリガーのトリガー SQL ステートメントを確認して、このメッセージに記載されたリストに合致しないステートメントを見つけ、削除してください。
sqlcode: -797
sqlstate: 42987
SQL0798N GENERATED ALWAYS として定義されている列 column-name に値を指定することはできません。
説明
表内の行を挿入または更新しているとき、GENERATED ALWAYS 列 column-name に 値が指定されました。 キーワード DEFAULT が指定されていないかぎり、GENERATED ALWAYS 列を INSERT のため列リストに、あるいは UPDATE のため SET 節に指定することはできません。
INSERT または UPDATE は実行されません。
ユーザーの処置
GENERATED ALWAYS 列を列リストまたは SET 節から除去するか、または 列の値として DEFAULT を指定してください。
sqlcode: -798
sqlstate: 428C9
SQL0799W 特殊レジスターがデータベース・サーバーに存在しないか、特殊レジスターに無効な値が指定されたため、特殊レジスター special-register-name の SET ステートメントは無視されました。
説明
特殊レジスターとは、アプリケーション・プロセスのためにデータベース・マネージャーによって定義されるストレージ域を指します。特殊レジスターは、SQL ステートメントで参照できる情報を保管するために使用されます。
一部の特殊レジスターは、SET 変数ステートメントを使用して更新できます。
特殊レジスターを設定するように DB2 クライアントまたは DB2 ドライバーを構成することができます。特殊レジスターを設定するように DB2 クライアントまたは DB2 ドライバーを構成すると、クライアントまたはドライバーは、アプリケーションの SQL ステートメントと同時に SET 変数ステートメントをデータベース・サーバーに送信します。
特殊レジスターを更新しようとしたときに、特殊レジスターがデータベース・サーバーに存在しないか、特殊レジスターに無効な値が指定されていると、このメッセージが返されます。
DB2 クライアントまたは DB2 ドライバーがアプリケーションの SQL ステートメントと同時に SET 変数ステートメントをデータベース・サーバーに送信するとき、特殊レジスターの設定が成功するか失敗するかに関わらず、データベース・サーバーはアプリケーションの SQL ステートメントを処理します。
ユーザーの処置
特殊レジスターを設定するように DB2 クライアントまたは DB2 ドライバーを構成した場合、クライアント構成ファイル db2dsdriver.cfg で指定されている特殊レジスター設定値を妥当性検査してください。
sqlcode: +799
sqlstate: 01527
SQL0801N ゼロによる除算が試みられました。
説明
列関数または算術式の処理が、結果としてゼロによる除算となりました。
ステートメントは処理できません。 INSERT、UPDATE、または DELETE ステートメントの場合は、挿入も更新も実行されません。
ユーザーの処置
SQL ステートメントを調べて、問題の原因を判別してください。 問題がデータによるものであれば、エラーが発生した時点で処理されていたデータを調べてください。 データ・タイプの有効範囲については、「SQL リファレンス」を参照してください。
フェデレーテッド・システム・ユーザーの場合: SQL ステートメントを調べて、問題の原因を判別してください。 問題がデータによるものであれば、 エラーが発生した時点でデータ・ソースで処理されていたデータを調べてください。
sqlcode: -801
sqlstate: 22012
SQL0802N 算術オーバーフロー、またはその他の算術例外が 発生しました。
説明
列関数または算術式の処理で、算術オーバーフローが発生しました。
ステートメントは処理できません。 INSERT、UPDATE、または DELETE ステートメントの場合は、挿入も更新も実行されません。
ユーザーの処置
SQL ステートメントを調べて、問題の原因を判別してください。 問題がデータによるものであれば、エラーが発生した時点で処理されていたデータを調べてください。 データ・タイプの有効範囲については、「SQL リファレンス」を参照してください。
SQL ステートメントによって返された値を列関数が扱えない場合にも、 このエラーが返されることがあります。 例えば、MAX_LONGINT_INT SQL 制限で定義されているよりも多い行を持つ表に対して SELECT COUNT ステートメントを出すと、算術オーバーフロー・エラーが発生します。 2,147,483,647 を超える行を持つ表には COUNT_BIG 列関数を使用するよう考慮してください。
フェデレーテッド・システム・ユーザーの場合: SQL ステートメントを調べて、問題の原因を判別してください。 問題がデータによるものであれば、 エラーが発生した時点でデータ・ソースで処理されていたデータを調べてください。 データ・タイプの有効範囲を判別するには、 対応する SQL リファレンスでデータ・ソースを参照してください。
sqlcode: -802
sqlstate: 22003
SQL0803N INSERT ステートメント、UPDATE ステートメントの 1 つ以上の値、 および DELETE ステートメントが原因で発生した外部キーの更新は無効です。 これは、index-id で識別される主キー、ユニーク制約、またはユニーク索引が表 table-name が索引キーに対して重複する値を持つことを制限しているためです。
説明
INSERT または UPDATE のオブジェクトとなる表 table-name は、 1 つ以上の UNIQUE 索引により、 ある列または列のグループ内にユニークな値を持つように制約されています。 あるいは、親表の DELETE ステートメントが、 1 つ以上の UNIQUE 索引によって制約されている従属表 table-name 内の外部キーの変更を行いました。 ユニーク索引は、表に定義されている主キーまたはユニーク制約をサポートしている可能性があります。 要求された INSERT、UPDATE、または DELETE ステートメントを完了すると列の値が重複してしまうため、 ステートメントを処理できません。 索引が XML 列上にある場合、索引キーに対して重複する値が単一の XML 文書内から生成されることがあります。
または、INSERT または UPDATE ステートメントのオブジェクトがビューの場合には、 そのビューが定義されている表 table-name が制約を受けます。
index-id が整数値である場合は、 以下の照会を発行することによって SYSCAT.INDEXES から索引名を取得できます。
SELECT INDNAME, INDSCHEMA
FROM SYSCAT.INDEXES
WHERE IID = <index-id>
AND TABSCHEMA = 'schema'
AND TABNAME = 'table'
'schema' は table-name のスキーマ部分で、'table' は table-name の表名部分を表しています。
ステートメントは処理できません。 表は変更されません。
ユーザーの処置
index-id で識別される索引の定義を調べてください。
UPDATE ステートメントの場合は、 指定した処理自体がユニーク制約との間に矛盾がないことを確認してください。 それでもエラーの内容が不明な場合には、オブジェクト表の内容を調べて、 問題の原因を判別してください。
INSERT ステートメントの場合は、オブジェクト表の内容を調べて、 ユニーク制約に違反している指定した値リストの値を判別してください。 または、INSERT ステートメントに副照会が入っている場合に問題の原因を判別するには、 その副照会によって示される表の内容をオブジェクト表の内容と一致させる必要があります。 表がセキュリティー・ポリシーを使用して保護されている場合、エラーの原因となっている行を参照することが LBAC 信用証明情報により許可されない場合があります。
索引が XML 列上にあり、ステートメントが INSERT または UPDATE のいずれかである場合、 結果として単一の XML 文書内で値が重複することにならないか考慮してください。
DELETE ステートメントの場合、示された従属表について、 外部キーのユニーク制約を調べ、規則 ON DELETE SET NULL で 定義されているかを調べてください。 この表には、示されたユニーク索引に組み込まれた外部キー列を持っています。 この表の列に NULL がすでにあるために外部キー列を NULL に設定できません。
フェデレーテッド・システム・ユーザーの場合: 問題を切り分けて要求失敗の原因となったデータ・ソースを突き止め、前にリストされた索引定義および条件のデータを調べてください。
sqlcode: -803
sqlstate: 23505
SQL0804N 現在の要求に対するアプリケーション・プログラムのパラメーターが無効です。 理由コード reason-code SQLDA のホスト変数または SQLVAR が無効な場合、 ホスト変数/SQLVAR 番号 = var-number、 SQLTYPE = sqltype、SQLLEN = sqllen、 ホスト変数/SQLVAR タイプ = input-or-output です。
説明
現行要求を処理中にエラーが発生しました。
- 呼び出しパラメーター・リストはプリコンパイラーで作成されますが、アプリケーション・プログラマーがプリコンパイラーの出力を 修正し、あるいは別の方法で呼び出しパラメーター・リストを 上書きする場合には正しくない可能性があります。
- SQL 内の SQLDA あるいはホスト変数が無効である。
- 作成された要求がサポートされていないか、またはコンテキスト外にある。
理由コードは以下に示すように解釈されます。
- 100
作成された要求がサポートされていないか、またはコンテキスト外にある。
- 101
SQLDA.SQLN が SQLDA.SQLD より小さい。
- 102
SQLVAR.SQLTYPE が無効である。
フェデレーテッド・システム・ユーザーの場合: 指定したデータ・タイプは、フェデレーテッド・サーバー、またはアクセスするデータ・ソースによって サポートされていません。
- 103
SQLVAR.SQLLEN あるいは SQLVAR2.SQLLONGLEN で指定した長さが SQLVAR.SQLTYPE で与えられた SQL タイプに対して間違っている。
- 104
SQLVAR を 2 倍することが予期されていたが、SQLDA.SQLDAID の SQLDOUBLED フィールドが '2' に 設定されていない。 ラージ・オブジェクト・タイプまたは構造化タイプのために、これが必要になる 場合があります。
- 105
2 バイト文字ラージ・オブジェクトには SQLVAR2.SQLDATALEN ポインターで示される奇数値があり、これが常にバイトで、DBCLOB に対してもそうである。
- 106
SQLDATA ポインターが無効であるか、あるいは不十分なストレージを示している。
- 107
SQLIND ポインターが無効であるか、あるいは不十分なストレージを示している。
- 108
SQLDATALEN ポインターが無効であるか、あるいは不十分なストレージを示している。
- 109
特定数のホスト変数/SQLVARS が、現在の SQL ステートメントに対して予期されています。
- 110
LOB ロケーターが互換タイプの LOB に関連していない。
- 111
LOB が SQLVAR の SQLTYPE に示されているが、2 番目の SQLVAR は NULL である。
- 112
SQLDATATYPE NAME フィールドが無効。 データベース内で既存のユーザー定義タイプを 識別するための形式に適合していません。 既存のユーザー定義タイプを識別するための形式は、8 バイト、その後にピリオド、さらにその後に 18 バイトです。
- 113
SQLFLAG4 フィールドが無効。 構造化タイプが指定されている場合、値は X'12' でなければなりません。 参照タイプが指定されている場合、値は X'01' でなければなりません。 その他の場合、値は X'00' でなければなりません。
- 115
XML サブタイプ標識が、XML データを含むことができない SQLVAR.SQLTYPE の SQLVAR.SQLNAME フィールドで設定されます。
ホスト変数を指定した SQL ステートメントでは、ホスト変数番号を使用して ステートメント (あるいはコンパウンド SQL の場合はサブステートメント) の最初からカウントし 無効なホスト変数を探し出すことができます。 SQLDA を使用したステートメントでは SQLVAR 番号が 無効な SQLVAR の検出に使用されます。 入力 SQLDA では 入力ホスト変数あるいは SQLVAR をカウントするだけです。出力も同様です。 この番号の基本は 1 であることに注意してください。
ステートメントは処理できません。
ユーザーの処置
示されたエラーについて、アプリケーション・プログラムを 調べてください。 プログラマーは、プリコンパイラー出力を変更するべきではないことに 注意してください。
フェデレーテッド・システム・ユーザーの場合: 理由コード 102 を受け取った場合、サポートされているデータ・タイプを 指定してプログラムを再サブミットしてください。
sqlcode: -804
sqlstate: 07002
SQL0805N パッケージ package-name が見つかりませんでした。
説明
必要なパッケージがカタログに見つからなかったため、ステートメントを完了できません。
package-name は、以下のいずれかの形式になります。
- 'pkgschema.pkgname 0Xcontoken'。この場合、整合性トークンは 16 進数で指定されます。
- 'pkgschema.pkgname.pkgversion'。 パッケージ・バージョンが空ストリングの場合、'.pkgversion' は名前から省略されます。
- CURRENT PACKAGE PATH が設定されている場合は '%.pkgname'。 CURRENT PACKAGE PATH 内の一連のスキーマ名は、パーセント文字 ('%') によって暗黙指定されます。
このメッセージ (SQLCODE) の原因として、以下のことが考えられます。
- パッケージがバインドされていなかったか、またはドロップされていた。
- DB2 ユーティリティーまたは CLI アプリケーションの実行を試行中の場合、DB2 ユーティリティーをそのデータベースに再バインドする必要がある。
- CURRENT PACKAGE PATH が設定されている場合は '%.pkgname'。ただし、 CURRENT PACKAGE PATH 内のどのスキーマでも '%.pkgname' の名前の付いたパッケージが見つからない。
指定された package-schema.package-name に対してバージョン ID が使用されている場合、 同じパッケージ・スキーマとパッケージ名を使って定義されたパッケージが存在するけれども、 既存のパッケージが要求されたバージョンまたは整合性トークンと一致しないため、 正しいパッケージが見つからない可能性があります。 パッケージは、パッケージ名の 3 つの部分 すべてが一致していなければなりません。 複数のバージョンが使用されている場合、 このメッセージが表示された原因として、さらに以下のことが考えられます。
- 実行されているアプリケーションのバージョンはプリコンパイルされ、コンパイルされ、 リンクされているけれどもバインドされていないか、またはバインドされているけれども、 パッケージのそのバージョンが後にドロップされている。
- アプリケーションはプリコンパイルされてバインドされているけれども、 コンパイルとリンクが行われていないか、またはそのいずれかが行われていないため、 実行されているアプリケーションが最新ではない。
- コンパイルされて、アプリケーション実行可能プログラムにリンクされた、 変更済みソース・ファイルを作成したプリコンパイルとは別のソース・ファイルの プリコンパイルによって生成されたバインド・ファイルからパッケージがバインドされている。
- 新規アプリケーションが、既存のパッケージの名前 (およびバージョン) を使って バインドされたため、既存のパッケージが置換された。 置換されたパッケージと関連したアプリケーションが実行された場合には、エラーが発生します。
このいずれの場合も、要求の整合性トークンが既存バージョンの整合性トークンと 一致していないため、パッケージが検出されないと考えられています。
ステートメントは処理できません。
ユーザーの処置
正しいパッケージ名を指定するか、またはプログラムをバインドしてください。 実行中のアプリケーションがデータベースにバインドされていない場合は、データベース管理者に連絡して、バインドに必要な処置を行ってください。 実行しているアプリケーションまたはオブジェクト・モジュールが、コンパイルされ、プリコンパイルおよびそのパッケージを生成したバインドと関連付けられた、リンクされた変更済みソース・コードであることを確認してください。
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 ステートメントの 実行結果が、複数行の結果表になりました。
- スカラー全選択の実行結果が、複数行の結果表に なりました。
フェデレーテッド・システム・ユーザーの場合: この状態は、フェデレーテッド・サーバーまたはデータ・ソースによっても検出されます。
ステートメントは処理できません。
ユーザーの処置
ステートメントに適切な条件指定が入っていることを確認してください。 条件指定が適切な場合には、1 行のみが想定されているときに、複数の行または値を返すデータの問題である可能性があります。
フェデレーテッド・システム・ユーザーの場合: 問題を切り分けて要求失敗の原因となったデータ・ソースを突き止め、そのオブジェクトの選択基準およびデータを調べてください。
sqlcode: -811
sqlstate: 21000
SQL0817N SQL ステートメントは、ステートメントの結果が禁止された更新操作となるため、実行されません。
説明
- アプリケーションが IMS 照会専用トランザクションとして動作している
- アプリケーションが 2 フェーズ・コミットをサポートしないリモート DBMS で データを更新しようとする IMS または CICS アプリケーションである
- アプリケーションが、複数のロケーションおよび 2 フェーズ・コミットをサポートしないロケーションの いずれかでデータを更新しようとした
SQL ステートメントには INSERT、UPDATE、DELETE、CREATE、ALTER、DROP、GRANT、 および REVOKE が入っています。
ステートメントは実行できません。
ユーザーの処置
アプリケーションが IMS 照会専用トランザクションとして動作している場合、アプリケーション実行下での照会専用トランザクションの状況変更に ついて、IMS システム・プログラマーを調べてください。
IMS または CICS アプリケーションがリモートの更新を行う場合、アプリケーションが サーバー DBMS でのローカル・アプリケーションとして動作するか、あるいは サーバー DBMS が 2 フェーズ・コミットをサポートするように アップグレードされる必要があります。
アプリケーションが複数のロケーションでデータを更新しようとする場合、アプリケーションを変更するか、あるいは すべての DBMS が 2 フェーズ・コミットをサポートするよう、アップグレードされる必要があります。
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 * によって戻される項目数は、 3 つの表すべての列数の合計です) 可能であれば、情報の必要な項目だけが戻されるように SQL ステートメントを書き直してください。 すべての情報が必要な場合は、SQL ステートメントを 2 つ以上のステートメントに分割してください。
sqlcode: -840
sqlstate: 54004
SQL0842N サーバー server-name への接続はすでに存在しています。
説明
SQLRULES(STD) が実際あり、CONNECT ステートメントは既存 SQL 接続を 識別します。
ユーザーの処置
- サーバー名が意図した名前でない場合は、訂正してください。
- SQLRULES(STD) が有効で、CONNECT ステートメントが 既存の SQL 接続を識別している場合は、CONNECT を SET CONNECTION に 置き換えるか、またはオプションを SQLRULES(DB2) に変更してください。
アプリケーションのエラーを修正して、もう一度やり直してください。
sqlcode: -842
sqlstate: 08002
SQL0843N サーバー名は既存の接続に該当しません。
説明
ステートメント、コマンド、または API は、アプリケーション処理の既存の SQL 接続を識別しない サーバー名を指定しました。
- SET CONNECTION ステートメント
- RELEASE ステートメント
- DISCONNECT ステートメント
- SET または QUERY CLIENT INFORMATION
ユーザーの処置
- サーバー名が意図した名前でない場合は、訂正してください。
- サーバーへの接続が確立されており、接続の要求を 発行する前に、現在または休止状態に あることを確認してください。
アプリケーションのエラーを修正して、もう一度やり直してください。
sqlcode: -843
sqlstate: 08003
SQL0845N PREVIOUS VALUE 式は、NEXT VALUE 式がシーケンス sequence-name の 現行セッションで値を生成するまで使用できません。
説明
PREVIOUS VALUE 式がシーケンス sequence-name を指定していますが、 値がまだこのシーケンスについて生成されていません。 シーケンスの PREVIOUS VALUE 式を発行 するためには、このシーケンスについて値を生成するために、NEXT VALUE 式をこの セッションで発行する必要があります。
ユーザーの処置
セッション内で同じシーケンスについて PREVIOUS VALUE 式を発行する前に、シーケンスに 少なくとも 1 つの NEXT VALUE 式を発行してください。
sqlcode: -845
sqlstate: 51035
SQL0846N ID 列またはシーケンス・オブジェクト object-type object-name の 指定が無効です。 理由コード = reason-code。
説明
- ID 列の基礎となるデータ・タイプまたはシーケンス・オブジェクトがサポートされていません。 ID 列とシーケンス・オブジェクトは、データ・タイプ SMALLINT、INTEGER、BIGINT、 および位取りがゼロの DECIMAL (または NUMERIC) をサポートします。
- START WITH、INCREMENT BY、MINVALUE または MAXVALUE に対する値が、ID 列またはシーケンス・オブジェクトのデータ・タイプの範囲外です。
- MINVALUE は MAXVALUE 以下でなければなりません。
- 無効な値が CACHE に指定されました。 この値は、最小値 2 の INTEGER でなければなりません。
ユーザーの処置
構文を訂正して、ステートメントを再サブミットしてください。
sqlcode: -846
sqlstate: 42815
SQL0857N 指定されたオプションが矛盾しています (option1、option2)。
説明
指定されたオプションが矛盾しています。 option1 と option2 の両方を指定するか、または 2 つのオプションのどちらも指定しないかのいずれかでなければなりません。
列を定義する際に 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 接続は成功しましたが、1 バイト文字しか使用できません。
説明
サーバー・データベースおよびクライアント・アプリケーションは 異なる言語タイプのコード・ページを使用し、7 ビット ASCII 範囲外の 文字は使用できません ( 7 ビット ASCII 内の文字のみがすべての コード・ページに存在します)。例えば、日本語とラテン 1 コード・ページ間の 接続があっても、日本語文字はすべてラテン 1 コード・ページでは 使用できません。 そのため、これらの文字すべてを避ける必要があります (英語の文字は 問題ありません)。
- フェデレーテッド・データベースは単一バイトおよび 2 バイト文字の両方をサポートしていますが、 データベース・クライアント・システムは単一バイト文字のみをサポートします。
- データ・ソースは 1 バイト文字と 2 バイト文字の両方をサポートしていますが、フェデレーテッド・システムは 1 バイト文字のみをサポートします。
ユーザーの処置
アプリケーションおよびデータベース・コード・ページ間で共通でない文字を使用する SQL ステートメントまたはコマンドを実行要求しないでください。
フェデレーテッド・システム・ユーザーの場合: クライアント・システム、フェデレーテッド・システム、 およびデータ・ソース間で共通でない文字を使用する SQL ステートメントまたはコマンドをサブミットしないでください。
sqlcode: +863
sqlstate: 01539
SQL0864N 参照制約 constraint-name が全選択内の SQL データ変更ステートメントにより修正される表 table-name の行の修正を試行しました。
説明
SQL データ変更ステートメントが FROM 節に指定されましたが、SQL データ変更ステートメントのターゲット基本表に同じ表を修正する参照制約が含まれています。 これは許可されません。
ステートメントは処理できません。
ユーザーの処置
FROM 節内の SQL データ変更ステートメントの使用を回避するか、または SQL データ変更ステートメントのターゲットである表を修正しないように参照制約を変更してください。
sqlcode: -864
sqlstate: 560C6
SQL0865N tm_database の値が無効です。
説明
データベース・マネージャー構成で tm_database として選択されたデータベースが有効ではありません。 データベースはレベル DB2 V2.1 またはそれ以降のレベルでなければならず、DRDA プロトコルで (DB2 Connect で) アクセスされるデータベースは使用できません。
ステートメントは実行できません。
ユーザーの処置
- データベース・マネージャー構成を更新して、 tm_database パラメーター に、有効な データベースを指定してください。
- db2stop と db2start を発行して、変更を 反映してください。
sqlcode: -865
sqlstate: 08001
SQL0866N db2dsdriver.cfg ファイルの <alternategroup> セクションが無効なため、データ・サーバー・ドライバーまたはデータ・サーバー・クライアントはデータベース名 database-name への接続を終了しました。
説明
データベースへの接続が失敗した場合に 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> セクションには 1 つしか <database> 項目を指定できません。
このメッセージは、以下のいずれかの状況が発生したときに戻されます。
- データベース名 database-name に存在するデータベース・サーバー上で代替グループがサポートされていない場合。
- db2dsdriver.cfg の内容が <alternategroup> セクションに関する DB2 for z/OS の制約事項を満たしていない場合。
ユーザーの処置
db2dsdriver.cfg ファイルで、該当するデータベース database-name の項目やセクションが <alternategroup> サポート制約事項を満たすように、関連する <alternategroup> セクションを変更します。
- db2dsdriver.cfg ファイルの <alternategroup> セクションを除去します。
- <alternategroup> セクションに 1 つのデータベース項目のみを指定します。
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 savepoint-name が存在しないか、またはこのコンテキストでは無効です。
説明
RELEASE または ROLLBACK TO SAVEPOINT savepoint-name ステートメントを出した時点でエラーが発生しました。 この名前を持つセーブポイントが見つからないか、 または現在の ATOMIC 実行コンテキストの外側に設定されています。
ステートメントは処理できません。
ユーザーの処置
ステートメントにあるセーブポイントの名前を訂正して、ステートメントを出し直してください。
sqlcode: -880
sqlstate: 3B001
SQL0881N 名前 savepoint-name の SAVEPOINT が存在しますが、このセーブポイント名は再利用できません。
説明
名前 savepoint-name は SAVEPOINT ステートメントですでに使用されています。 このセーブポイント名を使用している SAVEPOINT ステートメントの少なくとも 1 つが、 名前がユニークでなければならないことを宣言している UNIQUE キーワードも指定しているため、 この名前を再利用することはできません。
ステートメントは処理できません。 新しいセーブポイントは設定されていません。 同じ名前の古いセーブポイントが存在します。
ユーザーの処置
このセーブポイントに別の名前を選択し、SAVEPOINT ステートメントを出し直してください。 既存のセーブポイント名を再利用する必要がある場合、 RELEASE SAVEPOINT ステートメントを出して既存のセーブポイントを解放してください。 ただし、指定されたセーブポイントが設定された後でトランザクションに設定されたセーブポイントも、 この RELEASE SAVEPOINT ステートメントによって解放されるので注意してください。 詳細については、SQL リファレンスを参照してください。
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 ステートメントまたはコマンドが失敗しました。 (理由 reason)
説明
このメッセージが返される可能性のあるシナリオは数多くあります。 以下に、このメッセージが返される可能性のあるシナリオの例を 2 つ示します。
- Windows オペレーティング・システム: Windows オペレーティング・システムでこのエラーが返されることがある理由の 1 つとして、データベース・マネージャーによる DB2 データベースまたはデータベース・マネージャー関連のファイルに対する読み取りまたは書き込みが、アンチウィルスまたはファイアウォール・ソフトウェアによって妨げられることが原因である場合があります。
- マイグレーションおよびアップグレードのシナリオ: 新しいバージョンへのアップグレード後、またはフィックスパックの適用後にこのエラーが返されることがある理由の 1 つとして、1 つ以上の表、関連する索引、または統計ビューに関する統計が最新でないことが原因である場合があります。
場合によっては、SQL ステートメントを実行するこの試みが失敗しても、後でこの SQL ステートメントまたは他のステートメントを実行する試みが成功することもあります。
ランタイム・トークン reason は空であるか、または IBM ソフトウェア・サポート担当者のみを対象にした英語のテキストが含まれている可能性があります。
ユーザーの処置
以下のトラブルシューティング・ステップを実行して、このエラーに応答してください。
- Windows オペレーティング・システム:
アンチウィルスまたはファイアウォール・ソフトウェアを無効にします。
DB2 データベースがインストールされたコンピューターにアンチウィルスまたはファイアウォール・ソフトウェアをインストールして実行中である場合は、アンチウィルスまたはファイアウォール・ソフトウェアを無効にし、ステートメントを再実行することにより、アンチウィルスまたはファイアウォール・ソフトウェアが問題の原因でないかどうかを判別します。
アンチウィルスまたはファイアウォール・ソフトウェアを無効にすることで問題が解決する場合は、以下に示す DB2 データベース関連のディレクトリーに対する例外を追加してから、アンチウィルスまたはファイアウォール・ソフトウェアを再び有効にします。
- "IBM¥¥sqllib" - DB2 データベース・アプリケーション・ファイル
- "IBM¥¥DB2" - データベース・マネージャー・インスタンス
- "<install-drive>¥¥DB2" - データベース・パーティション・ディレクトリー
- マイグレーションおよびアップグレードのシナリオ:
RUNSTATS コマンドを使用して統計を更新した後、ステートメントを再実行します。
- フェデレーテッド環境:
- エラーを返しているフェデレーテッド・データ・ソースまたはフェデレーテッド・データベース・サーバーを判別します。
- エラーを返しているデータ・ソースまたはフェデレーテッド・データベース・サーバーのために、診断情報を収集し、トラブルシューティング・ステップを実行します。
データ・ソースの問題判別手順にはさまざまなものがあるため、エラーを返しているデータ・ソースまたはフェデレーテッド・データベース・サーバーのための診断およびトラブルシューティングの参照情報を調べてください。
記載されたトラブルシューティング・ステップを実行した後もエラーが続く場合は、以下に示すように IBM ソフトウェア・サポートに連絡して支援を受けてください。
- DB2 トレースおよび独立トレース機能などのトレース機能を使用して診断情報を収集します。
- 以下の診断情報を収集します。
- 問題の説明
- SQLCODE
- 理由 reason
- SQLCA の内容 (ある場合)
- トレース・ファイル (可能な場合)
- IBM ソフトウェア・サポートに連絡します。
sqlcode: -901
sqlstate: 5UA0L, 58004
SQL0902C システム・エラーが発生しました。 後続の SQL ステートメントは処理されません。 IBM ソフトウェア・サポートの理由コード: reason-code。
説明
このメッセージは、データベースを引き続き使用することが不可能になり得るクリティカル・エラー (重大なオペレーティング・システム・エラー、またはストレージ・メディアへのアクセス・エラーなど) がデータベース・マネージャーで発生すると返されます。 オペレーティング・システム・エラーまたは重大なメディア・エラーがデータベース・マネージャーで発生する可能性があるシナリオにはさまざまなものがあります。 このメッセージが返される可能性があるシナリオの一例を以下に示します。
- データベース・マネージャー・リソースにセマフォーが必要なときに、その要求を満たすのに十分なセマフォーがないと、このメッセージが返されることがあります。
ランタイム・トークン reason-code は空のこともありますが、IBM ソフトウェア・サポート担当者の支援のみを目的としています。
ユーザーの処置
以下のトラブルシューティング・ステップを実行して、このメッセージに対応します。
- db2diag ログ・ファイル内の診断情報を調査して、このメッセージが返される前に発生したエラーを特定します。
- 要求されたセマフォーが多すぎること、またはデータベース・マネージャーの要求を満たすのに十分なセマフォーが存在しないことを示すメッセージが db2diag ログ・ファイル内にある場合は、オペレーティング・システム・パラメーターを使用してセマフォーの数を増やします。
記載されたトラブルシューティング・ステップを実行した後もエラーが続く場合は、以下に示すように IBM ソフトウェア・サポートに連絡して支援を受けてください。
- DB2 トレースおよび独立トレース機能などのトレース機能を使用して診断情報を収集します。
- 以下の診断情報を収集します。
- 問題の説明
- SQLCODE
- 理由 reason
- SQLCA の内容 (ある場合)
- トレース・ファイル (可能な場合)
- IBM ソフトウェア・サポートに連絡します。
フェデレーテッド・システム・ユーザーの場合: 問題を切り分けて要求失敗の原因となったデータ・ソースを突き止め、そのデータ・ソースで必要な診断手順を実行してください。 データ・ソースの問題判別手続きはそれぞれ違うので、適用できるデータ・ソース・リファレンスを参照してください。
sqlcode: -902
sqlstate: 58005
SQL0903N COMMIT ステートメントが失敗し、トランザクションはロールバックされました。 理由コード: reason-code。
説明
現在の作業単位に関連する 1 つ以上のサーバーが、コミットされる データベースを準備できませんでした。 COMMIT ステートメントは失敗し、トランザクションは ロールバックされました。 現在の作業単位に関係するサーバーが 1 台のみである場合、トランザクションは代わりにコミットされた可能性があります。
可能性のある理由コードは、以下のとおりです。
- 01
作業単位に関連するいずれかのデータベースに対する接続が失われました。
- 02
作業単位に関連するデータベースまたはノードの 1 つがアクセスされましたが、 コミットを準備できません。
フェデレーテッド・システム・ユーザーの場合: 接続したデータベースが、 ニックネームが使用されているフェデレーテッド・サーバー・データベースである場合、 ニックネームに必要ないずれかのデータ・ソースがコミットを準備できません。
- 03
作業単位に関連する DB2 Data Links Manager がコミットを準備できませんでした。
- 04
1 つ以上の作成済み一時表または宣言済み一時表が、矛盾した状態にあります。
- 05
予期しないエラーが発生しました。 詳細については管理通知ログをチェックしてください。
フェデレーテッド・システム・ユーザーの場合: 接続したデータベースが、 ニックネームが使用されているフェデレーテッド・サーバー・データベースである場合、ニックネームに必要なデータベース内のいずれかのデータ・ソースへの接続が失われました。
- 06
再同期情報を参加者のいずれかに送信できません。 その参加者は IPv4 しかサポートしません。 その参加者に対してデュアル・スタック・モードを有効にしてください。
ユーザーの処置
データベースに対する接続が失われた場合は、接続を再確立します。 障害が接続に関連していない場合は、リモート・システムのエラー診断ログを参照して、障害の特質と必要なアクションを判別します。 アプリケーションを再実行してください。
sqlcode: -903
sqlstate: 40504
SQL0904N 使用できないリソースのため、実行が失敗しました。 理由コード: reason-code、リソースのタイプ: resource-type、およびリソース名: resource-name。
説明
タイプ resource-type のリソース resource-name は、reason-code に示された時刻に使用できなかったため、SQL ステートメントを実行できませんでした。 リソース ・タイプ・コードの解説には DB2 (MVS 版) の問題判別資料 を参照してください。
ユーザーの処置
使用できなかったリソースの ID をチェックしてください。 リソースが使用できなかった理由を 判別するには、指定された reason-code を参照してください。
sqlcode: -904
sqlstate: 57011
SQL0905N リソースの限界を超過しているため、実行が失敗しました。 リソース名 = resource-name、制限 = limit-amount1 CPU 秒 (limit-amount2 サービス単位) 、limit-source から導出。
説明
リソース制限を超えたため、SQL ステートメントの実行が終了しました。
制限を超えたリソースの名前は resource-name です。 これは、制限の派生元のリソース限定表の列名でもあります。 超えた制限は、CPU 秒単位で limit-amount1、 サービス単位で limit-amount2 です。 resource-name は、各 SQL ステートメントに許可されている CPU 秒の数値の、ASUTIME である可能性があります。 許可される 最大 CPU 秒数は、limit-amount1 です。 サービス単位での最大数は、limit-amount2 です。
この制限量の導出元ソースは limit-source で、これはリソース限定表の名前か、または 'システム・パラメーター' の名前です。 ソースがシステム・パラメーターの場合、表へのアクセス時に、リソース限定表に適用可能項目が入っていなかったか、またはエラーが発生しました。 いずれかの場合において、制限はインストール (システム) パラメーターから取得されました。
ユーザーの処置
SQL ステートメントがなぜ長時間かかったかを判別して、適切なアクションをとってください。 SQL ステートメントの単純化、表および索引の再作成、またはリソース限定表保守担当のインストール・グループに連絡することを考慮してください。
この戻りコードを受け取るアプリケーション・プログラムが追加 SQL ステートメントを実行できます。
sqlcode: -905
sqlstate: 57014
SQL0906N 以前のエラーのためにこの関数が無効になっているため、SQL ステートメントを実行できません。
説明
前のエラーのため要求された関数が無効になっているため、SQL ステートメントの実行が失敗しました。 この状態は、アプリケーション・プログラムが異常終了を代行受信した場合 (例えば、ON ERROR PL/I プログラムで ON ERROR 条件)、および SQL ステートメントの実行を継続した場合に発生します。 また、この状態は、DB2 CICS トランザクションでスレッド作成エラーが発生したにもかかわらず、 SYNCPOINT ROLLBACK を最初に発行せずに、SQL 要求の発行を継続した場合に発生します。
ユーザーの処置
一般には、アプリケーション・プログラムはこの戻りコードを受信した段階で終了する必要があります。 この戻りコードで、 アプリケーションが他の SQL ステートメントを実行するためのすべての試行が失敗します。 DB2 CICS トランザクションの場合、 SQLCA で SQLERRP フィールドがモジュール名 DSNCEXT1 を含む場合、 トランザクションが SYNCPOINT ROLLBACK を発行して、処理を継続する可能性があります。 トランザクションが ROLLBACK を選択して処理を継続する場合は、 最初のスレッド作成エラーの原因となった状況を修正することが可能でなければなりません。
sqlcode: -906
sqlstate: 24514, 51005, 58023
SQL0907N MERGE ステートメントのターゲット表 table-name を、 制約またはトリガー name によって変更しようとしました。
説明
MERGE ステートメントによって、制約またはトリガー name がアクティブ化します。これらは ターゲット表または MERGE ステートメントの同じ表階層内の表でもある表 table-name の更新、挿入または削除 を行おうとします。 これは許可されません。
ユーザーの処置
MERGE ステートメントを変更して、制約またはトリガーがアクティブ化する操作を除去するか、または 制約またはトリガーのある表を変更して、ターゲット表への参照を除去してください。
sqlcode: -907
sqlstate: 27000
SQL0908N auth-id を使った bind-type エラー。権限 BIND、REBIND、または AUTO_REBIND 操作は許可されません。
説明
- bind-type
- バインド操作のタイプ (BIND、REBIND または AUTO-REBIND).
- auth-id
- BIND サブコマンドの起動者の許可 ID または AUTO-REBIND 操作に対する起動者の 1 次許可 ID。
ユーザーの処置
指示された許可 ID がバインドに使用できる場合、アクティブ RLST 表を入力変更してください。 AUTO-REBIND 操作が無効になった場合、パッケージを再実行する前に再バインドしてください。
sqlcode: -908
sqlstate: 23510
SQL0909N オブジェクトが削除されています。
説明
アプリケーション・プログラムは、(1) 表をドロップしてからアク セスしようとしました、または (2) 索引をドロップしてからその索引を使用してオブジェクト表にアクセスしようとしました。
ユーザーの処置
ドロップした後に、オブジェクトにアクセスまたは使用としないように、アプリケーション・プログラムの論理を訂正する必要があります。
アプリケーション・プログラム内で索引をドロップすることは特に危険です。 なぜならば、アプリケーション (バインドまたは再バインドによって) に対して生成された プランがオブジェクト表にアクセスするため、実際に特別な索引を使用していることを判別する方法はないからです。
sqlcode: -909
sqlstate: 57007
SQL0910N 変更がペンディングになっているオブジェクトには SQL ステートメントからアクセスできません。
説明
アプリケーション・プログラムが、 以下のいずれかが行なわれたのと同じ作業単位内のオブジェクトにアクセスしようとしました。
- アプリケーション・プログラムが、 オブジェクトまたは関連オブジェクト (例えば、表の索引) に対して DROP を発行した。
- アプリケーション・プログラムが、制約を追加またはドロップしたオブジェクトに対して、 ステートメントを発行した。
- アプリケーション・プログラムが、 直接または間接的にオブジェクトに影響を与える DROP TRIGGER または CREATE TRIGGER ステートメントを発行した。
- アプリケーション・プログラムが、 オブジェクトを変更ペンディング状態にする ROLLBACK TO SAVEPOINT ステートメントを発行した。
- アプリケーション・プログラムが発行したステートメントが原因で、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 ステートメントが含まれる場合は、以降同じ作業単位内で、表をインスタンス化する作成済み一時表への参照を行うことはできません。
または、アプリケーション・プログラムが、変更が保留中の WLM オブジェクトにアクセスしようとする SQL ステートメントを発行しました。 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 作成済み一時表または宣言済み一時表を扱う挿入、削除、または更新ステートメントが失敗すると、その表にある行はすべて削除されます。 障害が発生した時点で、 この表に対してオープンされていたカーソルはアクセス不能になるため、 アプリケーションによってクローズされなければなりません。
ペンディング状態の ALTER TABLE ... ATTACH PARTITION が原因で ALTER TABLE ... DETACH PARTITION が失敗する場合は、2 つの別々の作業単位を使用してこの 2 つの操作を行ってください。
SQL ステートメントでトラステッド・コンテキスト・オブジェクトにアクセスしようとした場合は、そのステートメントを後で再発行してください。
SQL ステートメントで WLM オブジェクトにアクセスしようとした場合は、そのステートメントを後で再発行してください。
フェデレーテッド・システム・ユーザーの場合: 前のアクションで問題が解決されない場合は、要求を分離します。 その後、データ・ソース上に対して存在するその他の制約のうち、オブジェクトへのアクセスを妨げる原因となっているものについて調べてください。 アプリケーションがそれらの制約に違反しないことを確認してください。
sqlcode: -910
sqlstate: 57007
SQL0911N デッドロックまたはタイムアウトのため、現在のトランザクションが ロールバックされました。 理由コード reason-code
説明
現在の作業単位が、オブジェクトの使用について、 未解決競合状態になったために、ロールバックされました。
理由コードは以下のとおりです。
- 2
デッドロックのために、トランザクションがロールバックされました。
- 68
ロック・タイムアウトのために、トランザクションがロールバックされました。
- 72
トランザクション中の DB2 Data Links Manager エラーのために、トランザクションがロールバックされました。
- 73
CONCURRENTDBCOORDACTIVITIES しきい値などのキューイングしきい値が原因で 2 つ以上のアクティビティーがデッドロック状態になったため、トランザクションがロールバックされました。
- 74
理由コード 73 と同様に、2 つ以上のアクティビティーがデッドロック状態になったため、トランザクションがロールバックされました。
- 75
トランザクションはロールバックされました。2 つ以上のアプリケーションが、ワークロード・マネージャーのアドミッション制御とロックによって制御されるリソースの組み合わせを待機してデッドロックされたためです。
- 76
トランザクションはロールバックされました。理由は、2 つ以上のアプリケーションが、ワークロード・マネージャーのアドミッション制御によって制御されるリソースを待機してデッドロックされたためです。
アプリケーションは直前の COMMIT にロールバックされました。
ユーザーの処置
作業単位に関連する変更は、もう一度入力する必要があります。
デッドロックまたはロック・タイムアウトを防ぐには、 可能であれば、長く実行されるアプリケーションまたは、 デッドロックを引き起こしやすいアプリケーションに対して、頻繁に COMMIT を発行してください。
フェデレーテッド・システム・ユーザーの場合: デッドロックはフェデレーテッド・サーバーまたはデータ・ソースで発生する可能性があります。 データ・ソースおよび潜在的にフェデレーテッド・システムをスパンするデッドロックを検出するメカニズムが存在しません。 要求が失敗したデータ・ソースを識別することができます。 (問題判別の手引きを参照して、SQL ステートメントの処理に失敗したデータ・ソースを判別してください。)
デッドロックはだいたい標準であるか、または決まった SQL の組み合わせを処理中に予期されます。 可能な限りデッドロックを避けるために、アプリケーションを設計することをお勧めします。
CONCURRENTDBCOORDACTIVITIES しきい値などのキューイングしきい値のためにデッドロック状態になった場合は、キューイングしきい値の値を増やしてください。
ワークロード・マネージャーのアドミッション制御によって制御されるリソースをアプリケーションが待機しているためにデッドロック状態になった場合は、アプリケーションの最後のステートメントが実行されたサービス・クラス用のリソースの共有を増やしてください。ワークロード・マネージャーのアドミッション制御によって制御されるリソースに関係するデッドロックを防ぐには、不要になった SQL カーソルをクローズすることで、アプリケーション内で同時に実行する SQL ステートメントの数を減らしてください。
sqlcode: -911
sqlstate: 40001
SQL0912N データベースに対するロック要求の最大値に達しました。 理由コード = reason-code
説明
ロック要求のためのメモリーが十分でないため、データベースのロックの最大数に達しました。
理由コードは、制限に達したメモリーのタイプを示しています。
- 1
ローカル・ロック・マネージャー・メモリー。これは LOCKLIST データベース構成パラメーターを使用して構成されます。
- 2
グローバル・ロック・マネージャー・メモリー。これは CF_LOCK_SZ データベース構成パラメーターを使用して構成されます。
ステートメントは処理できません。
ユーザーの処置
アプリケーションは、他の SQL ステートメントの サブミットを行う前に、COMMIT または ROLLBACK ステートメントの サブミットを行う必要があります。 理由コードで示されているデータベース構成パラメーターの値を増やして、より多くのロック要求をサポートするようにします。
- 1
ローカル・ロック・マネージャーに割り振られたロック・メモリーを管理する LOCKLIST データベース構成パラメーターを増やしてください。
- 2
グローバル・ロック・マネージャーに割り振られたロック・メモリーを管理する CF_LOCK_SZ データベース構成パラメーターを増やしてください。
sqlcode: -912
sqlstate: 57011
SQL0913N 分散トランザクションの実行がデッドロックまたはタイムアウトによって失敗しました。理由コード reason-code
説明
分散トランザクションで発行された要求は、オブジェクトの使用の未解決の競合に関係していたため、実行は失敗しました。
理由コードは以下のとおりです。
- 2
デッドロックのために、トランザクション・ブランチが正常に実行されていません。
- 68
ロック・タイムアウトのために、トランザクション・ブランチが正常に実行されていません。
- 72
トランザクションに関係する DB2 Data Links Manager に関連するエラーのために、トランザクションがロールバックされました。
- 80
タイムアウトのために、ステートメントが正常に実行されていません。
このメッセージのテキストとランタイム・トークンは、データベース・サーバーまたはクライアントのバージョンおよびプラットフォームによって異なる場合があります。
ユーザーの処置
- 理由コード 80 の場合、アプリケーションを終了せずに失敗した ステートメントを再試行することができます。 アプリケーションが 複数のリモート・データベースにアクセスする場合、グローバル・ デッドロックを防ぐために、トランザクションをロールバックするのは よい方法です。
- その他の理由コードの場合、トランザクションをロールバックする ように要求を出してください。 トランザクションは現在のトランザクション・ブランチの 障害のため、コミットできません。
- デッドロックまたはロック・タイムアウトを回避するには、可能であれば長時間実行アプリケーションで、または高速同時アクセスでデータを要求するアプリケーションで頻繁に COMMIT 操作を発行してください。
sqlcode: -913
sqlstate: 57033
SQL0917N パッケージのバインドが失敗しました。
説明
エラーが発生したため、パッケージを作成できませんでした。
この SQLCODE はバインドまたはコミット処理中に発行できます。 これがコミット処理中に発行された場合は、 データベースに対する変更がすべてロールバックされます。 バインド処理中に発行された場合は、パッケージの作成が失敗するだけであり、 作業論理単位内のその他の変更はコミット可能です。
ユーザーの処置
多くの場合、この問題は、 エラーが発生したために 1 つ以上の 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 モニター環境の接続タイプ 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、ストアード・プロシージャー、 またはメソッド) を参照したステートメントでエラーが発生している場合、 引数と戻り値を入れるのに必要なストレージが、 システムで使用できるメモリー量を超えている可能性があります。 これは、このルーチンが、大きなサイズ (例えば、2GB など) の BLOB、CLOB、 DBCLOB パラメーターまたは戻り値を使って定義されている場合に発生することがあります。
これらの解決方法を試しても問題が解決されない場合は、このルーチンの定義の変更を考慮する必要がある可能性があります。
sqlcode: -930
sqlstate: 5UA0L、57011
SQL0931C オペレーティング・システム・ファイル表がオーバーフローしました。 後続の SQL ステートメントは処理されません。
説明
オペレーティング・システムの制限に達しました。 アプリケーション・プログラムは、これ以上 SQL ステートメントを発行できません。 データベースにはリカバリーが必要であるというマークが付けられ、 このデータベースを使用しているすべてのアプリケーションは、 このデータベースにアクセスできなくなります。
ユーザーの処置
データベースを使用しているすべてのアプリケーションを終了してください。 データベースを再始動してください。
- MAXFILOP データベース構成パラメーターを小さな値に変更してください (これにより、 DB2 のオペレーティング・システム・ファイル表の使用度が減少します)。
- できれば、システム・ファイルを使用しているアプリケーションを終了してください。
- オペレーティング・システム・ファイル表制限の増加方法については、 オペレーティング・システムの資料を参照してください。 ほとんどの UNIX 環境では、これはカーネル構成をより大きな値で更新することにより、 行うことができます。 (AIX の場合、これは、使用しているマシンのメモリー容量を増やすことによってのみ可能です。)
sqlcode: -931
sqlstate: 58005
SQL0949N 無効なオペレーティング・システム操作が UTL_FILE モジュール・ルーチンにより試行されました。 オペレーティング・システム・エラー = error-text。
説明
UTL_FILE モジュール・ルーチンにより試行された操作により、オペレーティング・システムは error-text で示されているエラーを返しました。
ユーザーの処置
オペレーティング・システムのエラー・メッセージ情報を参照し、error-text により報告された問題の訂正方法を判別してください。
sqlcode: -949
sqlstate: 58024
SQL0950N 表または索引は、現在使用中のため、ドロップできません。
説明
オープン・カーソルが現在表または索引を使用している場合は、 DROP TABLE または DROP INDEX ステートメントを発行することができません。
ステートメントは処理できません。 表または索引はドロップされません。
ユーザーの処置
必要なカーソルをすべてクローズして、ステートメントの再サブミットを行ってください。
sqlcode: -950
sqlstate: 55006
SQL0951N 同じアプリケーション処理で使用されているため、タイプ object-type のオブジェクト object-name を変更できません。
説明
ロック状態または使用中のオブジェクトに対する ALTER ステートメント、SET INTEGRITY ステートメント、または TRUNCATE ステートメントを発行することはできません。
ステートメントは処理できません。 このオブジェクトは変更されていません。
ユーザーの処置
オブジェクト object-name に直接的、または間接的に依存するカーソルをクローズし、 ステートメントを再サブミットしてください。
sqlcode: -951
sqlstate: 55007
SQL0952N 割り込みにより、処理が取り消されました。
説明
ユーザーが割り込みキー・シーケンスを押した可能性があります。
ステートメントの処理は終了します。 終了が発生する前の変更が、データベースに適用されている可能性がありますが、コミットされません。
また、照会がタイムアウトになったため Call Level Interface (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 このステートメントを処理するためのソート・メモリーを割り振れません。 理由コード = reason-code。
説明
ソート処理を行うため、データベース・エージェントで使用できる仮想メモリーが不足しています。 理由コードの説明
- 1
専用処理メモリーが不十分です。
- 2
ソート処理のためのデータベース広域共有メモリー域に共有メモリーが不十分です。
- 3
カラム・オーガナイズ表に対する照会のための共有メモリーが不足しています。
このステートメントは処理できませんが、他の SQL ステートメントについては処理されることがあります。
ユーザーの処置
各理由コードに該当するアクションを実行することにより、このメッセージに対応します。
- 1
インスタンス・レベルまたはシステム・レベルで使用可能なメモリー・リソースを増やします。あるいは、構成されているメモリー所要量を削減します。例えば、SORTHEAP データベース構成パラメーターの値を小さくします。
- 2
データベース、インスタンス、またはシステムのレベルで使用可能なメモリー・リソースを増やします。あるいは、構成されているメモリー所要量を削減します。例えば、SORTHEAP データベース構成パラメーターの値を小さくします。
- 3
SORTHEAP データベース構成パラメーターの値を大きくします。SHEAPTHRES_SHR など、さらに高水準のデータベース構成パラメーターの設定値を大きくすることが必要となる可能性があります。
sqlcode: -955
sqlstate: 57011
SQL0956C ステートメントの処理に使用できる十分なストレージが、データベース・ヒープにありません。
説明
データベースの使用可能メモリーをすべて使いきってしまいました。
ステートメントは処理できません。
ユーザーの処置
このメッセージを受け取ったアプリケーションを終了してください。
より多くのデータベース・ヒープを使用できるようにするために、dbheap データベース構成パラメーターを増やしてください。 入出力サーバーの数が上限に近い場合は、この数を減らすことも役に立つ可能性があります。
dbheap データベース構成パラメーターが AUTOMATIC に設定される場合、DATABASE_MEMORY データベース構成設定または INSTANCE_MEMORY データベース・マネージャー構成設定を増やす必要があります。
構成パラメーターを更新する場合、エラー条件が解決されるまで、一度に現行サイズの 10% ずつ構成パラメーターを変更することが推奨されています。 dbheap を変更するには、以下のようなコマンドを入力します。これは、 データベース sample の 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 最大数のオブジェクトが次の名前または ID を持つ表スペースに作成されました: table-space-list。
説明
表スペースでオブジェクトが最大数に達したため、表スペースに新しいオブジェクトを作成できません。
ユーザーの処置
オブジェクトまたは表を作成する別の表スペースを指定します。 表スペースを SYSTEM TEMPORARY 表スペースにした場合、同時に使用される一時表が多すぎます。
sqlcode: -960
sqlstate: 57011
SQL0964C データベースのトランザクション・ログがいっぱいです。
説明
トランザクション・ログのすべてのスペースを使い切ってしまいました。
2 次ログ・ファイルを持つ循環ログが使用されている場合は、 2 次ログ・ファイルの割り振りと使用が試みられています。 ファイル・システムにスペースがない場合は、2 次ログを使用することができません。
アーカイブ・ログが使用されている場合、 ファイル・システムは、新しいログ・ファイルを収容するためのスペースを提供しません。
このメッセージは、可能なログ・シーケンス番号のほぼすべてをデータベースが使用済みであるために返されることもあります。 データベース・マネージャーは、ログ・シーケンス番号 (LSN) と呼ばれる固有 ID を使用してデータベース・ログ・レコードを識別します。トランザクションに関連してデータベース・ログを書き込む必要があるたびに、データベースは新しい LSN 値を使用します。
アプリケーションは、データベースでのログ・レコード書き込みを伴うトランザクションを実行することができません。
ステートメントは処理できません。
ユーザーの処置
このメッセージ (SQLCODE) を受け取った場合は、 COMMIT または ROLLBACK を実行するか、またはもう一度やり直してください。
データベースが並行アプリケーションで更新されている場合は、もう一度やり直してください。 他のアプリケーションがトランザクションを完了すると、ログ・スペースが解放される場合があります。
もっと頻繁にコミット処理を行ってください。 トランザクションがコミットされていない場合は、そのトランザクションがコミットされたときに、 ログ・スペースが解放される場合があります。 アプリケーションの設計時に、更新トランザクションのコミット時期を考慮して、 ログがフルにならないようにしてください。
デッドロックが発生している場合は、より頻繁にチェックしてください。 これは、データベース構成パラメーター DLCHKTIME を減らせば可能です。 そうすれば、デッドロックを見つけることができ、 すみやかにデッドロックを解決 (ROLLBACK を使って) して、ログ・スペースを解放することができます。
この状態が頻発する場合は、より大きなログ・ファイルを使用できるようにするために、データベース構成パラメーターを増やしてください。 より大きなログ・ファイルは容量を必要としますが、アプリケーションの再試行を減少させます。 より大きなログ・ファイルは、より多くのスペースを必要としますが、 再処理を行うためのアプリケーションの実行を減少させます。 調整が必要になる可能性のあるトランザクション構成パラメーターは、LOGFILSIZ、LOGPRIMARY、LOGSECOND です。
サンプル・データベースをインストールしている場合は、それをドロップして サンプル・データベースを再インストールしてください。
可能な LSN 値のほぼすべてをデータベースが使用済みであるためにこのメッセージが返された場合は、以下のステップを実行することによって LSN 値をゼロにリセットできます。
- データベースからすべてのデータをアンロードする
- データベースをドロップして再作成する
- すべてのデータをロードする
sqlcode: -964
sqlstate: 57011
SQL0965W このワークステーションのメッセージ・ファイルには、 SQL 警告 SQLCODE に対応するメッセージ・テキストがありません。 警告は、オリジナル・トークン token-list とともに、 モジュール name から返されました。
説明
データベース・サーバーは、アプリケーションにコード SQLCODE を返しました。 この警告コードは、このワークステーションの DB2 メッセージ・ファイルのメッセージに対応していません。
ユーザーの処置
指定された SQLCODE についての詳細は、データベース・サーバーの資料を参照してください。
SQL0966N データベース接続サービス・ディレクトリーに指定されたエラー・マッピング・ファイル name が見つからないか、 またはオープンできません。
説明
- エラー・マッピング・ファイルが存在しません。
- エラー・マッピング・ファイルが、現在他のアプリケーションによってオープンされています。
- エラー・マッピング・ファイルが指定したパスに存在しません。
- エラー・マッピング・ファイルが壊れています。
エラー・マッピング・データは検索されませんでした。
ユーザーの処置
ファイルをオープンしているアプリケーションからファイルを解放するか、 またはオリジナル・ファイルを再インストールまたはリストアしてください。
sqlcode: -966
sqlstate: 57013
SQL0967N データベース接続サービス・ディレクトリーに指定されたエラー・マッピング・ファイル name のフォーマットが無効です。
説明
プログラムがエラー・マッピング・ファイルの読み取りを行っていたときに、エラーが発生しました。
エラー・マッピング・データは検索されませんでした。
ユーザーの処置
エラー・マッピング・ファイルのすべての構文エラーを訂正してください。
sqlcode: -967
sqlstate: 55031
SQL0968C ファイル・システムがいっぱいです。
説明
データベースを持っているファイル・システムのいずれかがいっぱいです。 このファイル・システムには、データベース・ディレクトリー、データベース・ログ・ファイル、 または表スペース・コンテナーが入っている可能性があります。
DB2 pureScale 環境において、データベース・マネージャー・インスタンスにメンバーを追加している場合、付加的なメンバー・ファイルを作成するためのディスク・スペースが不足しています。
ステートメントは処理できません。
ユーザーの処置
不要なファイルを消去して、システム・スペースに空きを作ってください。 データベース・ファイルは消去しないでください。 さらにスペースが必要な場合は、不要な表および索引のドロップが必要になる場合があります。
unix ベース・システムでは、カレント・ユーザー ID に許可されている最大ファイル・サイズを超えたために、 このディスク・フル状態になる場合があります。 chuser コマンドを使用して、fsize を更新してください。 リブートが必要になる場合があります。
コンテナーのサイズ変化により、ディスクがフルになった可能性があります。 ファイル・システムに十分なスペースがある場合は、表スペースをドロップしてコンテナーを同じサイズで再作成してください。
処理できないステートメントが LOB データ・タイプを参照した場合:
- アプリケーションで使用されたカーソルが使用の直後にクローズされることを確認します。
- アプリケーション内で、COMMIT ステートメントが定期的に実行されることを確認します。
- このステートメントの実行中に一時 LOB データを保持するためのコンテナーをシステム一時表スペースにさらに追加します。
DB2 pureScale 環境において、不要なファイルを削除してシステム・スペースを解放するか、またはファイル・システムの容量を追加した後、コマンドを再実行してください。
sqlcode: -968
sqlstate: 57011
SQL0969N このワークステーションのメッセージ・ファイルには、 SQL エラー error に対応するメッセージ・テキストがありません。 エラーは、オリジナル・トークン token-list とともに、 モジュール name から返されました。
説明
このデータベース・サーバーは、ご使用のアプリケーションに SQLCODE error を戻しました。 このエラー・コードは、 このワークステーション上の DB2 メッセージ・ファイルのメッセージに対応していません。
ユーザーの処置
指定された SQLCODE については、データベース・サーバーの資料を参照してください。 データベース・サーバーの資料にある指定されたアクションを行い、この問題を修正してください。
フェデレーテッド・システム・ユーザーの場合: 問題を切り分けて要求失敗の原因となったデータ・ソースを突き止めてください。 データ・ソースのマニュアルで error を探してください。 問題がデータに依存する場合は、 エラー発生時にデータ・ソースで処理されていたデータを調べることが必要になるかもしれません。
SQL0970N システムが、読み取り専用ファイルへの書き込みを試みました。
説明
データベースによって使用されているファイルが読み取り専用とマークされているか、 または存在しません。 このファイルに対し、データベースには書き込みアクセスが必要です。
ステートメントは処理できません。
ユーザーの処置
このメッセージ (SQLCODE) を受け取ったアプリケーションを終了してください。 すべてのデータベース・ファイルが、 読み取りと書き込みの両方のアクセスを許されていることを確認してください。 指定されたファイル名に必要のないブランク・スペースがないかどうか調べてください。
sqlcode: -970
sqlstate: 55009
SQL0972N データベースのドライブに、正しいディスケットが入っていません。
説明
ドライブ内のディスケットが、データベース・ディスケットではありません。
ステートメントは処理できません。
ユーザーの処置
必要なディスケットをドライブに挿入してください。 そのドライブに存在するデータベースを使用するアプリケーションを始動した場合は、 そのディスケットを取り除かないでください。
sqlcode: -972
sqlstate: 57019
SQL0973N ステートメントの処理に使用できる十分なストレージが、heap-name ヒープまたはスタックにありません。
説明
このヒープの使用可能メモリーをすべて使いきってしまいました。
ステートメントは処理できません。
ユーザーの処置
このメッセージ (SQLCODE) を受け取ったアプリケーションを終了してください。 heap-name 構成パラメーターを修正して、ヒープ・サイズまたはスタック・サイズを大きくしてください。
heap-name 構成パラメーターが AUTOMATIC に設定される場合、APPL_MEMORY データベース構成設定、DATABASE_MEMORY データベース構成設定、または INSTANCE_MEMORY データベース・マネージャー構成設定を増やす必要があります。 そうでない場合、heap-name 構成パラメーター値を変更して、ヒープ・サイズを大きくしてください。
パッケージ・キャッシュとカタログ・キャッシュにはソフト・リミットがあります。そのために、DATABASE_MEMORY データベース構成設定または INSTANCE_MEMORY データベース・マネージャー構成設定を増やす必要があります。
DATABASE_MEMORY データベース構成パラメーターを変更する際、パラメーターを AUTOMATIC に設定すると、データベース・メモリーを自動的に管理するようにデータベース・マネージャーに通知が出されます。
アプリケーション共有ヒープ・サイズの場合、APPL_MEMORY データベース構成設定、または INSTANCE_MEMORY データベース・マネージャー構成設定を増やす必要があります。
構成パラメーターを更新する場合、エラー条件が解決されるまで、一度に現行サイズの 10% ずつ構成パラメーターを変更することが推奨されています。
例えば、heap-name が 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 データベースまたはインスタンス name がユーザー username によって静止されているため、 新しいトランザクションを開始できませんでした。 静止タイプ: type
説明
使用しようとしていたインスタンスまたはデータベースは他のユーザーによって静止されており、 このインスタンスまたはデータベースが静止状態でなくなるまで、 新規トランザクションは許可されません。
静止タイプ type は、すでに静止されているインスタンスまたはデータベースを参照しています。 '1' がインスタンスで、'2' がデータベースです。
ユーザーの処置
インスタンスまたはデータベースを現在静止しているユーザーに連絡して、 インスタンスまたはデータベースが静止から解放される時期を尋ね、解放されたときに要求を再試行してください。
sqlcode: -975
sqlstate: 57046
SQL0976N 指定された入出力装置の準備ができていません。
説明
入出力装置またはメディアは入出力コマンドを受け入れる準備ができていません。
ステートメントは処理できません。
ユーザー応答:
入出力装置またはメディアの準備ができていることを確認し、操作を再試行してください。
ユーザーの処置
sqlcode: -976
sqlstate: 57021
SQL0977N COMMIT 状態が不明です。
説明
tm_database が、 COMMIT 処理中に使用できなくなったため、COMMIT の結果が不明になりました。 データベースの再同期化が、 tm_database が使用できるようになったときに発生します。 再同期化中に、トランザクションがロールバックされる場合があることに注意してください。 これ以降の SQL ステートメントの実行は安全に行われますが、ロックは、 再同期処理が完了するまで保持されます。
ユーザーの処置
例えば、CLP を使用して、 tm_database に対する接続が可能なことを確認してください。 接続できない場合は、返された SQLCODE に必要なアクションにしたがって、 接続が確立できることを確認してください。
sqlcode: -977
sqlstate: 40003
SQL0978N ストレージ・メディアが書き込み保護になっています。
説明
書き込み操作がデータベースに対して試みられましたが、データベースのストレージ・メディアが書き込み保護になっています。
ステートメントは処理できません。
ユーザーの処置
正しいストレージ・メディアを使用していることを確認してください。 必要に応じて、ストレージ・メディアから書き込み保護を取り除いてください。
sqlcode: -978
sqlstate: 55009
SQL0979N NONE の SYNCPOINT で実行中のアプリケーション処理の COMMIT が、 num データベースに対して失敗しました。 失敗には、alias/SQLSTATE1、alias/SQLSTATE2、alias/SQLSTATE3、alias/SQLSTATE4 というデータベース別名と SQLSTATE の対 (最大 4 つまで返されます) が含まれます。
説明
アプリケーションが複数のデータベースに接続されており、COMMIT が発行されましたが、それらの接続の 1 つ以上に対して失敗しました。
フェデレーテッド・システム・ユーザーの場合: 失敗した接続が、ニックネームが使用されているフェデレーテッド・サーバー・データベースである場合、ニックネームに必要なデータ・ソースに対するコミットが失敗します。
ユーザーの処置
更新されるアプリケーションとデータの性質に応じて、 アプリケーションが意図した変更が、 すべてのデータベースにわたって整合性を持って反映されていることを確認するために、 これ以上の処理の中止、失敗のログへの記録、 および適切な 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 データベース・カタログの処理中に、ファイル・エラーが発生しました。 データベースは使用できません。
説明
システムが、カタログ・ファイル入出力エラーをリカバリーできません。
システムは、データベースを使用するステートメントを処理できません。
ユーザーの処置
バックアップ・コピーからデータベースをリストアしてください。
サンプル・データベースをインストールしている場合は、それをドロップして サンプル・データベースを再インストールしてください。
sqlcode: -985
sqlstate: 58005
SQL0986N ユーザーの表の処理中に、ファイル・エラーが発生しました。 表は使用できません。
説明
表のデータは有効ではありません。
システムは、表を使用するステートメントを処理できません。
ユーザーの処置
データベースに不整合がある場合は、 バックアップ・バージョンからデータベースをリストアしてください。
サンプル・データベースをインストールしている場合は、それをドロップして サンプル・データベースを再インストールしてください。
sqlcode: -986
sqlstate: 58004
SQL0987C アプリケーション・コントロール共有メモリーのセットの割り振りができません。
説明
- システムに割り振られている共有メモリー ID の数
- システムで使用できるページングまたはスワッピング・スペースの量。
- システムで使用できる物理メモリーの量。
ユーザーの処置
- データベース・マネージャー要件およびシステムで実行中の他のプログラムの要件を満たすだけの十分なメモリー・リソースが使用できることを確認してください。
- 影響を与えるデータベース構成パラメーター app_ctl_heap_sz を削減して、このメモリー・セットのデータベース・マネージャー・メモリー所要量を削減してください。
- データベース構成パラメーター dbheap、util_heap_sz、および buffpage のうちの 1 つ以上を小さくしてください。 割り振られたデータベース・グローバル・メモリーの量に影響するパラメーターについては、「管理ガイド」を参照してください。
- intra_parallel が yes に設定されている場合、データベース・マネージャーの構成パラメーター sheapthres を小さくし、そうでなければ intra_parallel を no に設定してください。
- 該当する場合は、システムを使用している他のプログラムを停止してください。
sqlcode: -987
sqlstate: 57011
SQL0989N AFTER トリガー trigger-name が FROM 節内の SQL データ変更ステートメントにより修正される表 table-name の行の修正を試行しました。
説明
SQL データ変更ステートメントが FROM 節に指定されましたが、SQL データ変更ステートメントのターゲット基本表に同じ表を修正する AFTER トリガーが含まれています。 これは許可されません。
ステートメントは処理できません。
ユーザーの処置
FROM 節内の SQL データ変更ステートメントの使用を回避するか、または SQL データ変更ステートメントのターゲットである表を修正しないようにトリガーを変更してください。
sqlcode: -989
sqlstate: 560C3
SQL0990C 索引エラーが発生しました。 表を再編成してください。
説明
索引に対するアクティビティーが激しく、索引用のすべてのフリー・スペースを使いきりました。
フェデレーテッド・システム・ユーザーの場合: この状態はデータ・ソースによっても検出できます。
ステートメントは処理できません。
ユーザーの処置
行った作業をコミットして、コマンドを再発行してください。 エラーが続く場合は、作業をロールバックしてください。 さらにエラーが続く場合は、可能であれば、表を再編成してください。
フェデレーテッド・システム・ユーザーの場合: 問題を切り分けて要求失敗の原因となったデータ・ソースを突き止め、そのデータ・ソースの索引再作成手順に従ってください。
SQL0992C プリコンパイルされたプログラムのリリース番号が無効です。
説明
プリコンパイルされたプログラム (パッケージ) のリリース番号に、 インストールされているバージョンのデータベース・マネージャーのリリース番号との互換性がありません。
プリコンパイルされたプログラム (package) は、 現行バージョンのデータベース・マネージャーでは使用できません。 コマンドは処理されません。
ユーザーの処置
互換リリース・レベルのデータベース・マネージャーでプリコンパイルされたプログラムのみを使用してください。
sqlcode: -992
sqlstate: 51008
SQL0993W データベース構成ファイルのログへの新しいパス (newlogpath) が無効です。
説明
- パスが存在しません。
- 正しい名前のファイルが指定されたパスに見つかりましたが、 このデータベースのログ・ファイルではありませんでした。
- データベース・マネージャーのインスタンス ID が、 パスまたはログ・ファイルへのアクセスを許可されていません。
要求された変更は実行されません。
ユーザーの処置
ログ・ファイルへのパスを変更するには、有効な値を持つデータベース構成コマンドをサブミットしてください。
sqlcode: +993
sqlstate: 01562
SQL0994N アプリケーションのセーブポイントの使い方が無効です。
説明
- 複数のアクティブ・セーブポイントの要求。
- アクティブ・セーブポイントのない終了セーブポイント呼び出しの発行。
- アクティブなセーブポイントのないロールバック・セーブポイント呼び出しの発行。
関数は処理されません。
ユーザーの処置
プログラムのセーブポイントの使い方を訂正してください。
SQL0995W ログ・ファイルへの現行パス (logpath) が無効です。 ログ・ファイル・パスはデフォルトにリセットされました。
説明
- パスが存在しません。
- 正しい名前のファイルが指定されたパスに見つかりましたが、 このデータベースのログ・ファイルではありませんでした。
- データベース・マネージャーのインスタンス ID が、 パスまたはログ・ファイルへのアクセスを許可されていません。
循環ロギングの場合は、ログ・ファイルがデフォルト・ログ・パスに作成されます。 アーカイブ・ログの場合は、次のログ・ファイルがデフォルト・ログ・パスに作成されます。 要求された変更は実行されません。
ユーザーの処置
ログ・ファイルへのパスを変更するには、有効な値を持つ構成コマンドをサブミットしてください。
sqlcode: +995
sqlstate: 01563
SQL0996N 表スペースのオブジェクト用のページを解放できません。
説明
表スペース内に壊れた内部データベース・ページ、または内部論理エラーがあります。
ユーザーの処置
オブジェクトまたは表スペースの使用を続けないでください。 オブジェクトおよび表スペースを調べるために、IBM サービスに連絡してください。
sqlcode: -996
sqlstate: 58035
SQL0997W トランザクション処理に関する一般情報メッセージです。 理由コード = XA-reason-code
説明
- XA_RDONLY (3) - トランザクション・ブランチが読み取り専用で、コミットされています。
- 64 - TM データベースが、DUOW 再同期でトランザクションがコミットされる必要があることを示しています。
- 65 - TM データベースが、DUOW 再同期でトランザクションがロールバックされる必要があることを示しています。
ユーザーの処置
アクションは不要です。
SQL0998N トランザクションまたはヒューリスティック処理中に、エラーが発生しました。 理由コード = reason-code。 サブコード = subcode。
説明
分散トランザクションを処理している時にエラーが検出されました。 トランザクションは以下のとおりです。
- 分散トランザクション処理環境での処理 (例えば、CICS やその他のトランザクション・マネージャーからのもの)。
- ヒューリスティック操作の実行。
- フェデレーテッド・データベース内の複数のニックネームの更新。 それぞれの更新されたニックネームが異なるデータ・ソースを表します。 上記の場合、データ・ソースの 1 つがトランザクション処理中に失敗しました。 この場合、返された理由コードは、 フェデレーテッド・データベースではなくデータ・ソースでの障害の理由です。
可能性のある理由コード (対応する 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_opens が、同じデータベース名に対してさまざまな RM ID を生成しました。
- 09 - データベース名が指定されていません。
- 10 - exe_type が無効です。
- 11 - Sybase LRM 名が xa_config ファイル内にないか、または 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 サポートは、TCP/IP を使用して確立したアウトバウンド接続にのみ使用できます。
- 43 - サーバーがネイティブ XA をサポートしないため、接続を確立できません。
- 69 - DUOW 再同期化中にデータベース・ログ ID の不一致が発生しました。
- 85 - ヒューリスティック処理の結果、トランザクションは部分的にコミットされ、ロールバックされました。
- 210 - このトランザクションでは、ヒューリスティック・コミットのみが許可されています。 ノードの中にはすでにコミット状態のものがあります。
- 221 - ホスト上の DBMS のバージョンでは、 同じ XA トランザクションに関係するアプリケーションがすべて、 データベースに接続するために同じユーザー ID を使用しなければなりません。
- 222 - ホスト上の DBMS のバージョンでは、 同じ XA トランザクションに関係するアプリケーションがすべて、 同じ CCSID を持っていなければなりません。
- 223 - DB2 Connect XA サポートは、ローカル・クライアントに、 またはインバウンド接続を設定するために TCPIP を使用しているリモート・クライアントにのみ使用できます。
- 224 - DB2 Connect XA サポートは、少なくともバージョン 7.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 については、 グローバル・トランザクションの読み取り専用リソース・マネージャーとしてのみ関連するデータベースに対して、 ヒューリスティックな操作の実行が試みられました。 例は MVS 上の DB2 などの DRDA データベースです。 これらのタイプの非 XA データベースは、XA 未確定トランザクションを持つことができません。
理由コード 36、37、38 については、 未確定トランザクションで無効なヒューリスティック操作の実行が試みられました。 間違った XID を指定したか、 あるいはこの XID が記録された後でヒューリスティック処理または再同期処理が実行された可能性があります。 まだヒューリスティック処理を実行する必要があるかどうかを確認するには、 ヒューリスティック照会要求を実行して、未確定トランザクションの現在のリストを入手してください。
理由コード 39 の場合、 2 フェーズ・コミットが始まるのを待っている終了済みトランザクションに対して、 XID が指定されました。 2 フェーズ・コミット処理が開始され、未確定トランザクションとなったトランザクションにのみ、 ヒューリスティック処理を実行できます。
理由コード 40 については、失敗したトランザクションの下で、SQL ステートメントが試みられました。 これの例は、トランザクションに関連する密結合スレッドが異常終了した後で、 正常に登録されている同じトランザクション・スレッドで SQL ステートメントを試みることです。
理由コード 41 の場合、管理通知ログでこの問題に関する詳細情報を調べてください。 失敗したノードで、データベース・マネージャーを再始動する必要があります。システム管理者に連絡して援助を求める必要がある場合があります。
理由コード 42 の場合、 ゲートウェイ・カタログを変更して TCP/IP 通信プロトコルを使用できるようにすると、 アウトバウンド接続を確立できます。
理由コード 43 については、DB2 for z/OS サーバーまたは DB2 for i サーバーに接続する場合、DB2 Connect を使用してデータベースをカタログし、同期点マネージャーを開始してください。
理由コード 69 については、トランザクション・マネージャー (TM) データベース、 リソース・マネージャー (RM) データベース、 またはその両方が、未確定トランザクションが発生したときのデータベースとは異なります。 換言すれば、TM データベースまたは RM データベースの名前は異なるデータベースのインスタンスを参照することができます。 ログ ID 不一致は、以下の理由によって発生する可能性があります。
- RM インスタンスでの TM データベースのデータベース・ディレクトリーが正しくありません。
- 未確定トランザクションが発生した後で、構成が変更された可能性があります。
- データベースがドロップされて、再作成された可能性があります。 この場合は、ヒューリスティックに未確定トランザクションをコミットまたはロールバックすることしかできません。
理由コード 85 の場合、ユーザーが複数のデータ・ソースを更新中に、 いくつかのデータ・ソースがヒューリスティックにロールバック、またはコミットされ、 その結果、トランザクションは部分的にコミットされ、ロールバックされます。 この理由コードでは、データは矛盾した状態です。 トランザクションで更新されたデータ・ソースをすべて手動でチェックし、データを訂正する必要があります。
理由コード 210 の場合、すでにコミット状態であるノードがあります。 未確定トランザクションを解決するには、ヒューリスティック・コミットを実行する必要があります。
理由コード 221 の場合、同じ XA トランザクションに関係するアプリケーションがすべて、データベースに接続するために同じユーザー ID を使用していることを確認してください。
理由コード 222 の場合、同じ XA トランザクションに関係するアプリケーションがすべて、同じ CCSID を持っていることを確認してください。
理由コード 223 の場合、ローカル・クライアントを使用するよう、またリモート・クライアントについては、ゲートウェイに接続するために通信プロトコルとして TCPIP を使用するようアプリケーションおよび クライアント・セットアップを変更してください。
理由コード 224 の場合、クライアントを 7.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