Orta Seviye SQL Server Sql Server

SQL Server’da DBCC CHECKIDENT Kullanımı

SQL Server Eğitimleri Kanalına Abone Olun

Herkese merhaba,

Bu yazıda SQL Server’da DBCC CHECKIDENT kullanımından bahsedeceğim.

SQL Server’da IDENTITY alanı bulunan bir tabloda o alandaki sayılar verilmiş değere göre ardışık olarak ilerler. Her yeni kayıtta bu sayı belirtilen değere artar. Bu kayıtlardan biri silindiği zaman o satıra ait IDENTITY değeri bir daha kullanılamaz. Bir süre sonra silmelerden dolayı tablo üzerindeki IDENTITY alanında çok fazla atlamalar söz konusu olur. İşte konumuz bununla ilgili.

DBCC CHECKIDENT komutu bu işlemi yapmamızı sağlar.

DBCC CHECKIDENT ('Tablo Adı', RESEED, Başlangıç Sayısı)

Kullanımı yukarıdaki gibidir.

Aşağıdaki örnek kullanımı sizler de inceleyebilirsiniz.



-- IDENTITY bulunan bir temp tablo oluşturalım ve içerisine değerleri sysobjects tablosundan aktaralım

SELECT ID = IDENTITY(INT, 1, 1),
       name
INTO ##Tablomuz
FROM dbo.sysobjects;

-- 20 üzerindeki tüm satırları silelim. 

DELETE FROM ##Tablomuz
WHERE ID > 20;

--Tablodaki identity kolonundaki en yüksek değeri okuyalım

SELECT IDENT_CURRENT('##Tablomuz') AS IdentityDegeri;

--Bu örnek için bende 104 değerini döndü. Yani yeni bir kayıt ekleyecek olursa ona 105 değeri verilecek. 
--Oysa tabloda şu anda 20 kayıt var ve 21 ile başlaması lazım.

-- Tabloyu table scan yapıp max identity değerini alalım. Tablodaki en yüsek ID'yi bir değişkene atayalım
DECLARE @maksimumdeger INT =
        (
            SELECT MAX(ID)FROM ##Tablomuz
        ); --Bu sorgu 20 değerini döndürecek

-- IDENTITY kolonunun başlangıcını 20 olarak set edelim
DBCC CHECKIDENT('##Tablomuz', RESEED, @maksimumdeger);

-- Test amaçlı yeni kayıt ekleyelim. Bu kaydın değeri 11 olarak oluşturulacak
INSERT INTO ##Tablomuz
VALUES
('Yeni Kayıt');

--Tabloyu kontrol edelim

SELECT *
FROM ##Tablomuz;

Kodu çalıştırdığınızda aşağıdaki gibi bir sonuç alacaksınız.

SQL Server'da DBCC CHECKIDENT Kullanımı

Görüldüğü DBCC CHECKIDENT ile  IDENTITY alanını yeniden düzenlemiş olduk.

Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.

3 Kez Okundu
SQL Server Eğitimleri Kanalına Abone Olun

Yazar hakkında

Yavuz Selim Kart

SQL Server tarafında kendini ilerletmeye çalışırken bildiklerini sürekli başkalarına aktaran, yazılım dünyasında (C#, Java, Python vb.) kendini güncel tutmaya çalışan, araştırma yapmaktan bıkmayan, meraklı, bilginin üzerine bilgi katmaktan mutluluk duyan bir yazılım eğitmeni ve kod sever.
Grafik tasarım dünyasında Indesign'ı anlatacak kadar iyi kullanabilen, Photoshop ve Illustrator'e de orta düzey hakimiyeti bulunan, internet üzerinde online kimya dergisi kurmuş ve bunu yüzbinlerce kişiye ulaştırmayı başaran bir grafik sever.
WordPress tarafında 5 adet web sitesi kurmuş, bu sistemler üzerine çalışan bir WordPress sever.
Sosyal medya üzerinde okumalara ve araştırmalara devam eden, kendi kurmuş olduğu kimya dergisini daha çok kişiye nasıl ulaştırırım diye düşünen ve bu konuda SEO çalışmaları üzerine kafa yoran bir Sosyal Medya sever.
Kısaca çok çalışmayı seven, azimli biriyim.

Kopyalamak Yasaktır!