メイン コンテンツへスキップ
サポート
Microsoft アカウントでサインイン
サインインまたはアカウントを作成してください。
こんにちは、
別のアカウントを選択してください。
複数のアカウントがあります
サインインに使用するアカウントを選択してください。

BUG #: 187868 (コンテンツ管理)VSTS: 1340145

マイクロソフトでは、ダウンロード可能なファイルを 1 つの Microsoft SQL Server 2012 の修正プログラムを配布します。修正プログラムは累積的であるため、新しいリリースごとにすべての修正プログラムが含まれていて、以前の SQL Server 2012 で含まれていたすべてのセキュリティ更新プログラムがリリースを更新します。

現象

次のような状況を考えます。

  • Microsoft SQL Server 2012 でテーブル値パラメーター (は、TVP) を使用するストアド プロシージャを作成します。

  • キャプチャする SQL プロファイラーまたは SQL Server 拡張イベントを使用する、 RPC: 開始とRPC: 完了したのイベントです。

  • TVP を使用するクエリを実行するとします。

  • クエリがタイムアウトになりました。

このシナリオで、解放されていないスケジューラ エラーが発生して同じスケジューラで実行されているクエリの実行速度が低下します。さらに、ミニ ダンプ ファイルが SQL Server のログ フォルダーに生成されます。
この問題が発生すると、次のようなエラー メッセージが表示されます。

生じます (0x80131904): タイムアウト期間が経過します。操作の完了前にタイムアウト期間が経過したか、サーバーが応答していません。
System.Data.SqlClient.SqlInternalConnection.OnError (SqlException の例外、ブール値の breakConnection) で
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
System.Data.SqlClient.TdsParserStateObject.ReadSniError (TdsParserStateObject stateObj、UInt32 エラー) で
System.Data.SqlClient.TdsParserStateObject.ReadSni (asyncResult の DbAsyncResult、TdsParserStateObject stateObj) で
System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket() で
System.Data.SqlClient.TdsParserStateObject.ReadByte() で
System.Data.SqlClient.TdsParser.Run (RunBehavior runBehavior、SqlCommand cmdHandler、SqlDataReader のデータ ストリーム、BulkCopySimpleResultSet bulkCopyHandler、TdsParserStateObject stateObj) で
System.Data.SqlClient.SqlCommand.FinishExecuteReader (SqlDataReader ds、RunBehavior runBehavior、resetOptionsString の文字列) で
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (引数の cmdBehavior、RunBehavior runBehavior、returnStream のブール値、ブール型の非同期) で
System.Data.SqlClient.SqlCommand.RunExecuteReader (引数 cmdBehavior、RunBehavior runBehavior、returnStream のブール値、文字列のメソッド、DbAsyncResult の結果) で
System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery (DbAsyncResult の結果、methodName の文字列、ブール値の sendToPipe) で
System.Data.SqlClient.SqlCommand.ExecuteNonQuery() で
TVPApp.Program.Main (引数の文字列) で


解放されていないスケジューラ エラーと、次のようなエラー メッセージが SQL Server エラー ログに記録されます。

< 時刻 > サーバーを使用して 'dbghelp.dll' バージョン '4.0.5' を日付 ><
< 日付 >< 時間 > サーバー spid のスレッドのコンテキストを取得できませんでした。 #。
<Date><Time> Server * *******************************************************************************
サーバーの時間 > の < 日付 >< *
< 日付 >< 時間 > サーバー * 開始スタック ダンプ。
サーバーの時間 > の < 日付 >< * spid の時間 > の < 日付 >< #
サーバーの時間 > の < 日付 >< *
< 日付 >< 時間 > サーバー * 解放されていないスケジューラ
サーバーの時間 > の < 日付 >< *
<Date><Time> Server * *******************************************************************************
ダンプの時間 > の < 日付 >< サーバー スタックの署名は、0x000000000000002C です。
< 日付 >< 時間 > サーバー外部ダンプ プロセス リターン コード 0x20000001。
外部ダンプ プロセスは、エラーを返しませんでした。
サーバー プロセスの時間 > の < 日付 >< 0:0:0 (0x1670) ワーカー 0x0000000004EDE160 が解放されていないスケジューラ 5 のように見えます。スレッドの作成時刻: 13014210386757。およそスレッド CPU の使用: カーネル 0 ミリ秒は、ユーザー 70106 ミリ秒プロセス使用率 16% です。システムには、77% がアイドル状態です。間隔: 70140 ms です。
サーバー プロセスの時間 > の < 日付 >< 0:0:0 (0x1670) ワーカー 0x0000000004EDE160 が解放されていないスケジューラ 5 のように見えます。スレッドの作成時刻。

原因

この問題は、SQL Server 2012 のデータベース エンジンでエラーが発生したために発生します。TVP 内のテキスト列として実装されるための文字列またはバッファーを挿入し、行の数の増加は、バッファーの数を増加します。ただし、バッファーを解放するプロセスは、時間がかかります。解放されていないスケジューラ エラーが生成されるため、リリースおよび圧縮操作をすると発生します。

注: 同様の問題は次のマイクロソフト サポート技術情報の資料で解決されています。ただし、この資料に記載されている累積的な更新プログラム パッケージはクエリ タイムアウトの問題があるためです。

2520808の修正: 解放されていないスケジューラとエラーが発生するクエリを実行する SQL プロファイラーまたは SQL Server 拡張イベントを使用する場合は、TVP で SQL Server 2008 または SQL Server 2008 R2 を使用して、

解決策

累積的な更新プログラムの情報

SQL Server 2012 Service Pack 1 (SP1) 用の累積的な更新プログラム パッケージ 5

この問題に対する修正は、累積的な更新 5 で初めてリリースされました。この累積的な更新プログラム パッケージを SQL Server 2012 の入手方法の詳細については、マイクロソフト サポート技術情報の記事を表示するのには次の資料番号をクリックします。

2861107累積では、SQL Server 2012 のパッケージ 5 を更新します。

ヘルプを表示

その他のオプションが必要ですか?

サブスクリプションの特典の参照、トレーニング コースの閲覧、デバイスのセキュリティ保護方法などについて説明します。

コミュニティは、質問をしたり質問の答えを得たり、フィードバックを提供したり、豊富な知識を持つ専門家の意見を聞いたりするのに役立ちます。

この情報は役に立ちましたか?

言語の品質にどの程度満足していますか?
どのような要因がお客様の操作性に影響しましたか?
[送信] を押すと、Microsoft の製品とサービスの改善にフィードバックが使用されます。 IT 管理者はこのデータを収集できます。 プライバシーに関する声明。

フィードバックをいただき、ありがとうございます。

×