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>".
私はこのエラーに行き詰まり、その特定のテーブルの列を更新することすらできません。
エラーメッセージから、何らかの理由で文字列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
SQLステートメントを介してREORGを実行することが可能です。
CALL SYSPROC.ADMIN_CMD('REORG TABLE SCHEMA.TABLENAME');