20122012. 6. 19. 11:58

IDENTITY 컬럼의 데이터형 최대 크기에 도달했을 때, 발생하는 오류와 간단한 테스트에 대한 예제입니다.

 

 

CREATE TABLE T1(
 COL1 INT IDENTITY(1,1) PRIMARY KEY,
 COL2 VARCHAR(10)
)

 

 

INSERT INTO T1 VALUES ('A')

SP_HELP T1

Identity Seed Increment Not For Replication
COL1 1 1 0

 

 

DBCC CHECKIDENT(T1, NORESEED)

ID 정보 확인: 현재 ID 값은 '1'이며, 현재 열 값은 '1'입니다.

 

 

DBCC CHECKIDENT(T1, RESEED, 2147483646)

ID 정보 확인: 현재 ID 값은 '1'이며, 현재 열 값은 '2147483646'입니다.

 

 

INSERT INTO T1 VALUES ('A')
DBCC CHECKIDENT(T1, NORESEED)

ID 정보 확인: 현재 ID 값은 '2147483647'이며, 현재 열 값은 '2147483647'입니다.

 

 

INSERT INTO T1 VALUES ('A')

메시지 8115, 수준 16, 상태 1, 줄 1
IDENTITY을(를) 데이터 형식 int(으)로 변환하는 중 산술 오버플로 오류가 발생했습니다.
산술 오버플로가 발생했습니다.


 

 

SELECT * FROM T1

COL1 COL2
1 A
2147483647 A

 

 

 

DELETE FROM T1

DBCC CHECKIDENT(T1, NORESEED)
INSERT INTO T1 VALUES ('A')

메시지 8115, 수준 16, 상태 1, 줄 1
IDENTITY을(를) 데이터 형식 int(으)로 변환하는 중 산술 오버플로 오류가 발생했습니다.
산술 오버플로가 발생했습니다.

 

 

 

DBCC CHECKIDENT(T1, RESEED, 10)

ID 정보 확인: 현재 ID 값은 '2147483647'이며, 현재 열 값은 '10'입니다.
DBCC 실행이 완료되었습니다. DBCC에서 오류 메시지를 출력하면 시스템 관리자에게 문의하십시오.

 


 

INSERT INTO T1 VALUES ('A')

SELECT * FROM T1

COL1 COL2
11 A

 

 

 

TRUNCATE TABLE T1
DBCC CHECKIDENT(T1, NORESEED)

ID 정보 확인: 현재 ID 값은 'NULL'이며, 현재 열 값은 'NULL'입니다.

 

 

[참고자료]

DBCC CHECKIDENT (Transact-SQL)
http://msdn.microsoft.com/en-us/library/ms176057.aspx

 

작성자 : Lai Go / 작성일자 : 2012.06.20

Posted by Lai Go