10

db2 9.5 を使用しています。正常に作成されたテーブルに列を作成しましたが、テーブルの列を更新できず、次のエラーが発生します。

[エラー] スクリプト行: 1-1 -------------------------- DB2 SQL エラー: SQLCODE: -668、SQLSTATE: 57016、SQLERRMC: 7;DB2ADMIN.XCATENTRYEXT メッセージ: 表 "DB2ADMIN.XCATENTRYEXT" に対する操作は、理由コード "7" のため許可されていません。

Google のいくつかのブログ/サイトに続いて、次のリンクhttp://bytes.com/topic/db2/answers/508869-reorg-tablespaceに記載されているように、解決策として REORG コマンドを見つけました

問題を解決するために、次のクエリをデータベースで実行しようとしました。

Database["DB2"].ExecuteNonQuery("call SYSPROC.ADMIN_CMD ('REORG TABLE DB2ADMIN.XCATENTRYEXT index CATENTRY_ID INPLACE')")

REORG TABLE DB2ADMIN.XCATENTRYEXT index CATENTRY_ID INPLACE

REORG TABLE DB2ADMIN.XCATENTRYEXT 
REORG INDEXES I0000908 FOR TABLE DB2ADMIN.XCATENTRYEXT

しかし、すべてのクエリの結果には同じエラーがあります

 DB2 SQL error: SQLCODE: -104, SQLSTATE: 42601, SQLERRMC: Database;BEGIN-OF-STATEMENT;<variable_set>
 Message: An unexpected token "Database" was found following "BEGIN-OF-STATEMENT".  Expected tokens may include:  "<variable_set>".

このエラーで立ち往生しています。その特定のテーブルの列を更新することさえできません。

4

3 に答える 3

19

SQL ステートメントを使用して REORG を実行することができます。

CALL SYSPROC.ADMIN_CMD('REORG TABLE SCHEMA.TABLENAME');
于 2014-11-05T08:26:42.887 に答える
16

エラー メッセージから、何らかの方法で文字列全体Database["DB2"].ExecuteNonQuery("call SYSPROC.ADMIN_CMD ('REORG TABLE DB2ADMIN.XCATENTRYEXT index CATENTRY_ID INPLACE')")を SQL ステートメントとして送信したことがわかりますが、これは明らかに正しくありません。

シェル コマンド ラインでこれらを発行するだけです。

db2 connect to <your database name here>
db2 REORG TABLE DB2ADMIN.XCATENTRYEXT
于 2013-12-05T14:41:35.167 に答える