DBCC CHECKIDENT (Transact-SQL)
SQL Server 2012 içindeki belirtilen tablonun geçerli kimlik değerini denetler ve gerekirse kimlik değerini değiştirir. Ayrıca kimlik sütununda yeni bir geçerli kimlik değeri belirlemek için DBCC CHECKIDENT deyimini kullanabilirsiniz.
Transact-SQL Sözdizim Kuralları
Sözdizimi
DBCC CHECKIDENT
(
table_name
[, { NORESEED | { RESEED [, new_reseed_value ] } } ]
)
[ WITH NO_INFOMSGS ]
Bağımsız değişkenler
table_name
Geçerli kimlik değerinin denetleneceği tablonun adıdır. Belirtilen tablonun bir kimlik sütunu belirtmesi gerekir. Tablo adları tanımlayıcı kurallarına uymalıdır.NORESEED
Geçerli kimlik değerinin değiştirilmemesi gerektiğini belirtir.RESEED
Geçerli kimlik değerinin değiştirilmesi gerektiğini belirtir.new_reseed_value
Kimlik sütununda geçerli değer olarak kullanılacak yeni değerdir.WITH NO_INFOMSGS
Tüm bilgi iletilerini kapatır.
Açıklamalar
Geçerli kimlik değerinde yapılan özgül düzeltmeler belirtilen parametrelere bağlıdır.
DBCC CHECKIDENT komutu |
Yapılan kimlik düzeltmesi veya düzeltmeleri |
---|---|
DBCC CHECKIDENT ( table_name, NORESEED ) |
Geçerli kimlik değeri sıfırlanmaz. DBCC CHECKIDENT, kimlik sütununun geçerli kimlik değerini ve geçerli en yüksek değerini döndürür. İki değer aynı değilse, olası hatalardan veya değerler dizisinde boşluklardan kaçınmak için kimlik değerini sıfırlamalısınız. |
DBCC CHECKIDENT ( table_name ) veya DBCC CHECKIDENT ( table_name, RESEED ) |
Bir tablonun geçerli kimlik değeri kimlik sütununda depolanan en yüksek kimlik değerinden küçükse, tablonun kimlik değeri, kimlik sütunundaki en yüksek değer kullanılarak sıfırlanır. Aşağıdaki 'Kural dışı durumlar' bölümüne bakın. |
DBCC CHECKIDENT ( table_name, RESEED, new_reseed_value ) |
Geçerli kimlik değeri new_reseed_value ile ayarlanır. Tablo oluşturulduğundan bu yana tabloya hiçbir satır eklenmediyse veya TRUNCATE TABLE deyimi kullanılarak tüm satırlar silindiyse, DBCC CHECKIDENT çalıştırıldıktan sonra eklenen ilk satır kimlik olarak new_reseed_value değerini kullanır. Aksi halde eklenen bir sonraki satır new_reseed_value + geçerli artım değerini kullanır. Tablo boş değilse, kimlik değerini kimlik sütunundaki en yüksek değerden daha düşük bir sayıya ayarlamak aşağıdaki durumlardan biri ile sonuçlanabilir:
|
Kural dışı durumlar
Aşağıdaki tablo DBCC CHECKIDENT geçerli kimlik değerini otomatik olarak sıfırlamadığında oluşan koşulları listelemekte ve değeri sıfırlamak için yöntemler sağlamaktadır.
Koşul |
Sıfırlama yöntemleri |
---|---|
Geçerli kimlik değeri tablodaki en yüksek değerden daha büyük. |
veya
|
Tablodaki tüm satırlar silinmiş. |
DBCC CHECKIDENT (table_name, RESEED, new_reseed_value) komutunu istenen başlangıç değerini new_reseed_value olarak ayarlayarak çalıştırın. |
Kök Değerini Değiştirme
Kök değeri, tabloya yüklenen ilk satırın kimlik sütununa eklenen değerdir. Sonraki tüm satırlar, geçerli kimlik değeri artı artım değerini içerir; burada geçerli kimlik değeri, tablo veya görünüm için üretilen son kimlik değeridir.
DBCC CHECKIDENT komutunu aşağıdaki görevleri gerçekleştirmek için kullanamazsınız:
Tablo veya görünüm oluşturulduğunda kimlik sütunu için belirtilen özgün kök değerini değiştirme.
Bir tablo veya görünümdeki var olan satırlara yeni kök değeri verme.
Özgün kök değerini değiştirmek ve var olan satırlara yeni kök değeri vermek için, kimlik sütununu bırakmalı ve sütunu yeni kök değerini belirterek yeniden oluşturmalısınız. Tablo veri içerdiğinde, kimlik numaraları belirtilen kök değerini ve artım değerlerini içeren satırlara eklenir. Satırların güncelleştirilme sırası garanti edilemez.
Sonuç Kümeleri
Bu seçeneklerden herhangi biri bir kimlik sütunu içeren bir tablo için belirtilmiş olsun veya olmasın, DBCC CHECKIDENT, yeni bir kök değeri belirtme işlemi dışındaki tüm işlemlerde aşağıdaki iletiyi döndürür.
Checking identity information: current identity value '<current identity value>', current column value '<current column value>'. DBCC execution completed. If DBCC printed error messages, contact your system administrator.
DBCC CHECKIDENT, RESEED new_reseed_value kullanılarak yeni bir kök değeri belirtmek için kullanıldığında, aşağıdaki ileti döndürülür.
Checking identity information: current identity value '<current identity value>'. DBCC execution completed. If DBCC printed error messages, contact your system administrator.
İzinler
Çağıranın tablonun sahibi veya sysadmin sabit sunucu rolünün, db_owner sabit veritabanı rolünün veya db_ddladmin sabit veritabanı rolünün bir üyesi olması gerekir.
Örnekler
A.Geçerli kimlik değerini, gerekirse sıfırlama
Aşağıdaki örnek, AdventureWorks2012 veritabanındaki Employee tablosunun geçerli kimlik değerini, gerekiyorsa sıfırlar.
USE AdventureWorks2012;
GO
DBCC CHECKIDENT ("Person.AddressType");
GO
B.Geçerli kimlik değerini raporlama
Aşağıdaki örnek, AdventureWorks2012 veritabanındaki Employee tablosunun geçerli kimlik değerini raporlar ve kimlik değerini, yanlışsa düzeltmez.
USE AdventureWorks2012;
GO
DBCC CHECKIDENT ("Person.AddressType", NORESEED);
GO
C.Geçerli kimlik değerini yeni bir değere zorlama
Aşağıdaki örnek, Employee tablosundaki BusinessEntityID sütununun geçerli kimlik değerini 300 değerine zorlar. Tablonun var olan satırları olduğundan, eklenecek bir sonraki satır değer olarak 301'i, yani sütun için tanımlanan yeni geçerli artım değeri artı 1'i kullanır.
USE AdventureWorks2012;
GO
DBCC CHECKIDENT ("Person.AddressType", RESEED, 10);
GO
Ayrıca bkz.
Başvuru
IDENTITY (Özellik) (Transact-SQL)