現在オフラインです。再接続するためにインターネットの接続を待っています

FIX SQL Server 2005 でクエリを実行すると、エラー メッセージ:"オブジェクト<tablename>が一意インデックス '<indexname>'</indexname></tablename>で重複するキー行を挿入できません

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

英語版 KB:937533
バグ: # 50001287 (SQL 修正プログラム)
現象
SQL Server 2005 では、クエリを実行すると、次のエラー メッセージが表示されます。
エラー: 2601、レベル: 14、状態: 1
重複するキー行を挿入できません 'テーブル名' を一意インデックス 'IndexName'.
クエリに対して生成される実行プランに含まれている場合にこの問題が発生します。 テーブルのスプール 入力行を超える 2,147,483,648 演算子です。
原因
この問題が発生するため、 テーブルのスプール 演算子は、クエリの実行プランが生成されますと列に一意なクラスター化インデックスを作成します。入力ローの数は 2,147,483,648 より大きい場合、クラスター化インデックスは、uniquifier がなくなります。このため、重複する行を挿入できないことを示すエラー メッセージが表示されます。
解決方法

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

この問題に対する修正は累積的な更新プログラム 2 に初めてリリースされました。この累積的な更新プログラム パッケージを SQL Server 2005 Service Pack 2 を入手する方法の詳細については、Knowledge Base の資料を参照するのには、次の資料番号をクリックしてください。
936305 SQL Server 2005 Service Pack 2 用の累積的な更新プログラム パッケージ 2
メモ ビルドは累積的であるため、新しい修正プログラム リリースすべての修正プログラムが含まれているし、以前の SQL Server 2005 に含まれていたすべてのセキュリティ修正プログラム リリースを修正します。マイクロソフトはこの修正プログラムを含む最新の修正プログラム リリースを適用を検討することをお勧めします。詳細については、Knowledge Base の資料を参照するのには、次の資料番号をクリックしてください。
937137 SQL Server 2005 Service Pack 2 のリリース以降後にリリースされた、SQL Server 2005 のビルドします。
特定の SQL Server のサービス パックの Microsoft SQL Server 2005年の修正プログラムが作成されます。SQL Server 2005 Service Pack 2 のインストールに SQL Server 2005 Service Pack 2 修正プログラムを適用する必要があります。既定では、SQL Server サービス パックで提供されている修正プログラム SQL Server の次の service pack に含まれてです。
回避策
この問題を回避するには、次の方法のいずれかを避けるために使用する、 テーブルのスプール 演算子です。

メモ 以下の方法記載されている、クエリ「この問題の再現手順」のセクション「関連情報」セクション例としてを回避するのには. します。
  • 一意と一意ではない集計内の個別のクエリを使用します。

    などのクエリの例は、「関連情報」セクションで、クエリ 2 には次のように分割します。
    --Part 1select t1.c1,sum(t2.c3)from t1 inner join t2 on t1.c1=t2.c1group by t1.c1--Part 2select t1.c1 , count(distinct t1.c3)from t1 inner join t2 on t1.c1=t2.c1group by t1.c1
  • テンポラリ ・ テーブルを使用します。
    1. 一時テーブルを作成します。
    2. テンポラリ ・ テーブルに集計を含む行を挿入します。
    3. テンポラリ ・ テーブルに対して集計を実行します。
  • 一部のクエリ ヒントまたはインデックス オプティマイザー ヒントを使用してクエリを書き直すしようとしてください。回避するための方法があります、 テーブルのスプール 演算子です。
状況
マイクロソフトでは、この「対象」に記載されているマイクロソフト製品の問題として認識しています。
詳細
この修正プログラムはこの問題を検出し、このような状況に該当するエラー メッセージを生成するためのロジックを修正します。この修正プログラムを適用すると、この問題が発生した場合、次のエラー メッセージが表示されます。
インデックス パーティションの id をシステムで生成された一意の最大値が重複しているグループを超えました 'パーティション Id’.削除し、インデックスを再作成するこの問題を解決可能性があります。それ以外の場合は、別のクラスター化キーを使用します。

この問題を再現する手順

  1. SQL Server Management Studio を開き、SQL Server 2005 のインスタンスに接続します。
  2. 新しいクエリを作成し、次のステートメントを実行します。
    if exists(select name from sysobjects where name=N't1' and xtype='U')drop table t1gocreate table t1( c1 bigint identity,c2 char (10),c3 int ,c4 int)goif exists(select name from sysobjects where name=N't2' and xtype='U')drop table t2gocreate table t2( c1 bigint identity,c2 char (10),c3 int ,c4 int)go
  3. 次のステートメントを実行します。
    set showplan_all ongoselect t1.c1,sum(t2.c3), count(distinct t1.c3)from t1 inner join t2 on t1.c1=t2.c1group by t1.c1goset showplan_all offgo
