このトピックでは、データ変更チケットを送信するときに発生する一般的なエラーの解決策について説明します。
設定されたセキュリティルールに従って、XXXXステートメントの実行または送信は禁止されます。
エラーメッセージの例:
Failed to pass the SQL statement type check. According to security rules, forbid execute directly, command type:INSERT, please contact DBA or administrator adjust! To modify the rule, choose Security and Specifications > Security Rules > Edit > SQL Correct > SQL Execution Rules., Not matched any rules of the command type, default forbid execute.
理由: Secure Collaborationモードで管理されているデータベースにバインドされているセキュリティルールは、SQLステートメントの実行または送信を禁止します。 したがって、ステートメントはブロックされます。
解決策: 実行または送信が禁止されているステートメントには、KNOWNステートメント (DMSで識別できるSQLステートメント) とUNKNOWNステートメント (DMSで識別できないSQLステートメント) が含まれます。 ビジネス要件に基づいてソリューションを選択できます。
KNOWNステートメント
DMSは、エラーメッセージに示されたステートメントをKNOWNステートメントとして識別します。 ただし、現在のセキュリティルールでは、デフォルトでステートメントの実行が禁止されています。 DBAまたはDMS管理者に連絡して、セキュリティルールを変更してください。 次の手順では、セキュリティルールを変更する方法について説明します。
セキュリティルールセットの名前を表示します。
[データ変更チケットの詳細] ページに移動し、右上隅の [操作ログ] をクリックして、セキュリティルールセットの名前を表示します。
セキュリティルールを変更します。
最初に DMSコンソールV5.0 にログインします。
上部のナビゲーションバーで、
を選択します。[セキュリティルール] タブで、管理するセキュリティルールセットを見つけ、[操作] 列の [編集] をクリックします。
左側のナビゲーションウィンドウで、[SQL Correct] をクリックします。
表示されるエラーメッセージに基づいて、[チェックポイント] のオプションを選択します。 上記のエラーメッセージの例では、[チェックポイント] の [SQL実行ルール] を選択します。
変更するセキュリティルールを見つけて、[操作] 列の [編集] をクリックします。
説明エラーメッセージに示されたステートメントのSQL言語タイプに基づいて、変更するセキュリティルールを選択します。 たとえば、エラーメッセージに示されているステートメントタイプがCREATE_INDEXの場合、DDL関連のセキュリティルールを選択する必要があります。
セキュリティルールのDSL構文に、エラーメッセージに示されているSQL文の種類を追加します。
たとえば、次の図に示すように、CREATE_INDEXステートメントの実行が禁止されていることをエラーメッセージが示す場合、ルールのDDL構文にステートメントを追加する必要があります。
[送信] をクリックします。
セキュリティルールを変更した後、チケットの詳細ページの [事前チェック] セクションで [再試行] をクリックします。 次に、DMSはステートメントタイプを再度チェックします。
UNKNOWNステートメント
送信したSQL文が正しいかどうかを確認します。 SQL文が正しくない場合は、[事前チェック] セクションの [SQLの変更] をクリックします。 変更を確認したら、[再試行] をクリックして、ステートメントの種類を再度確認します。
SQL文が正しい場合は、[事前チェック] セクションの [詳細の表示] をクリックして、UNKNOWNとして識別されたSQL文をフィルタリングして表示します。 次に、DBAまたはDMS管理者に連絡して、UNKNOWNとして識別されたSQLステートメントをセキュリティルールに追加し、DMSがステートメントを実行できるようにします。 変更を送信したら、[再試行] をクリックします。 セキュリティルールの変更方法の詳細については、「セキュリティルールの変更」をご参照ください。
影響を受ける行数の確認に失敗しました。 構文チェックに失敗しました。
エラーメッセージの例:
Failed to check the number of affected rows. Syntax check failed. Error message: ERROR. pos 37, line 1, column 31, token WHERE.
理由: データ変更チケットを送信するときの事前チェックステップで、DMSはスキャンされた行数をチェックして、SQL文の構文が正しいかどうかを再度チェックします。
解決策: 送信するSQL文の構文が正しいかどうかを確認します。
構文が正しくない場合は、構文を変更した後、[事前チェック] セクションの [再試行] をクリックします。 次に、DMSは、スキャンされた行の数を再度チェックする。
構文が正しい場合は、[事前チェック] セクションの [スキャンされた行数の確認] の右側にある [スキップ] をクリックして、エラーを無視します。