修正: SQL Server の 2014 columnstore がクラスター化インデックスのクエリでの部分的な結果します。

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

英語版 KB:3067257
Microsoft SQL Server の 2014 columnstore がクラスター化インデックスのクエリ中に発生する問題について説明します。掲載しています 解像度 この問題。
概要
2014 の Microsoft SQL Server で、columnstore のクラスター化インデックスをスキャンするクエリを使用するとした場合、まれな条件下で受信部分のクエリの結果。

この問題は次の操作が実行されると発生します。
ステップ 1
[挿入または一括挿入] は、Transact SQL ステートメントが columnstore のインデックスをクラスター化されたテーブルにデータを挿入します。この操作中に、次の条件が適用されます。
  • しきい値に達したら、Transact SQL 文、表、表を持つセグメント S1、R1 を閉じます。
  • セグメント S1 は D1 のローカル辞書を指します。
  • 文 R2 の新しい表に行を挿入し続けます。
  • R1 の表を閉じると D1 ローカル辞書がない閉じられます。D1 の辞書がまだ使用可能な領域の場合は開いたままにしておき、R2 の新しい表を再利用できます。
ステップ 2
Transact SQL ステートメントは異常終了、R2 の新しい表を閉じる前にキャンセルされた場合、次の条件が適用されます。
  • Columnstore メタデータの変更と、外側のトランザクションをコミットするサブトランザクションに発生します。
  • この時点で R1 が、「工事中」または非表示の状態とセグメント S1 のシステム テーブルに保持する表 D1 の辞書を参照します。
  • 辞書 D1 のシステム テーブル内の行はありません。Transact SQL ステートメントを既存の行を閉じることがあるためにです。したがって、既存の行が続きます。
手順 3
組 mover のバック グラウンド タスクを開始する場合、一般的な状況でバック グラウンド タスクの Transact SQL ステートメントの終了後、非表示・表・ R1 と S1 のセグメントを削除します。新しい Transact SQL ステートメントが開始が新しいセグメントを新しいローカル辞書を必要とする S3、R3 の表を作成する場合、D1 を辞書の内部 ID を再利用できません。Columnstore のメモリ内状態の辞書が使用されている Id を追跡するためです。したがって、S3 のセグメントは新しい辞書 D2 を参照します。

注: <b>ここの条件は、一般的な条件です。したがって、破損は発生しません。
手順 4
組 mover タスクに有効になります (とステップ 3 で説明したよう実行) する前に SQL Server が D1 の辞書のメモリ内状態を失った、この資料に記載されている問題が発生します。

注:
  • 理由は次のいずれかのこのイベントが発生します。
    • SQL Server メモリのオーバー ロードと D1 がメモリから削除された辞書のインメモリ内容が発生します。
    • SQL Server のインスタンスが再起動されます。
    • Columnstore のクラスター化インデックスを含むデータベースがオフラインがオンラインに戻った.
  • これらのイベントのいずれかが発生して SQL Server の再読み込み、メモリ内の構造体、レコードはありませんが D1 辞書とその内部 ID が存在していた。D1 の辞書が、Transact SQL ステートメントが終了したときに、システム テーブルの conceled は保持されないためにです。
  • 組 mover のバック グラウンド タスクをこの時点で起動する場合、手順 3 に記載されている条件が適用されますので、エラーは発生しません。
  • (前の箇条書き項目) ごとの組 mover のバック グラウンド タスクの開始前に、新しい表の R3 が作成され、SQL Server を新しい辞書 D1、同じ内部 ID を割り当てますセグメント S3 表 R3 での D1 の辞書を参照します。
  • 組 mover のバック グラウンド タスク起動時に前の操作の後に、目に見えない表 R1 とそのセグメント S1 D1 の新しい辞書と削除します。組 mover は、その新しい辞書 D1、D1 の S1 の参照が同じである元の辞書を考慮するためです。

    注: <b>この条件が発生した場合、R3 の表の内容を照会できません。
解決方法
問題がで最初に修正、次の累積的な更新を SQL Server:


この問題の修正プログラム、次の一般配布リリース (GDR) 更新も。

2014 QFE の SQL Server のセキュリティ更新プログラム
この更新プログラムには累積的な更新 8、この重要な修正および MS15 058 セキュリティ更新プログラムが含まれます。

2014 GDR の SQL Server のセキュリティ更新プログラム
MS15 058 を通じての累積的なセキュリティ修正この重要な修正プログラムがこの更新プログラムに含まれています.