次の手順を完了すると、次の実行プランが表示されます。
StmtText                                                                                                                                                                              StmtId      NodeId      Parent      PhysicalOp                     LogicalOp                      Argument                                                                                                                              DefinedValues                                                                           EstimateRows  EstimateIO    EstimateCPU   AvgRowSize  TotalSubtreeCost OutputList                                                                                          Warnings Type                                                             Parallel EstimateExecutions------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------- ----------- ----------- ------------------------------ ------------------------------ ------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------- ------------- ------------- ------------- ----------- ---------------- --------------------------------------------------------------------------------------------------- -------- ---------------------------------------------------------------- -------- ------------------select t1.c1,sum(t2.c3), count(distinct t1.c3)from t1 inner join t2 on t1.c1=t2.c1group by t1.c1                                                                                1           1           0           NULL                           NULL                           1                                                                                                                                     NULL                                                                                    1             NULL          NULL          NULL        0.06636031       NULL                                                                                                NULL     SELECT                                                           0        NULL  |--Compute Scalar(DEFINE:([Test2].[dbo].[t1].[c1]=[Test2].[dbo].[t1].[c1]))                                                                                                         1           2           1           Compute Scalar                 Compute Scalar                 DEFINE:([Test2].[dbo].[t1].[c1]=[Test2].[dbo].[t1].[c1])                                                                              [Test2].[dbo].[t1].[c1]=[Test2].[dbo].[t1].[c1]                                         1             0             1E-07         23          0.06636031       [Test2].[dbo].[t1].[c1], [Expr1008], [Expr1009]                                                     NULL     PLAN_ROW                                                         0        1       |--Merge Join(Inner Join, MANY-TO-MANY MERGE:([Test2].[dbo].[t1].[c1])=([Test2].[dbo].[t1].[c1]), RESIDUAL:([Test2].[dbo].[t1].[c1] = [Test2].[dbo].[t1].[c1]))                1           3           2           Merge Join                     Inner Join                     MANY-TO-MANY MERGE:([Test2].[dbo].[t1].[c1])=([Test2].[dbo].[t1].[c1]), RESIDUAL:([Test2].[dbo].[t1].[c1] = [Test2].[dbo].[t1].[c1])  NULL                                                                                    1             0.000313      0.00564738    23          0.06636021       [Expr1008], [Expr1009], [Test2].[dbo].[t1].[c1]                                                     NULL     PLAN_ROW                                                         0        1            |--Compute Scalar(DEFINE:([Test2].[dbo].[t1].[c1]=[Test2].[dbo].[t1].[c1]))                                                                                               1           4           3           Compute Scalar                 Compute Scalar                 DEFINE:([Test2].[dbo].[t1].[c1]=[Test2].[dbo].[t1].[c1])                                                                              [Test2].[dbo].[t1].[c1]=[Test2].[dbo].[t1].[c1]                                         1             0             1E-07         19          0.03019842       [Expr1009], [Test2].[dbo].[t1].[c1]                                                                 NULL     PLAN_ROW                                                         0        1            |    |--Compute Scalar(DEFINE:([Expr1009]=CONVERT_IMPLICIT(int,[Expr1019],0)))                                                                                            1           5           4           Compute Scalar                 Compute Scalar                 DEFINE:([Expr1009]=CONVERT_IMPLICIT(int,[Expr1019],0))                                                                                [Expr1009]=CONVERT_IMPLICIT(int,[Expr1019],0)                                           1             0             1.1E-06       19          0.03019832       [Test2].[dbo].[t1].[c1], [Expr1009]                                                                 NULL     PLAN_ROW                                                         0        1            |         |--Stream Aggregate(GROUP BY:([Test2].[dbo].[t1].[c1]) DEFINE:([Expr1019]=COUNT([Test2].[dbo].[t1].[c3])))                                                      1           6           5           Stream Aggregate               Aggregate                      GROUP BY:([Test2].[dbo].[t1].[c1])                                                                                                    [Expr1019]=COUNT([Test2].[dbo].[t1].[c3])                                               1             0             1.1E-06       19          0.03019832       [Test2].[dbo].[t1].[c1], [Expr1019]                                                                 NULL     PLAN_ROW                                                         0        1            |              |--Sort(DISTINCT ORDER BY:([Test2].[dbo].[t1].[c1] ASC, [Test2].[dbo].[t1].[c3] ASC))                                                                      1           7           6           Sort                           Distinct Sort                  DISTINCT ORDER BY:([Test2].[dbo].[t1].[c1] ASC, [Test2].[dbo].[t1].[c3] ASC)                                                          NULL                                                                                    1             0.01126126    0.000100019   19          0.03019721       [Test2].[dbo].[t1].[c1], [Test2].[dbo].[t1].[c3]                                                    NULL     PLAN_ROW                                                         0        1            |                   |--Table Spool                                                                                                                                        1           9           7           Table Spool                    Eager Spool                    NULL                                                                                                                                  NULL                                                                                    1             0.006579998   5.041407E-05  31          0.01883594       [Test2].[dbo].[t1].[c1], [Test2].[dbo].[t1].[c3], [Test2].[dbo].[t2].[c3]                           NULL     PLAN_ROW                                                         0        1            |                        |--Hash Match(Inner Join, HASH:([Test2].[dbo].[t2].[c1])=([Test2].[dbo].[t1].[c1]), RESIDUAL:([Test2].[dbo].[t2].[c1]=[Test2].[dbo].[t1].[c1]))  1           10          9           Hash Match                     Inner Join                     HASH:([Test2].[dbo].[t2].[c1])=([Test2].[dbo].[t1].[c1]), RESIDUAL:([Test2].[dbo].[t2].[c1]=[Test2].[dbo].[t1].[c1])                  NULL                                                                                    1             0             0.01777693    31          0.02434613       [Test2].[dbo].[t1].[c1], [Test2].[dbo].[t1].[c3], [Test2].[dbo].[t2].[c1], [Test2].[dbo].[t2].[c3]  NULL     PLAN_ROW                                                         0        1            |                             |--Table Scan(OBJECT:([Test2].[dbo].[t2]))                                                                                                  1           11          10          Table Scan                     Table Scan                     OBJECT:([Test2].[dbo].[t2])                                                                                                           [Test2].[dbo].[t2].[c1], [Test2].[dbo].[t2].[c3]                                        1             0.003125      0.0001581     19          0.0032831        [Test2].[dbo].[t2].[c1], [Test2].[dbo].[t2].[c3]                                                    NULL     PLAN_ROW                                                         0        1            |                             |--Table Scan(OBJECT:([Test2].[dbo].[t1]))                                                                                                  1           12          10          Table Scan                     Table Scan                     OBJECT:([Test2].[dbo].[t1])                                                                                                           [Test2].[dbo].[t1].[c1], [Test2].[dbo].[t1].[c3]                                        1             0.003125      0.0001581     19          0.0032831        [Test2].[dbo].[t1].[c1], [Test2].[dbo].[t1].[c3]                                                    NULL     PLAN_ROW                                                         0        1            |--Compute Scalar(DEFINE:([Test2].[dbo].[t1].[c1]=[Test2].[dbo].[t1].[c1]))                                                                                               1           26          3           Compute Scalar                 Compute Scalar                 DEFINE:([Test2].[dbo].[t1].[c1]=[Test2].[dbo].[t1].[c1])                                                                              [Test2].[dbo].[t1].[c1]=[Test2].[dbo].[t1].[c1]                                         1             0             1E-07         19          0.03019842       [Expr1008], [Test2].[dbo].[t1].[c1]                                                                 NULL     PLAN_ROW                                                         0        1                 |--Compute Scalar(DEFINE:([Expr1008]=CASE WHEN [Expr1020]=(0) THEN NULL ELSE [Expr1021] END))                                                                        1           27          26          Compute Scalar                 Compute Scalar                 DEFINE:([Expr1008]=CASE WHEN [Expr1020]=(0) THEN NULL ELSE [Expr1021] END)                                                            [Expr1008]=CASE WHEN [Expr1020]=(0) THEN NULL ELSE [Expr1021] END                       1             0             1.1E-06       19          0.03019832       [Test2].[dbo].[t1].[c1], [Expr1008]                                                                 NULL     PLAN_ROW                                                         0        1                      |--Stream Aggregate(GROUP BY:([Test2].[dbo].[t1].[c1]) DEFINE:([Expr1020]=COUNT_BIG([Test2].[dbo].[t2].[c3]), [Expr1021]=SUM([Test2].[dbo].[t2].[c3])))         1           28          27          Stream Aggregate               Aggregate                      GROUP BY:([Test2].[dbo].[t1].[c1])                                                                                                    [Expr1020]=COUNT_BIG([Test2].[dbo].[t2].[c3]), [Expr1021]=SUM([Test2].[dbo].[t2].[c3])  1             0             1.1E-06       19          0.03019832       [Test2].[dbo].[t1].[c1], [Expr1020], [Expr1021]                                                     NULL     PLAN_ROW                                                         0        1                           |--Sort(ORDER BY:([Test2].[dbo].[t1].[c1] ASC))                                                                                                            1           29          28          Sort                           Sort                           ORDER BY:([Test2].[dbo].[t1].[c1] ASC)                                                                                                NULL                                                                                    1             0.01126126    0.000100019   19          0.03019721       [Test2].[dbo].[t1].[c1], [Test2].[dbo].[t2].[c3]                                                    NULL     PLAN_ROW                                                         0        1                                |--Table Spool                                                                                                                                        1           31          29          Table Spool                    Eager Spool                    NULL                                                                                                                                  NULL                                                                                    1             0.006579998   5.041407E-05  31          0.01883594       [Test2].[dbo].[t1].[c1], [Test2].[dbo].[t1].[c3], [Test2].[dbo].[t2].[c3]                           NULL     PLAN_ROW                                                         0        1
以上 2,147,483,648 行のテスト テーブルがある場合は、この問題が発生します。

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

プロパティ

文書番号:937533 - 最終更新日: 08/09/2011 12:08:00 - リビジョン: 5.0

  • kbfix kbqfe kbpubtypekc kbexpertiseadvanced kbsql2005engine kbmt KB937533 KbMtja
フィードバック
.appendChild(m);