Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
SQL Server'da belirtilen tablo için geçerli kimlik değerini denetler ve gerekirse kimlik değerini değiştirir. Kimlik sütunu için yeni bir geçerli kimlik değerini el ile ayarlamak için DBCC CHECKIDENT de kullanabilirsiniz.
Transact-SQL söz dizimi kuralları
Sözdizimi
SQL Server ve Azure SQL Veritabanı söz dizimi:
DBCC CHECKIDENT
(
table_name
[ , { NORESEED | { RESEED [ , new_reseed_value ] } } ]
)
[ WITH NO_INFOMSGS ]
Azure Synapse Analytics söz dizimi:
DBCC CHECKIDENT
(
table_name
[ RESEED , new_reseed_value ]
)
[ WITH NO_INFOMSGS ]
Bağımsız değişken
table_name
Geçerli kimlik değerinin denetlendiği tablonun adı. Belirtilen tablo bir kimlik sütunu içermelidir. Tablo adları tanımlayıcıları için kurallara uymalıdır.
Person.AddressType veya [Person].[AddressType]gibi iki veya üç bölüm adı sınırlandırılmalı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ütununun geçerli değeri olarak kullanılacak yeni değer.
BİLGİ_MSJSIZ
Tüm bilgilendirme iletilerini gizler.
Açıklamalar
Geçerli kimlik değerinde yapılan belirli düzeltmeler parametre belirtimlerine bağlıdır.
| DBCC CHECKIDENT komutu | Kimlik düzeltmesi veya yapılan düzeltmeler |
|---|---|
DBCC CHECKIDENT (<table_name>, NORESEED) |
Geçerli kimlik değeri sıfırlanır.
DBCC CHECKIDENT geçerli kimlik değerini ve kimlik sütununun geçerli en yüksek değerini döndürür. İki değer aynı değilse, değer dizisindeki olası hataları veya boşlukları önlemek için kimlik değerini sıfırlamalısınız. |
DBCC CHECKIDENT (<table_name>)veya DBCC CHECKIDENT (<table_name>, RESEED) |
Tablonun geçerli kimlik değeri, kimlik sütununda depolanan en yüksek kimlik değerinden küçükse, kimlik sütunundaki en büyük değer kullanılarak sıfırlanır. Aşağıdaki Özel Durumlar bölümüne bakın. |
DBCC CHECKIDENT (<table_name>, RESEED, <new_reseed_value>) |
Geçerli kimlik değeri new_reseed_valueolarak ayarlanır. Tablo oluşturulduktan sonra tabloya satır eklenmemişse veya TRUNCATE TABLE deyimi kullanılarak tüm satırlar kaldırılmışsa, DBCC CHECKIDENT çalıştırıldıktan sonra eklenen ilk satır kimlik olarak new_reseed_value kullanır. Tabloda satırlar varsa veya DELETE deyimi kullanılarak tüm satırlar kaldırılmışsa, eklenen sonraki satırda new_reseed_value + geçerli artış değeri kullanılır. Bir işlem bir satır eklerse ve daha sonra geri alınırsa, eklenen sonraki satır new_reseed_value + geçerli artım değerini satır silinmiş gibi kullanır. Tablo boş değilse, kimlik değerinin kimlik sütunundaki en büyük değerden küçük bir sayıya ayarlanması aşağıdaki koşullardan biriyle sonuçlanabilir:- Kimlik sütununda BİrİnCİl ANAHTAR veya BENZERSİz kısıtlaması varsa, oluşturulan kimlik değeri mevcut değerlerle çakışacağından tabloya daha sonra ekleme işlemlerinde hata iletisi 2627 oluşturulur. - BİrİnCİl ANAHTAR veya BENZERSİz kısıtlaması yoksa, daha sonra ekleme işlemleri yinelenen kimlik değerlerine neden olur. |
Özel durum
Aşağıdaki tabloda, DBCC CHECKIDENT geçerli kimlik değerini otomatik olarak sıfırlamadığı durumlar listelenir ve değeri sıfırlamak için yöntemler sağlanır.
| Koşul | Yöntemleri sıfırlama |
|---|---|
| Geçerli kimlik değeri, tablodaki en büyük değerden daha büyük. | Sütundaki geçerli en yüksek değeri belirlemek için DBCC CHECKIDENT (<table_name>, NORESEED) yürütür. Ardından, bu değeri bir komutunda DBCC CHECKIDENT (<table_name>, RESEED, <new_reseed_value>) olarak belirtin.veya DBCC CHECKIDENT (<table_name>, RESEED,<new_reseed_value>) düşük bir değere ayarlanmış new_reseed_value yürütür ve ardından değeri düzeltmek için DBCC CHECKIDENT (<table_name>, RESEED)'yi çalıştırın. |
| Tüm satırlar tablodan silinir. | yeni başlangıç değerine ayarlanmış DBCC CHECKIDENT (<table_name>, RESEED, <new_reseed_value>) ile new_reseed_value yürütür. |
Tohum değerini değiştirme
Tohum değeri, tabloya yüklenen ilk satır için bir kimlik sütununa eklenen değerdir. Sonraki tüm satırlar geçerli kimlik değerinin yanı sıra, geçerli kimlik değerinin tablo veya görünüm için oluşturulan son kimlik değeri olduğu artım değerini içerir.
Aşağıdaki görevler için DBCC CHECKIDENT kullanamazsınız:
Tablo veya görünüm oluşturulduğunda bir kimlik sütunu için belirtilen özgün tohum değerini değiştirin.
Tablo veya görünümde var olan satırları yeniden görüntüleyin.
Özgün tohum değerini değiştirmek ve var olan satırları yeniden görüntülemek için kimlik sütununu bırakın ve yeni tohum değerini belirterek yeniden oluşturun. Tablo veri içerdiğinde, kimlik numaraları belirtilen tohum ve artım değerleriyle var olan satırlara eklenir. Satırların güncelleştirildiği sıra garanti değildir.
Sonuç kümeleri
Kimlik sütunu içeren bir tablo için herhangi bir seçenek belirtip belirtmemenize bakılmaksızın, DBCC CHECKIDENT biri dışındaki tüm işlemler için aşağıdaki iletiyi döndürür. Bu işlem yeni bir tohum değeri belirtiyor.
Kimlik bilgileri denetleniyor: geçerli kimlik değeri '<geçerli kimlik değeri>', geçerli sütun değeri '<geçerli sütun değeri>'. DBCC yürütmesi tamamlandı. DBCC hata iletilerini yazdırdıysa sistem yöneticinize başvurun.
DBCC CHECKIDENTkullanılarak yeni bir tohum değeri belirtmek için RESEED <new_reseed_value> kullanıldığında aşağıdaki ileti döndürülür.
Kimlik bilgileri denetleniyor: geçerli kimlik değeri '<'>geçerli kimlik değeri. DBCC yürütmesi tamamlandı. DBCC hata iletilerini yazdırdıysa sistem yöneticinize başvurun.
İzinler
Çağıranın tabloyu içeren şemaya sahip olması veya sysadmin sabit sunucu rolünün, db_owner sabit veritabanı rolünün veya db_ddladmin sabit veritabanı rolünün üyesi olması gerekir.
Azure Synapse Analytics için db_owner izinleri gerekir.
Örnekler
A. Gerekirse geçerli kimlik değerini sıfırlayın
Aşağıdaki örnek, gerekirse AdventureWorks2025 veritabanında belirtilen tablonun geçerli kimlik değerini sıfırlar.
USE AdventureWorks2022;
GO
DBCC CHECKIDENT ('Person.AddressType');
GO
B. Geçerli kimlik değerini bildirme
Aşağıdaki örnek, AdventureWorks2025 veritabanında belirtilen tablodaki geçerli kimlik değerini raporlar ve yanlışsa kimlik değerini düzeltmez.
USE AdventureWorks2022;
GO
DBCC CHECKIDENT ('Person.AddressType', NORESEED);
GO
C. Geçerli kimlik değerini yeni bir değere zorlama
Aşağıdaki örnek, AddressTypeID tablosundaki AddressType sütunundaki geçerli kimlik değerini 10 değerine zorlar. Tabloda var olan satırlar olduğundan, eklenen sonraki satırda değer olarak 11 kullanılır. Sütun için tanımlanan yeni geçerli kimlik değeri artı 1 (sütunun artım değeridir).
USE AdventureWorks2022;
GO
DBCC CHECKIDENT ('Person.AddressType', RESEED, 10);
GO
D. Boş bir tablodaki kimlik değerini sıfırlama
Aşağıdaki örnek, (1, 1) tablo kimliğini varsayar ve ErrorLogID tablosundaki ErrorLog sütunundaki geçerli kimlik değerini tablodan tüm kayıtları sildikten sonra 1 değerine zorlar. Tabloda var olan satır olmadığından, eklenen sonraki satırda değer olarak 1 kullanılır, yani yeni geçerli kimlik değeri, TRUNCATE sonrasında sütun için tanımlanan artım değerini eklemeden veya DELETE'in ardından artım değerini eklemeden.
USE AdventureWorks2022;
GO
TRUNCATE TABLE dbo.ErrorLog
GO
DBCC CHECKIDENT ('dbo.ErrorLog', RESEED, 1);
GO
DELETE FROM dbo.ErrorLog
GO
DBCC CHECKIDENT ('dbo.ErrorLog', RESEED, 0);
GO
Ayrıca bkz.
- ALTER TABLE (Transact-SQL)
- CREATE TABLE (Transact-SQL)
- DBCC (Transact-SQL)
- IDENTITY (Özellik) (Transact-SQL)
- kimlik sütunlarını çoğaltma
- KULLANIM (Transact-SQL)
- IDENT_SEED (Transact-SQL)
- IDENT_INCR (Transact-SQL)