このトピックでは、データ変更チケットに関する一般的なエラーとその解決策について説明します。
セキュリティルールによるコマンドタイプ 'XXXX' の禁止
エラーメッセージ:
SQL type check failed. Based on security rule settings, direct execution of command type 'XXXX' is prohibited. To proceed, contact a DBA or administrator to adjust the rules. You can find the rules at: Security and Disaster Recovery -> Security Rules -> Edit -> SQL Correct -> SQL Execution Rules. No rule was found for this command type, so execution is denied by default.
原因:セキュアコラボレーションモードでデータベースに適用されているセキュリティルールが、SQL コマンドの実行または送信を許可していません。そのため、コマンドがブロックされています。
解決策:ブロックされた SQL コマンドは、KNOWN (DMS が認識するコマンド) と UNKNOWN (DMS が認識しないコマンド) に分類されます。コマンドタイプに基づいて解決策を選択してください。
-
KNOWN
DMS はこのコマンドを認識していますが、現在のセキュリティルールではデフォルトで実行が拒否されます。データベース管理者 (DBA) または管理者に連絡して、セキュリティルールを調整してください。ルールは、次の手順で調整します。
-
セキュリティルールセットの名前を確認します。
[データ変更チケット詳細] ページに移動し、右上隅にある [操作ログ] をクリックします。[操作ログ] ダイアログボックスで、[アクション詳細] 列を確認して、関連付けられたセキュリティルールセットの名前 (例: POC Production Rules) を見つけます。
-
セキュリティルールを調整します。
-
DMS にログインします。
-
上部のメニューバーで、 を選択します。
-
[セキュリティルール] タブで、目的のルールセットを見つけ、[操作] 列の [編集] をクリックします。
-
左側のナビゲーションペインで、[SQL Correct] をクリックします。
-
エラーメッセージに基づいて [チェックポイント] を選択します。 たとえば、前述のエラー例では、[チェックポイント] を [SQL 実行ルール] に設定します。
-
調整するセキュリティルールを選択し、[操作] 列の [編集] をクリックします。
説明エラーメッセージ内のコマンドの SQL 言語タイプに基づいてセキュリティルールを選択してください。例えば、コマンドタイプが CREATE_INDEX の場合、DDL 関連のセキュリティルールを選択する必要があります。
-
エラーメッセージの SQL タイプを、対応するセキュリティルールの DSL に追加します。
例えば、エラーで
CREATE_INDEXコマンドタイプが禁止されていると示されている場合、このコマンドタイプを DDL チケット送信に関連するルールに追加する必要があります。[ルールの編集] ダイアログボックスで、[チェックポイント] を [SQL 実行ルール] に設定し、[DDL must be submitted through a ticket] という名前のルールを見つけます。ルールの DSL で、
@fac.sql_typeリストにCREATE_INDEXなどの DDL タイプが含まれていること、および対応するアクションが@act.allow_submitであることを確認します。これにより、チケット経由でのSQLタイプの実行が許可されます。次に、[送信] をクリックします。 -
[送信] をクリックします。
-
-
変更を保存した後、チケット詳細ページに戻ります。事前チェックセクションで、[再試行] をクリックします。その後、DMS はタイプチェックを再実行します。
-
-
UNKNOWN
-
送信された SQL 文にエラーがないか確認します。エラーがある場合は、事前チェックセクションで [SQL の変更] をクリックします。文を修正した後、[再試行] をクリックしてチェックを再実行します。
-
SQL ステートメントが正しい場合は、[事前チェック] セクションで [詳細の表示] をクリックして、UNKNOWN とマークされたステートメントを特定します。 DBA または管理者に連絡して、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 ステートメントの構文を確認してください。
-
SQL 構文が正しくない場合は、ステートメントを修正し、事前チェックセクションで [再試行] をクリックします。DMS はスキャンされた行数を再チェックします。
-
SQL 構文が正しいことが確かな場合は、事前チェックセクションの [スキャン行数の確認] の横にある [スキップ] をクリックしてこのエラーを回避できます。