UserDB選択の特定のTempDB挿入により、SOS_SCHEDULER_YIELDからENCRYPTION_SCANが返されます。
実稼働システムの1つで、ユーザーデータベースから一時テーブルへの1つの挿入ステートメントに問題が発生しています。挿入/選択をコメントアウトすると、問題のストアドプロシージャがタイムリーに実行されるため、問題の切り分けに自信があります。 問題の挿入/選択のコメントを解除すると、呼び出された一連のストアドプロシージャが基本的に停止して停止します。tempdbやユーザーデータベースで、年齢別の上位トランザクションに何も表示されません。データベースが「静止」しているときに、アクティビティモニターの情報から逸脱するアクティビティモニターに何も表示されません。ただし、CPUは約20%で平坦化されます。 動作は次のとおりです。再生ケースをセットアップして実行すると、問題の挿入/選択に到達すると、SOS_SCHEDULER_YIELDが表示され、ENCRYPTION_SCANが表示されます。約5時間後、ストアドプロシージャの処理が再開され、アクティビティが完了します(すべての個別の操作の周りに、迅速でダーティなログステートメントを配置します)。 また、挿入の選択部分の変数を実行時の値に置き換え、選択クエリ自体を実行したところ、5秒で戻りました。 問題のユーザーデータベースは、tempdbと同様に、暗号化が有効な値としてFALSEを持っています。問題の操作は約6万5千行のデータで発生し、1千行のみで試したところ、動作は持続しましたが、所要時間ははるかに短かったです。 シングルユーザーデータベースは、この動作の唯一のインスタンスです。そのユーザーデータベースのバックアップを介してローカルで再現しました。この問題を示さないソフトウェアのユーザーが約70人います。 上記の情報を踏まえて、私の質問は、ストアドプロシージャの処理が停止するのはなぜですか?正確な答えを期待することはおそらく楽観的であるため、これをデバッグするための正しい手順は何ですか?おそらく、dm_tran_locks、dm_exec_requests、dm_tran_database_transactions、dm_os_schedulers、dm_exec_sessionsなどのDMVの1つに何かがあり、それらは私にいくつかの情報を提供しましたが、解決策を指すような方法で出力を解釈または理解していません。 以下は問題の挿入/選択です: INSERT INTO #TS_EVENT_DATA ( EVENT_FK, EVENT_TYPE_CR_FK, EVENT_ENTITY_CLASS_CR_FK, userDatabase_ID, DATA_NAME_FK, IMPORT_JOB_FK, PRODUCT_STRUCTURE_FK, ORG_ENTITY_STRUCTURE_FK, ENTITY_CLASS_CR_FK, ENTITY_DATA_NAME_FK, ENTITY_STRUCTURE_FK, DATA_SET_FK, DATA_TYPE_CR_FK, ORG_IND, TABLE_NAME, NET_VALUE1_NEW, NET_VALUE2_NEW, NET_VALUE3_NEW, NET_VALUE4_NEW, NET_VALUE5_NEW, NET_VALUE6_NEW, NET_VALUE1_CUR, NET_VALUE2_CUR, NET_VALUE3_CUR, NET_VALUE4_CUR, NET_VALUE5_CUR, NET_VALUE6_CUR, PERCENT_CHANGE1, PERCENT_CHANGE2, PERCENT_CHANGE3, PERCENT_CHANGE4, PERCENT_CHANGE5, PERCENT_CHANGE6, VALUE_UOM_CODE_FK, ASSOC_UOM_CODE_FK, VALUES_SHEET_NAME, UOM_CONVERSION_FACTOR, END_DATE_CUR, …