修正: SQL Server 2008 のデータ コレクターを有効にすると断続的に「スナップショットの sys.dm_exec_query_stats の収集」フェーズ中に、算術オーバーフロー エラーが発生します

文書翻訳 文書翻訳
文書番号: 975915
Microsoft Microsoft SQL Server 2008年の修正プログラム 1 つのダウンロード ファイルとして配布しています。修正プログラムは累積的であるため、各新しいリリースにはすべての修正プログラムが含まれています、以前の SQL Server 2008 に含まれていたすべてのセキュリティ修正プログラム リリースを修正します。
すべて展開する | すべて折りたたむ

現象

次のシナリオを検討してください。
  • データ コレクターを有効にします。
  • データ コレクターの実行時、重または長期ワークロードでは、データベースの保守作業では、インデックスを再構築し、統計を更新するなどの非常に大きなデータベースを算術オーバーフロー エラーには次のとおり可能性があります。この算術オーバーフロー エラー sys.dm_exec_query_stats フェーズのスナップショットを収集中に断続的に発生します。
メッセージ: SSIS エラー コード DTS_E_OLEDBERROR。OLE DB エラーが発生しました。エラー コード: 0x80040E57。
OLE DB レコードがあります。出典:「Microsoft SQL Server のネイティブ クライアント 10.0」Hresult: 0x80040E57 説明:「式をデータ型 int 型に変換算術オーバーフロー エラー」。

データ コレクターのログ ・ レベルを 2 に増やすと (など、実行、"exec sp_syscollector_update_collection_set @ collection_set_id =<collectionsetid>、@ logging_level 2"ステートメントを =)、次のエラー メッセージが返されます:</collectionsetid>
<date time="">、SEQ - を取得し、クエリ統計情報、クエリ プランとテキスト、エラー、6569、、、、SSIS エラー コード DTS_E_OLEDBERROR を分析します。OLE DB エラーが発生しました。エラー コード: 0x80040E57。<nl></nl>、OLE DB レコードを利用します。出典:「Microsoft SQL Server のネイティブ クライアント 10.0」Hresult: 0x80040E57 説明:「式をデータ型 int 型に変換算術オーバーフロー エラー」します、、、<date time="">、、、<date time="">、、、、OnError、-1071636471。<date time="">、QueryActivityUpload、エラー、6569、、、、SSIS エラー コード DTS_E_OLEDBERROR。OLE DB エラーが発生しました。エラー コード: 0x80040E57。<nl></nl>、OLE DB レコードを利用します。出典:「Microsoft SQL Server のネイティブ クライアント 10.0」Hresult: 0x80040E57 説明:「式をデータ型 int 型に変換算術オーバーフロー エラー」.,<date time="">,<date time="">,,,, OnError、-1071636471</date></date></date></date></date></date>

<date time="">、DFT-(16412)、pre-execute フェーズに失敗し、返されたエラー コード 0xC0202009 興味深いクエリ アップロード バッチ エラー 6569、、、コンポーネント"ODS ・ dm_exec_query_stats の最新のスナップショットを取得"を作成します。,<date time="">,<date time="">,,,, OnError、-1073450982</date></date></date>

<date time="">、SEQ、キャプチャ、およびクエリ統計情報、クエリ プランとテキスト、エラー、6569、、、コンポーネント"ODS ・ dm_exec_query_stats の最新のスナップショットを取得"を分析 (16412)、pre-execute フェーズに失敗し、返されたエラー コード 0xC0202009。、、、<date time="">,<date time="">,,,, OnError、-1073450982</date></date></date>

<date time="">、QueryActivityUpload、エラー、6569、、、コンポーネント"ODS ・ dm_exec_query_stats の最新のスナップショットを取得"(16412)、pre-execute フェーズに失敗し、返されたエラー コード 0xC0202009。、、、<date time="">、、、<date time="">、、、、OnError、-1073450982<b00></b00></date></date></date>


