web-dev-qa-db-ja.com

SQLCODEを使用したdb2の更新テーブルの失敗:-668、SQLSTATE:57016、SQLERRMC:7;

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

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

グーグル上のいくつかのブログ/サイトに従って、私は次のリンクで述べられているように解決策としてREORGコマンドを見つけました http://bytes.com/topic/db2/answers/508869-reorg-tablespace

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

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>".

私はこのエラーに行き詰まり、その特定のテーブルの列を更新することすらできません。

10
WCS Developer

エラーメッセージから、何らかの理由で文字列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
16
mustaccio

SQLステートメントを介してREORGを実行することが可能です。

CALL SYSPROC.ADMIN_CMD('REORG TABLE SCHEMA.TABLENAME');
18