다음을 통해 공유


DBCC CHECKIDENT(Transact-SQL)

업데이트: 2008년 11월 17일

지정한 테이블의 현재 ID 값을 검사하고 필요에 따라 변경합니다. DBCC CHECKIDENT를 사용하여 ID 열의 새로운 현재 ID 값을 수동으로 설정할 수도 있습니다.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

DBCC CHECKIDENT 
( 
        table_name
        [ , { NORESEED | { RESEED [ , new_reseed_value ] } } ]
)
[ WITH NO_INFOMSGS ]

인수

  • table_name
    현재 ID 값을 검사할 테이블의 이름입니다. 지정한 테이블에는 ID 열이 있어야 합니다. 테이블 이름은 식별자에 대한 규칙을 따라야 합니다.
  • NORESEED
    현재 ID 값을 변경하지 않도록 지정합니다.
  • RESEED
    현재 ID 값을 변경하도록 지정합니다.
  • new_reseed_value
    ID 열의 현재 값으로 사용할 새 값입니다.
  • WITH NO_INFOMSGS
    모든 정보 메시지를 표시하지 않습니다.

결과 집합

ID 열이 포함된 테이블의 경우 DBCC CHECKIDENT는 옵션 지정 여부에 관계없이 값을 반환합니다. 값은 다를 수 있습니다.

Checking identity information: current identity value '290', current column value '290'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

초기값 변경

초기값은 테이블에 로드되는 첫 번째 행의 ID 열에 삽입되는 값입니다. 이후 모든 행에는 현재 ID 값과 증가값을 더한 값이 포함되며, 여기서 현재 ID 값은 테이블이나 뷰에 최근 생성된 ID 값입니다. 자세한 내용은 식별자 열 만들기 및 수정을 참조하십시오.

DBCC CHECKIDENT는 다음 작업을 수행하는 데 사용할 수 없습니다.

  • 테이블이나 뷰를 작성할 때 ID 열에 지정된 원래 초기값을 변경할 수 없습니다.
  • 테이블이나 뷰에 있는 기존 행의 초기값을 다시 설정할 수 없습니다.

원래 초기값을 변경하고 기존 행의 초기값을 다시 설정하려면 ID 열을 삭제한 후 새 초기값을 지정하여 ID 열을 다시 만들어야 합니다. 테이블에 데이터가 있으면 ID 번호가 지정된 초기값 및 증가값과 함께 기존 행에 추가됩니다. 행이 업데이트되는 순서는 보장되지 않습니다.

주의

현재 ID 값의 구체적인 수정 사항은 매개 변수 지정에 따라 달라집니다.

DBCC CHECKIDENT 명령 ID 수정 사항

DBCC CHECKIDENT ( table_name, NORESEED )

현재 ID 값을 다시 설정하지 않습니다. DBCC CHECKIDENT는 ID 열의 현재 ID 값과 현재 최대값을 반환합니다. 두 값이 같지 않으면 ID 값을 다시 설정하여 잠재적 오류를 방지하고 값이 간격 없이 순서대로 지정되도록 해야 합니다.

DBCC CHECKIDENT ( table_name )

또는

DBCC CHECKIDENT ( table_name, RESEED )

테이블의 현재 ID 값이 ID 열에 저장된 최대 ID 값보다 작을 경우 ID 열의 최대값을 사용하여 다시 설정됩니다.

DBCC CHECKIDENT ( table_name, RESEED,new_reseed_value )

현재 ID 값이 new_reseed_value로 설정됩니다. 테이블이 생성된 후 삽입된 행이 없거나 TRUNCATE TABLE 문을 사용하여 모든 행을 제거한 경우에는 DBCC CHECKIDENT를 실행한 후에 처음 삽입되는 행이 new_reseed_value를 ID로 사용하게 됩니다. 그렇지 않으면 다음에 삽입된 행은 new_reseed_value + 현재 증분 값을 사용합니다.

