SQL Server 2012 check identity jump number after restarting service

版权声明:複製請註明來源 https://blog.csdn.net/weixin_39392627/article/details/86654871

env:Windows Server 2016

       SQL Server 2012 SP1

最近一位朋友問我一個問題,SQL Server服務重啟後identity跳號問題。

我記得以前SQL Server 2008R2有遇到,記得是利用script找到重啟服務前的號碼重設,可是這個方式在多表的時候是一個很大的負擔。

Trace flag 272也是一個解決方式。

 

1.建立測試DB

command:

CREATE DATABASE [TBTEST02]
 CONTAINMENT = NONE
 ON  PRIMARY 
( NAME = N'TBTEST02', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\TBTEST02.mdf' , SIZE = 4096KB , FILEGROWTH = 1024KB )
 LOG ON 
( NAME = N'TBTEST02_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\TBTEST02_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%)
GO

 

2.建立測試資料表與資料

command:

CREATE TABLE dbo.TEST01 (id int identity, name varchar(20))

insert into dbo.TEST01(name) values('john'),('mary')

select * from dbo.TEST01

 

3.檢查identity資訊

command:

dbcc checkident('TEST01', NORESEED)

identity現在的值是2

 

4.重啟SQL Server服務,並增加新的測試資料

command:

insert into dbo.TEST01(name) values('sean'),('larry')

select * from dbo.TEST01

重啟後發生跳號狀況

 

5.測試Trace flag 272,加到啟動參數,併重啟SQL Server服務

 

6.檢查啟動後identity值

command:

dbcc checkident('TEST01', NORESEED)

identitt值1003

 

7.增加測試數據

command:

insert into dbo.TEST01(name) values('sean'),('larry')

select * from dbo.TEST01

配置identity值1004, 1005

若多表有identity有跳號問題,Trace flag也許是不錯的選擇,一定要放在啟動參數裡面才有效果。

或是利用script重新設定

 

猜你喜欢

转载自blog.csdn.net/weixin_39392627/article/details/86654871