このシナリオでは、SQL Server によって実行される、次のステートメントは、算術オーバーフロー エラーが発生します。
SET NOCOUNT ON
DECLARE @p1 datetime
SET @p1 = GETDATE()

SELECT 
    [sql_handle],
    statement_start_offset,
    statement_end_offset,
    -- Use ISNULL here and in other columns to handle in-progress queries that are not yet in sys.dm_exec_query_stats.  
    -- These values only come from sys.dm_exec_query_stats. If the plan does not show up in sys.dm_exec_query_stats 
    -- (first execution of a still-in-progress query, visible in sys.dm_exec_requests), these values will be NULL. 
    MAX (plan_generation_num) AS plan_generation_num,
    plan_handle,
    MIN (creation_time) AS creation_time, 
    MAX (last_execution_time) AS last_execution_time,
    SUM (execution_count) AS execution_count,
    SUM (total_worker_time) AS total_worker_time,
    MIN (min_worker_time) AS min_worker_time,           -- NULLable
    MAX (max_worker_time) AS max_worker_time,
    SUM (total_physical_reads) AS total_physical_reads,
    MIN (min_physical_reads) AS min_physical_reads,     -- NULLable
    MAX (max_physical_reads) AS max_physical_reads,
    SUM (total_logical_writes) AS total_logical_writes,
    MIN (min_logical_writes) AS min_logical_writes,     -- NULLable
    MAX (max_logical_writes) AS max_logical_writes,
    SUM (total_logical_reads) AS total_logical_reads,
    MIN (min_logical_reads) AS min_logical_reads,       -- NULLable
    MAX (max_logical_reads) AS max_logical_reads,
    SUM (total_clr_time) AS total_clr_time,
    MIN (min_clr_time) AS min_clr_time,                 -- NULLable
    MAX (max_clr_time) AS max_clr_time,
    SUM (total_elapsed_time) AS total_elapsed_time,
    MIN (min_elapsed_time) AS min_elapsed_time,         -- NULLable
    MAX (max_elapsed_time) AS max_elapsed_time,
    @p1 AS collection_time
FROM
(
    SELECT  
        [sql_handle],
        statement_start_offset,
        statement_end_offset,
        plan_generation_num,
        plan_handle,
        creation_time,
        last_execution_time,
        execution_count,
        total_worker_time,
        min_worker_time,
        max_worker_time,
        total_physical_reads,
        min_physical_reads,
        max_physical_reads,
        total_logical_writes,
        min_logical_writes,
        max_logical_writes,
        total_logical_reads,
        min_logical_reads,
        max_logical_reads,
        total_clr_time,
        min_clr_time,
        max_clr_time,
        total_elapsed_time,
        min_elapsed_time,
        max_elapsed_time 
    FROM sys.dm_exec_query_stats AS q
    -- Temporary workaround for VSTS #91422.  This should be removed if/when sys.dm_exec_query_stats reflects in-progress queries. 
    UNION ALL 
    SELECT 
        r.[sql_handle],
        r.statement_start_offset,
        r.statement_end_offset,
        ISNULL (qs.plan_generation_num, 0) AS plan_generation_num,
        r.plan_handle,
        ISNULL (qs.creation_time, r.start_time) AS creation_time,
        r.start_time AS last_execution_time,
        1 AS execution_count,
        -- dm_exec_requests shows CPU time as ms, while dm_exec_query_stats 
        -- uses microseconds.  Convert ms to us. 
        r.cpu_time * 1000 AS total_worker_time,
        qs.min_worker_time,     -- min should not be influenced by in-progress queries
        r.cpu_time * 1000 AS max_worker_time,
        r.reads AS total_physical_reads,
        qs.min_physical_reads,  -- min should not be influenced by in-progress queries
        r.reads AS max_physical_reads,
        r.writes AS total_logical_writes,
        qs.min_logical_writes,  -- min should not be influenced by in-progress queries
        r.writes AS max_logical_writes,
        r.logical_reads AS total_logical_reads,
        qs.min_logical_reads,   -- min should not be influenced by in-progress queries
        r.logical_reads AS max_logical_reads,
        qs.total_clr_time,      -- CLR time is not available in dm_exec_requests
        qs.min_clr_time,        -- CLR time is not available in dm_exec_requests
        qs.max_clr_time,        -- CLR time is not available in dm_exec_requests
        -- dm_exec_requests shows elapsed time as ms, while dm_exec_query_stats 
        -- uses microseconds.  Convert ms to us. 
        r.total_elapsed_time * 1000 AS total_elapsed_time,
        qs.min_elapsed_time,    -- min should not be influenced by in-progress queries
        r.total_elapsed_time * 1000 AS max_elapsed_time
    FROM sys.dm_exec_requests AS r 
    LEFT OUTER JOIN sys.dm_exec_query_stats AS qs ON r.plan_handle = qs.plan_handle AND r.statement_start_offset = qs.statement_start_offset 
        AND r.statement_end_offset = qs.statement_end_offset 
    WHERE r.sql_handle IS NOT NULL 
) AS query_stats 
OUTER APPLY sys.dm_exec_sql_text (sql_handle) AS sql
GROUP BY [sql_handle], plan_handle, statement_start_offset, statement_end_offset 
ORDER BY [sql_handle], plan_handle, statement_start_offset, statement_end_offset
そのため、手動でこのステートメントを実行すると、次のエラー メッセージもが表示されます。
Msg 8115、レベル 16、状態 2、
式をデータ型 int に変換演算のオーバーフロー エラー

