SQL Server DBCC CHECKIDENT
  1. Anasayfa
  2. SQL Server

SQL Server DBCC CHECKIDENT

1

SQL Server’da bir tabloda ID kolonunun alacağı bir sonraki değeri güncellemek veya sıfırlamak için DBCC CHECKIDENT komutu kullanılır. Oluşturduğumuz tablolarımızda Design aşamasında Identity Specification alanımız ‘Yes’ ise ve bu tablomuzda silinen kayıtlar sonrası ID alanı silinmeden önceki ID numarasından artarak devam edecektir-yani silinen ID numaralarını artık alamayacaktır.- ID alanının istenilen değerden devam etmesini istiyorsak DBCC CHECKIDENT işimizi çözümleyecektir.

Resim-1

Örnek olarak AdventureWorks veritabanından ID kolonuna sahip bir tablonun verilerinden faydalanıyorum:

SELECT BusinessEntityID, FirstName, MiddleName, LastName

INTO [AdventureWorks2016].[Person].[PersonList]

FROM [AdventureWorks2016].[Person].[Person]

Resim-2

Oluşturduğumuz PersonList tablosunun BusinessEntityID kolonunu Primary Key olarak set ediyoruz:

ALTER TABLE [AdventureWorks2016].[Person].[PersonList]

ADD PRIMARY KEY (BusinessEntityID)

Resim-3

Sonrasında ilgili tablonun design kısmını açıp Resim-1’deki gibi Identity Specification alanını ‘Yes’ olarak set ediyoruz.

Tablomuzdaki maksimum ID yi görüntülüyoruz:

SELECT TOP (1000) [BusinessEntityID]

,[FirstName]

,[MiddleName]

,[LastName]

FROM [AdventureWorks2016].[Person].[PersonList]

ORDER BY 1 DESC

Resim-4

Burada görmemiz gereken durumu test edebilmek için öncelikle tablomuzdan birkaç kayıt siliyoruz:

DELETE FROM [AdventureWorks2016].[Person].[PersonList]

WHERE BusinessEntityID IN(‘20775’, ‘20776’, ‘20777’)


Resim-5

Ardından yeni bir kayıt ekleyerek alacağı ID yi gözlemleyelim:

INSERT INTO [AdventureWorks2016].[Person].[PersonList]

     ([FirstName]

     ,[MiddleName]

     ,[LastName])

VALUES

(‘Arzu’

     ,NULL

     ,’Duran’)

Resim-6

Tablomuza eklenen kayıt sonrası baktığımız zaman ID değerinin en son silinen en büyük ID sonrası ‘20778’ olarak değer aldığını gözlemliyoruz. İstediğimiz, bu ID alanının tablodaki en son değerden tekrar artarak ilerlemesidir.(Ya da istenilen unique bir değer ile devam etmesini isteyebiliriz.)

SELECT *

FROM [AdventureWorks2016].[Person].[PersonList]

ORDER BY 1 DESC

Resim-7

Eklediğimiz son kaydı istenilen ID değerini alamadığı için siliyorum:

DELETE FROM [AdventureWorks2016].[Person].[PersonList] WHERE BusinessEntityID = 20778

Resim-8

DBCC CHECKIDENT komutuna ait syntax:

DBCC CHECKIDENT ( table_name, RESEED, new_reseed_value )

DBCC CHECKIDENT komutunu istediğimiz ID değeriyle başlayabilmesi için kullanıyoruz:

DBCC CHECKIDENT(‘Person.PersonList’, RESEED,20774)

Resim-9

Aşağıdaki query ile de tablomuzun en son alacağı ID değerini gözlemleyebiliriz:

SELECT IDENT_CURRENT(‘Person.PersonList’)

Resim-10

Daha önce eklediğimiz kaydı tekrar ekleyelim:

Resim-11

Tablomuzda aşağıdaki sorguyu çektiğimiz zaman beklediğimiz gibi yeni eklenen kaydın ‘20775’ ID numarası ile devam ettiğini gözlemliyoruz:

Resim-12

Ek olarak tabloda  TRUNCATE komutu ile tüm kayıtları silmenin yanı sıra ID değerinin de sıfırlanmasını sağlarız, TRUNCATE edilen tabloya yeni kayıt eklendiği takdirde ID değeri 1’den başlar.

DBCC CHECKIDENT komutunu çalıştırabilmek için ilgili veritabanında en az db_owner olmanız gerekir.

DBCC CHECKIDENT komutu ile ID değerini istediğimiz şekilde set edebileceğimizi gözlemlemiş bulunmaktayız.

Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

https://www.mshowto.org

https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checkident-transact-sql?view=sql-server-ver15

TAGs: SQL Server, DBCC CHECKIDENT, RESEED, ID RESEED, New Reseed Value, SQL Server DBCC CHECKIDENT

Bu İçeriğe Tepkin Ne Oldu?
  • 31
    harika_
    Harika!!
  • 1
    be_enmedim
    Beğenmedim
  • 1
    _ok_iyi
    Çok iyi
  • 0
    sevdim_
    Sevdim!
  • 0
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

Trakya Üniversitesi - Bilgisayar Mühendisliği mezunuyum. Öğrenim hayatım boyunca C, C++, C#, VB.NET ve ASP.NET MVC dilleri ile SQL Server veri tabanı altyapılı çeşitli otomasyon projelerinde yer aldım. İş hayatıma ERP Software Support Specialist pozisyonuyla başlayıp kısa bir süre sonra kariyerime BELBİM Elektronik Para ve Ödeme Hizmetleri A.Ş.'de Ms SQL Database Administrator pozisyonu ile yön vermiş bulunmaktayım. SQL Server ile birlikte Data Warehouse, Oracle ve PostgreSQL alanlarına ilgiliyim ve kendimi bu alanlarda geliştirmeye devam ediyorum.

Yazarın Profili
İlginizi Çekebilir

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Yorumlar (1)

  1. Emeğinize sağlık Arzu hanım çok güzel olmuş👏🏻👏🏻

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir