현재 오프라인 상태입니다. 인터넷에 다시 연결하기를 기다리고 있습니다.

이 브라우저는 지원되지 않습니다.

사이트를 사용하여 브라우저를 업데이트해야 합니다.

최신 버전의 Internet Explorer를 업데이트하세요.

FIX: SQL Server 2005에서 쿼리를 실행할 때 오류 메시지: "중복 키 행을 고유 인덱스 <indexname><tablename>개체의 삽입할 수 없습니다"

중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

937533
버그: # 50001287 (SQL 핫픽스)
현상
SQL Server 2005에서 쿼리를 실행할 때 다음 오류 메시지가 나타납니다.
오류: 2601, 심각도: 14, 상태: 1
고유 인덱스가 ' IndexName ' ' TableName ' 개체에 중복 키 행을 삽입할 수 없습니다.
두 개 이상의 2,147,483,648 입력 행이 테이블 스풀 연산자는 쿼리에 대해 생성된 실행 계획을 포함하는 경우 이 문제가 발생합니다.
원인
테이블 스풀 연산자는 쿼리 실행 계획이 생성될 때 한 열에 대한 고유 클러스터된 인덱스를 만들기 때문에 이 문제가 발생합니다. 2,147,483,648 입력된 행 수를 초과할 경우 클러스터된 인덱스에 대한 uniquifier 실행됩니다. 따라서 중복된 행을 삽입할 수 있는 오류 메시지가 나타납니다.
해결 방법

누적 업데이트 정보

이 문제점에 대한 수정 프로그램은 먼저 누적 업데이트 2 릴리스되었습니다. 이 누적 업데이트 패키지에는 SQL Server 2005 서비스 팩 2를 구하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
936305SQL Server 2005 서비스 팩 2용 누적 업데이트 패키지 2
참고 빌드는 누적되는 형태이므로 각 새 수정 프로그램 릴리스의 모든 핫픽스와 들어 및 릴리스 이전 SQL Server 2005 포함된 모든 보안 수정 프로그램을 수정합니다. 이 핫픽스가 포함된 최신 수정 릴리스를 적용하는 것이 좋습니다. 추가 정보는 다음 문서 번호를 클릭하여 Microsoft 기술 자료에서 확인하십시오:
937137SQL Server 2005 서비스 팩 2가 릴리스된 후에 발표된 SQL Server 2005 빌드
Microsoft SQL Server 2005 핫픽스가 특정 SQL Server 서비스 팩 만들어집니다. SQL Server 2005 서비스 팩 2 설치를 위해 SQL Server 2005 서비스 팩 2의 핫픽스를 적용해야 합니다. 기본적으로 SQL Server 서비스 팩에 제공된 모든 핫픽스는 다음 SQL Server 서비스 팩이 포함되어 있습니다.
해결 과정
이 문제를 해결하려면 다음 방법 중 하나를 테이블 스풀 연산자는 피할 수 있습니다.

참고 다음 방법을 나와 쿼리를 "추가 정보" 절에 이 문제를 재현하는 단계"단원의 예로 들어 해결하려면 사용합니다.
  • 고유한 및 비-고유 집계를 별도의 쿼리를 사용하십시오.

    예를 들어, "추가 정보" 절의 예제 쿼리는 두 부분으로 쿼리 같이 중단:
    --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. 임시 테이블에 대해 집계를 수행하십시오.
  • 일부 쿼리 힌트 또는 인덱스 최적화 프로그램 힌트를 사용하는 쿼리를 다시 작성하십시오. 테이블 스풀 연산자는 피할 수 있는 방법을 찾을 수 있습니다.
현재 상태
Microsoft는 "본 문서의 정보는 다음의 제품에 적용됩니다." 절에 나열된 Microsoft 제품에서 이 문제를 확인했습니다.
추가 정보
이 핫픽스는 이 문제를 감지하고 이 상황에서 적절한 오류 메시지를 발생시키는 논리를 해결합니다. 이 핫픽스를 적용한 후에 이 문제가 발생할 때 다음과 같은 오류 메시지가 나타납니다.
시스템 생성 고유 최대값을 중복 그룹에 대한 인덱스 파티션 ID 초과했습니다 ‘ PartitionID ’. 삭제하고 인덱스를 다시 만들면 이; 문제를 해결할 수 있습니다 하지 않으면 다른 클러스터링 키를 사용합니다.

이 문제를 재현하는 방법

  1. SQL Server 관리 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
When you complete these steps, you receive the following execution plan:
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 두 개 이상의 행이 있는 경우 이 문제가 발생할 수 있습니다.

경고: 이 문서는 자동으로 번역되었습니다.

속성

문서 ID: 937533 - 마지막 검토: 08/14/2007 23:24:33 - 수정: 1.4

  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • kbmt kbsql2005engine kbexpertiseadvanced kbfix kbpubtypekc kbqfe KB937533 KbMtko
피드백