테이블이 비어 있지 않은 경우 ID 값을 ID 열의 최대값보다 작은 숫자로 설정하면 다음 조건 중 하나가 발생할 수 있습니다.

  • ID 열에 PRIMARY KEY 또는 UNIQUE 제약 조건이 있으면 생성된 ID 값이 기존 값과 충돌하므로 나중에 테이블에 삽입 작업을 수행할 때 오류 메시지 2627이 생성됩니다.
  • PRIMARY KEY 또는 UNIQUE 제약 조건이 없으면 나중에 삽입 작업을 수행할 때 중복 ID 값이 생성됩니다.

예외

다음 표에서는 DBCC CHECKIDENT가 자동으로 현재 ID 값을 다시 설정하지 않는 조건을 보여 주고 해당 값을 다시 설정하는 방법을 제공합니다.

상태 다시 설정 방법

현재 ID 값이 테이블의 최대값보다 큰 경우

  • DBCC CHECKIDENT (table_name, NORESEED)를 실행하여 열의 현재 최대값을 확인한 다음 이 값을 DBCC CHECKIDENT (table_name, RESEED,new_reseed_value) 명령에서 new_reseed_value로 지정합니다.

또는

  • new_reseed_value를 매우 낮은 값으로 설정하여 DBCC CHECKIDENT (table_name, RESEED,new_reseed_value)를 실행한 다음 DBCC CHECKIDENT (table_name, RESEED)를 실행하여 값을 수정합니다.

모든 행이 테이블에서 삭제되는 경우

new_reseed_value를 원하는 시작 값으로 설정하여 DBCC CHECKIDENT (table_name, RESEED,new_reseed_value)를 실행합니다.

사용 권한

호출자는 테이블을 소유하거나 sysadmin 고정 서버 역할, db_owner 고정 데이터베이스 역할 또는 db_ddladmin 고정 데이터베이스 역할의 멤버여야 합니다.

1. 필요에 따라 현재 ID 값 다시 설정

다음 예에서는 필요에 따라 AdventureWorks 데이터베이스에서 Employee의 현재 ID 값을 다시 설정합니다.

USE AdventureWorks;
GO
DBCC CHECKIDENT ("HumanResources.Employee");
GO

2. 현재 ID 값 보고

다음 예에서는 AdventureWorks 데이터베이스에 있는 Employee 테이블의 현재 ID 값을 보고하고, ID 값이 잘못되었더라도 그 값을 수정하지 않습니다.

USE AdventureWorks;
GO
DBCC CHECKIDENT ("HumanResources.Employee", NORESEED);
GO

3. 현재 ID 값을 30으로 설정

다음 예에서는 Employee 테이블에 있는 EmployeeID 열의 현재 ID 값을 300으로 설정합니다. 테이블에 기존 행이 있기 때문에 다음 번에 삽입되는 행의 값은 열에 정의된 현재 증가값인 1과 현재 ID 값을 합한 301이 됩니다.

USE AdventureWorks;
GO
DBCC CHECKIDENT ("HumanResources.Employee", RESEED, 30);
GO

참고 항목

참조

ALTER TABLE(Transact-SQL)
CREATE TABLE(Transact-SQL)
DBCC(Transact-SQL)
IDENTITY(속성)(Transact-SQL)
USE(Transact-SQL)

관련 자료

ID 열 복제

도움말 및 정보

SQL Server 2005 지원 받기

변경 내역

릴리스 내역

2008년 11월 17일

변경된 내용
  • new_reseed_value.의 정의를 수정했습니다.
  • 초기값 변경에 대한 섹션을 주의에 추가했습니다.

2006년 4월 14일

새로운 내용
  • ID 값을 ID 열의 최대값보다 작은 숫자로 설정하는 경우의 결과에 대한 텍스트를 추가했습니다.
  • 예외 섹션에 모든 행이 테이블에서 삭제되는 경우에 대한 텍스트를 추가했습니다.

2005년 12월 5일

새로운 내용
  • new_reseed_value 인수에 대한 설명을 추가했습니다.