dbcc CHECKIDENT (Transact-SQL)

Belirtilen tablo için geçerli kimlik değerini denetler SQL Server 2008 R2 ve gerekiyorsa, değiştirir kimlik değeri.dbcc CHECKIDENT el ile küme için yeni ve geçerli bir kimlik değeri kimlik sütuniçin de kullanılabilir.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

DBCC CHECKIDENT 
 ( 
    table_name
        [, { NORESEED | { RESEED [, new_reseed_value ] } } ]
)
[ WITH NO_INFOMSGS ]

Bağımsız değişkenler

  • table_name
    ' % S'tablo tablo için geçerli kimlik değerini denetlemek adıdır.Belirtilen tablo kimlik sütuniçermesi gerekir.Tablo adları için kuralları ile uymak gerekir tanımlayıcıları.

  • NORESEED
    Geçerli kimlik değerini değiştirilmemesi gerektiğini belirtir.

  • RESEED
    Geçerli kimlik değerini değiştirilmelidir belirtir.

  • new_reseed_value
    Kimlik sütungeçerli değeri olarak kullanılacak yeni değerdir.

  • NO_INFOMSGS İLE
    Bilgi tüm iletileri bastırır.

Açıklamalar

Geçerli kimlik değerini yapılan belirli düzeltmeleri parametresi belirtimleri bağlıdır.

dbcc CHECKIDENT komutunu

Kimlik düzeltme veya yapılan düzeltmeler

dbcc CHECKIDENT ( table_name, noreseed)

Geçerli kimlik değeri sıfırlanmaz.dbcc CHECKIDENT, geçerli kimlik değerini ve kimlik sütungeçerli en büyük değeri verir.İki değer aynı değil, olası hataları ya da değerler dizisini boşluklar önlemek için kimlik değerini sıfırlamalısınız.

dbcc CHECKIDENT ( table_name )

veya

dbcc CHECKIDENT ( table_name, reseed)

Bir tablo için geçerli kimlik değerini kimlik sütunsaklanan en yüksek kimlik değeri azsa, kimlik sütunen büyük değer kullanılarak ayarlanır.Aşağıdaki istisnalar bölümüne bakın.

dbcc CHECKIDENT ( table_name, reseed, new_reseed_value )

Geçerli kimlik değerini küme için ise new_reseed_value.Hiçbir satır tablo tablo oluşturuldu veya truncate table deyimkullanarak tüm satırları kaldırıldı, dbcc CHECKIDENT çalıştırdıktan sonra eklenen ilk satırı kullanır beri eklenmemişse new_reseed_value olarak kimliği.Eklenen sonraki satır yoksa kullanır new_reseed_value + Geçerli artış değer.

tablo boş değilse, kimlik sütun en büyük değerden daha küçük bir sayıya kimlik değerini ayarlama aşağıdaki koşullardan biri neden olabilir:

  • Bir birincil anahtar veya benzersiz kısıtlama kimlik sütunvarsa, varolan değerleri ile oluşturulan kimlik değerini çakışacak çünkü hata iletisi 2627 sonraki ekleme işlemleri tablo üzerinde oluşturulur.

  • Bir birincil anahtar veya benzersiz kısıtlama yoksa, sonraki Ekle işlem yinelenen kimlik değerleri neden olur.

Özel durumlar

Aşağıdaki tablo dbcc CHECKIDENT geçerli kimlik değeri otomatik olarak sıfırlanmaz ve değerini sıfırlamak için yöntemler sağlar koşulları listeler.

Koşul

Yöntemleri Sıfırla

Geçerli kimlik değerini tabloen büyük değerden daha büyük.

  • dbcc CHECKIDENT execute (table_name, noreseed) sütungeçerli en büyük değeri belirlemek ve bu değeri olarak belirtmek için new_reseed_value dbcc CHECKIDENT de (table_name, reseed, new_reseed_value) komutu.

veya

  • dbcc CHECKIDENT execute (table_name, reseed, new_reseed_value) ile new_reseed_value küme çok düşük değer ve dbcc CHECKIDENT çalıştırın (table_name, reseed) değeri düzeltmek için.

tablotüm satırlar silinir.

dbcc CHECKIDENT execute (table_name, reseed, new_reseed_value) ile new_reseed_valueolarakküme istediğiniz başlangıç değeri.

Tohum değerini değiştirme

Tohum içine tabloyüklenen ilk satırın kimlik sütun değerini değerdir.Tüm sonraki satır, geçerli kimlik değerini ve geçerli kimlik değeri tablo ya da görünüm için oluşturulan son kimlik değeri olduğu artış değeri içeriyor.Daha fazla bilgi için, bkz. Oluşturma ve tanımlayıcı sütunları değiştirme.

dbcc CHECKIDENT, aşağıdaki görevleri gerçekleştirmek için kullanamazsınız:

  • tablo veya Görünüm oluşturulduğunda, kimlik sütun için belirtilen özgün tohum değerini değiştirin.

  • Bir tablo veya görünümde varolan satırları reseed.

Özgün tohum değerini değiştirin ve varolan tüm satırları reseed için kimlik sütun ve yeni tohum değeri belirterek yeniden oluşturmanız gerekir.tablo veri içerdiğinde, kimlik numaraları belirtilen başlangıç ve artış değerleri içeren satırları eklenir.Satır güncelleştirildiği sırada garanti edilmez.

Sonuç Kümeleri

Seçeneklerden herhangi birini dbcc CHECKIDENT döndüren bir kimlik sütuniçeren bir tablo için olup olmadığı belirtilir (değerleri değişebilir):

Checking identity information: current identity value '290', current column value '290'. DBCC execution completed. If DBCC printed error messages, contact your system administrator.

İzinler

Arayan tablosahibi veya gerekir üye olmanız sysadmin sabit sunucu rolü, db_owner veritabanı rolü, sabit veya db_ddladmin veritabanı rolüsabit.

Örnekler

A.Geçerli kimlik değerini, gerektiğinde sıfırlama

Aşağıdaki örnek gerekmiyorsa, geçerli kimlik değerini sıfırlar, AddressType tablo AdventureWorks2008R2 veritabanı.

USE AdventureWorks2008R2;
GO
DBCC CHECKIDENT ("Person.AddressType");
GO

B.Geçerli kimlik değerini raporlama

Aşağıdaki örnek, geçerli kimlik değerini bildirir AddressType tablo AdventureWorks2008R2 veritabanı ve yanlış ise kimlik değerini düzeltmez.

USE AdventureWorks2008R2;
GO
DBCC CHECKIDENT ("Person.AddressType", NORESEED);
GO

C.Yeni bir değer için geçerli kimlik değerini zorlama

Aşağıdaki örnek, geçerli kimlik değerini zorlar AddressTypeIDsütun AddressType10 değeritablo . tablo varolan satırları olduğundan, eklenen sonraki satır 11 değeri, geçerli kimlik değerini artı 1, sütuniçin tanımlanmış geçerli artış değerini kullanır.

USE AdventureWorks2008R2;
GO
DBCC CHECKIDENT ("Person.AddressType", RESEED, 10);
GO