適用先
SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard

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

現象

次のような状況で問題が発生します。

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

  • SQL Profiler または SQL Server 拡張イベントを使用して、RPC:Starting イベントと RPC:Completed イベントをキャプチャします。

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

  • クエリがタイムアウトします。

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

System.Data.SqlClient.SqlException (0x80131904): タイムアウトが切れています。 処理が完了する前にタイムアウトの期間が経過したか、サーバーが応答していません。at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()at System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error)at System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj)at System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()at System.Data.SqlClient.TdsParserStateObject.ReadByte()at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler、SqlDataReader dataStream、BulkCopySimpleResultSet bulkCopyHandler、TdsParserStateObject stateObj)at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream,Boolean async)at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String メソッド, DbAsyncResult result)at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()at TVPApp.Program.Main(String[] args)

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

<日付><時刻> サーバー 'dbghelp.dll' バージョン '4.0.5'<日付><時刻> Server ***spid #<Date><Time> Server * *******************************************************************************><2 Date><*******************************************************************************><2 サーバー> 時刻 *><6日付><時刻> サーバー * BEGIN STACK DUMP:><0 日付><時刻> Server * <日付><時刻> spid #><8 日付><時刻> サーバー * ><2 Date><Time> Server * non-yielding Scheduler><6 Date><Time> Server *<Date><Time> Server * *******************************************************************************<Date><Time> Server Stack Signature 0x000000000000002C<for the date><Time> Server External dump process return code 0x20000001。外部ダンプ プロセスはエラーを返さなかった。<Date><Time> Server Process 0:0:0 (0x1670) Worker 0x0000000004EDE160 は Scheduler 5 では生成されていないようです。 スレッドの作成時間: 13014210386757。 使用される約スレッド CPU: カーネル 0 ミリ秒、ユーザー 70106 ミリ秒。 プロセス使用率 16% システム アイドル 77% 間隔: 70140 ミリ秒。<Date><Time> Server Process 0:0:0 (0x1670) Worker 0x0000000004EDE160 は Scheduler 5 では生成されていないようです。 スレッドの作成時間:

原因

この問題は、SQL Server 2012 データベース エンジンでエラーが発生したために発生します。 TVP のテキスト列は挿入文字列またはバッファーとして実装され、行数が増えるとバッファーの数が増えます。 ただし、バッファーを解放するプロセスには時間がかかります。 そのため、解放操作と圧縮操作が発生すると、非生成スケジューラ エラーが生成されます。 メモ 同様の問題は、次の Microsoft サポート技術情報の記事で解決されています。 ただし、この記事で説明されている累積的な更新プログラム パッケージは、クエリのタイムアウトの問題ではありません。

2520808 修正: SQL Profiler または拡張イベントを使用する場合は、SQL Server 2008 または SQL Server 2008 R2 で TVP を使用するクエリ SQL Serverを実行すると、非生成スケジューラ エラーが発生する

解決方法

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

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

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

2861107 SQL Server 2012 の累積的な更新プログラム パッケージ 5 注 ビルドは累積的であるため、新しい修正プログラムの各リリースには、以前のSQL Server 2012 修正プログラム リリースに含まれていたすべての修正プログラムとすべてのセキュリティ修正プログラムが含まれています。 この修正プログラムを含む最新の修正プログラム リリースを適用することを検討することをお勧めします。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。

2772858 SQL Server 2012 Service Pack 1 のリリース後にリリースされた SQL Server 2012 ビルド

回避策 

この問題を回避するには、以下のいずれかの方法を使用します。

  • SQL Profiler を使用したり、拡張イベントをSQL Serverしたりしないでください。

  • クリックすると、トレース定義の [RPC:Starting] ボックスと [RPC:Completed] チェック ボックスがオフになります。

状態

マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。

ヘルプを表示

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

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