2014 Service Pack 1 GDR の SQL Server のセキュリティ以外の更新
この更新プログラムには重要なこの修正プログラムのみが含まれます。

SQL Server 用の累積的な更新について

ごと新しいの累積的な更新 SQL Server にはのすべての修正プログラムが含まれていて、以前の累積的な更新プログラムとセキュリティ修正がすべて付属します。SQL Server の最新の累積的な更新プログラムを参照してください。
詳細

エラー メッセージ

現在に影響を受けるデータベースで DBCC CHECKDB を実行するこの修正プログラムを適用した後場合が表示されたら次のエラー メッセージ。
5289 のメッセージ、レベル 16、状態 1、行 1
Columnstore のクラスター化インデックス '自分自身' テーブルに 't' が 1 つまたは複数のデータ値をディクショナリ内のデータ値と一致しません。バックアップからデータを復元します。

現在に影響を受けるデータベースで、この修正プログラムを適用した後、影響を受けるテーブルをスキャンするクエリを実行するときに次のエラー メッセージを受信します。
5288 のメッセージ、レベル 16、状態 1、行 1
Columnstore インデックスが 1 つまたは複数のデータ値をディクショナリ内のデータ値と一致しません。詳細 DBCC CHECKDB を実行してください。

これらエラーが発生した場合の影響を受ける列と「データをエクスポートしドロップするか columnstore のクラスター化インデックスを作成し、データを再読み込みを一括して、破損していないデータを保存できます。5288 エラーをスキップ壊れた rowgroups という古い動作に戻す 10207 のトレース フラグを有効にしてください。

この表を持つセグメントの S3、R3 5288 と 5289 のエラー メッセージが生成されます。10207 のトレース フラグは、不足している辞書の D1 の影響は受けませんが R3 の表のセグメントを抽出する使用されます。

クエリの影響を受けるデータベース

Columnstore インデックスを含むデータベースが既にこの問題が発生するかどうかを確認するのに次のクエリを実行します。
select         object_name(i.object_id) as table_name,        i.name as index_name,        p.partition_number,        count(distinct s.segment_id) as damaged_rowgroups from        sys.indexes i        join sys.partitions p on p.object_id = i.object_id and p.index_id = i.index_id        join sys.column_store_row_groups g on g.object_id = i.object_id and g.index_id = i.index_id and g.partition_number = p.partition_number        join sys.column_store_segments s on s.partition_id = p.partition_id and s.segment_id = g.row_group_id where         i.type in (5, 6)        and s.secondary_dictionary_id <> -1         and g.state_description = 'COMPRESSED'        and s.secondary_dictionary_id not in        (               select dictionary_id from sys.column_store_dictionaries d               where d.hobt_id = p.hobt_id and d.column_id = s.column_id        ) group by         object_name(i.object_id),        i.name,        p.partition_number 

注:
  • SQL Server を実行しているサーバー上の columnstore のインデックスを含むすべてのデータベースに対してこのクエリを実行するがあります。空の結果セットは、データベースに影響はないことを示します。
  • 期間中にこのクエリを実行する rowgroups の既存の状態を変更または作成新しい rowgroups アクティビティがない場合。次のアクティビティなど、rowgroups の状態を変更できます。 インデックスの作成、インデックスの再編成、一括挿入、圧縮デルタ店舗組のムーバ。

    クエリを実行する前に 634 のトレース フラグを使用して組 mover バック グラウンド タスクを無効にできます。バック グラウンド タスクを無効にするこのコマンドを使用: (634,-1) の DBCC TRACEON。コマンドを使用してバック グラウンド タスクを再度有効にする、クエリの実行が終了後に注意してください: (634,-1)、DBCC TRACEOFF

    このクエリの実行中に columnstore のインデックスを使用するテーブルにデータを挿入、一括挿入と BCP との選択-にコマンドがないかどうかを確認しても。

    誤返すからクエリを防ぐためにこれらの手順を使用することをお勧めします。
状況
マイクロソフトは、この問題を「対象製品」セクションに記載されているマイクロソフト製品の問題として認識しています。

警告: この記事は自動翻訳されています

プロパティ

文書番号:3067257 - 最終更新日: 07/23/2015 02:39:00 - リビジョン: 3.0

Microsoft SQL Server 2014 Service Pack 1, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard

  • kbqfe kbsurveynew kbexpertiseadvanced kbfix kbmt KB3067257 KbMtja
フィードバック