programing

SQL Server에서 ID 열 값이 갑자기 1001로 껑충 뛰었습니다.

stoneblock 2023. 7. 13. 20:21

SQL Server에서 ID 열 값이 갑자기 1001로 껑충 뛰었습니다.

저는 Sql server 2012(Denali)를 사용하고 있습니다.왜 모든 ID 열 값이 1001부터 시작하는지 궁금합니다.처음에Identity열은 1,2 등에서 시작하여 ID를 부드럽게 추가하지만, 갑자기 ID 열이 포함된 데이터베이스의 모든 테이블에 대해 1001,1002 이상으로 뜁니다.그 이유는 무엇일까요?도와주세요.

Microsoft는 SQL Server 2012에서 ID 값을 처리하는 방식을 변경했으며, 그 결과 SQL Server 인스턴스 또는 서버 시스템을 재부팅한 후 레코드 간의 ID 차이를 확인할 수 있습니다.이 ID 차이에는 다른 이유가 있을 수 있습니다. 업데이트를 설치한 후 자동으로 서버를 다시 시작하기 때문일 수 있습니다.

아래의 두 가지 선택 사항을 사용할 수 있습니다.

  • 추적 플래그 272o 사용 - 생성된 각 ID 값에 대해 로그 레코드가 생성됩니다.이 추적 플래그를 설정하면 ID 생성 성능에 영향을 줄 수 있습니다.

  • NO CASH 설정으로 시퀀스 생성기 사용

    여기서 예상하는 SQL Server 2012에서 추적 플래그 272 설정

  • "SQL Server 구성 관리자" 열기

  • 왼쪽 창에서 "SQL Server Services" 클릭

  • 오른쪽 창에서 SQL Server 인스턴스 이름을 마우스 오른쪽 버튼으로 클릭합니다. -> 기본값: SQL Server(MSSQL SERVER)

  • "속성"을 누릅니다.

  • "시작 매개 변수" 클릭

  • 시작 매개 변수 지정 텍스트 상자에 "-T272"를 입력합니다.

  • 추가를 클릭합니다.

  • 변경 사항 확인

저는 당신이 이 연결 항목에 대한 설명을 댓글로 가지고 있다고 생각합니다.페일오버 또는 다시 시작하면 ID 시드가 발생함

하이엔드 머신의 성능을 향상시키기 위해 2012년에 ID 가치를 위한 사전 할당을 도입합니다.또한 TF 272를 사용하여 이 기능을 사용하지 않도록 설정할 수 있습니다(2008R2의 동작을 확인할 수 있습니다).

ID 속성은 메타데이터에 별도로 저장됩니다.ID에 값이 사용되고 증분이 호출되면 새 시드 값이 설정됩니다.DBCC 시드를 제외하고는 롤백, 페일오버 등을 포함한 어떤 작업도 시드 값을 변경할 수 없습니다.페일오버가 테이블 개체에 적용되지만 ID 개체에는 적용되지 않습니다.따라서 페일오버의 경우 수동 페일오버 전에 체크포인트를 호출할 수 있지만, 계획되지 않은 경우에는 차이가 있을 수 있습니다.갭이 문제라면 TF 272를 사용할 것을 제안합니다.

제어 관리자 종료를 위해 다음 버전(다른 TF 포함)에 대한 수정 사항이 있습니다.이 수정 프로그램은 대부분의 제어 관리자 종료 사례를 처리합니다.

대신 시퀀스를 사용할 수 있을 것 같습니다. 시퀀스는 100% 완전한 제어를 제공하며, 정체성에 비해 여러 면에서 훨씬 우수합니다.아이덴티티는 정말 쉽고 편리합니다.

http://msdn.microsoft.com/en-us/library/ff878091.aspx

제가 알기로는 신원으로 삽입했다가 실패하면 신원은 어차피 사용되는 걸로 알고 있습니다,

시퀀스를 사용하면 사이클을 사용하여 공백을 "채울" 수 있습니다.하지만 Amy Barrett이 지적했듯이 이것은 거래 범위 밖에서 만들어졌습니다.

캐시를 사용할 때도 유용할 수 있는 성능 최적화 기능이 있습니다.

언급URL : https://stackoverflow.com/questions/17587094/identity-column-value-suddenly-jumps-to-1001-in-sql-server