SQL Server 2012 check identity jump number after restarting service

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重新設定

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值