解決方法

この問題に対する修正は SQL Server 2008 Service Pack 1 用の累積的な更新 5 にまずリリースされました。この累積的な更新プログラム パッケージの詳細については、Knowledge Base の資料を参照するのには、次の資料番号をクリックしてください。
975977 SQL Server 2008 Service Pack 1 用の累積的な更新プログラム パッケージ 5
メモ ビルドは累積的であるため、各新しい修正プログラム リリースにはすべての修正プログラムが含まれています、以前の SQL Server 2008 に含まれていたすべてのセキュリティ修正プログラム リリースを修正します。マイクロソフトはこの修正プログラムを含む最新の修正プログラム リリースを適用を検討することをお勧めします。詳細については、Knowledge Base の資料を参照するのには、次の資料番号をクリックしてください。
970365 SQL Server の 2008 SQL Server 2008 Service Pack 1 のリリース後にリリースされたビルドします。
Microsoft SQL Server 2008 SQL Server サービス ・ パックの特定の修正プログラムが作成されます。SQL Server 2008 Service Pack 1 をインストールする SQL Server 2008 Service Pack 1 の修正プログラムを適用する必要があります。既定では、SQL Server サービス パックで提供されている修正プログラム SQL Server の次の service pack に含まれてです。

状況

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

関連情報

SQL Server の増分サービス モデルの詳細については、Knowledge Base の資料を参照するのには、次の資料番号をクリックしてください。
935897報告された問題に対する修正プログラムを提供するのには、SQL Server チームの増分サービス モデルを利用します。


SQL Server 更新プログラムの名前付けスキーマの詳細については、Knowledge Base の資料を参照するのには、次の資料番号をクリックしてください。
822499Microsoft SQL Server のソフトウェア更新プログラム パッケージの新しい命名方式は


ソフトウェアの更新の用語の詳細については、Knowledge Base の資料を参照するのには、次の資料番号をクリックしてください。
824684 マイクロソフトのソフトウェア更新プログラムの説明に使用される一般的な用語の説明

プロパティ

文書番号: 975915 - 最終更新日: 2011年8月15日 - リビジョン: 5.0
キーワード:?
kbfix kbqfe kbexpertiseadvanced kbmt kbsurveynew KB975915 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:975915
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com