문제

SQL Server 2005가 ID 열의 최대 값에 도달하면 어떻게됩니까? 처음부터 시작하여 격차를 리필하기 시작합니까?

SQL Server 2005가 발생할 때의 동작은 무엇입니까?

도움이 되었습니까?

해결책

최대 값에 도달하면 오버플로 오류가 발생합니다.. 최대 값으로 큰 데이터 타입을 사용하는 경우 9,223,372,036,854,775,807 이것은 아마도 그렇지 않을 것입니다.

당신이 얻을 오류 메시지는 다음과 같습니다.

Msg 220, Level 16, State 2, Line 10
Arithmetic overflow error for data type tinyint, value = 256.

(원천)

내가 아는 한 MS SQL은 ID 차이를 채우는 기능을 제공하지 않으므로 직접 수행하거나 ID 열의 데이터 유형을 변경해야합니다.

이 외에도 시작 값을 가장 작은 음수로 설정하여 더 큰 값을 사용할 수 있습니다.

다음은이 주제에 대한 좋은 블로그 게시물입니다.

다른 팁

그것은 갭을 채우지 않을 것입니다. 대신 삽입물은 열의 정의를 변경하여 신원을 삭제하고 간격을 채우거나 크기를 늘리거나 (int에서 bigint로 이동) 데이터 유형을 변경할 때까지 실패합니다. ) 더 많은 신원 값을 사용할 수 있도록합니다.

새 행을 삽입 할 수 없으며 문제를 해결할 때까지 위에 나열된 오류 메시지를받습니다. 당신은 이것을 여러 가지 방법으로 할 수 있습니다. 여전히 데이터가 있고 최대 아래의 모든 ID를 사용하는 경우 데이터 유형을 변경해야합니다. 데이터가 정기적으로 제거되고 사용되지 않을 큰 간격이있는 경우 해당 간격에서 가장 낮은 숫자로 식별 번호를 재현 할 수 있습니다. 예를 들어, 이전 작업에서 우리는 거래를 기록하고있었습니다. 우리는 월에 4 천만 ~ 5 천만 건을 가지고 있었지만 6 개월 이상 모든 것을 제거하고 있었기 때문에 몇 년마다 신원은 20 억에 가까워 질 것이지만, 우리는 15 억 이하의 신분증을 가지고 있지 않기 때문에 우리는 재조정 할 것입니다. 다시 0으로 돌아갑니다. 다시 한 번 이들 중 어느 것도 당신에게 효과가없고 다른 솔루션을 찾아야 할 수도 있습니다.

신원 열이 정수 인 경우 최대는 2,147,483,647입니다. 초과하면 오류 오류가 발생합니다.

이것이 위험하다고 생각되면 Bigint Datatype을 사용하여 최대 9,223,372,036,854,775,807을 제공하십시오. 많은 행이있는 데이터베이스 테이블을 상상할 수 없습니다.

심도 깊은 논의 여기. (XSL과 동일한 링크).

ID 열의 최대 번호를 누르면 해당 테이블의 데이터를 더 큰 ID 열 유형의 보조 테이블로 이동하고 해당 새 ID 값의 시작 값을 이전의 최대 값으로 지정할 수 있습니다. 유형. 새로운 ID 값은 그 시점부터 계속 될 것입니다.

때때로 "이전 값"을 삭제하면 DBCC Checkident ( 'Mytable', Reseed, 0)을 사용하여 씨앗을 재설정하면됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top