Aracılığıyla paylaş


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.

Konu bağlantısı simgesi 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:

  • Kimlik sütununda bir PRIMARY KEY veya UNIQUE kısıtlaması varsa, üretilen kimlik değeri var olan değerlerle çeliştiğinden daha sonraki ekleme işlemleri sırasında 2627 hata iletisi üretilir.

  • Bir PRIMARY KEY veya UNIQUE kısıtlaması yoksa, daha sonraki ekleme işlemleri yinelenen kimlik değerleri ile sonuçlanır.

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.

  • Sütundaki geçerli en yüksek değeri belirlemek için DBCC CHECKIDENT (table_name, NORESEED) komutunu çalıştırın ve sonra bir DBCC CHECKIDENT (table_name, RESEED, new_reseed_value) komutunda new_reseed_value olarak bu değeri belirtin.

veya

  • DBCC CHECKIDENT (table_name, RESEED, new_reseed_value) komutunu new_reseed_value çok düşük bir değere ayarlayarak çalıştırın ve sonra değeri düzeltmek için DBCC CHECKIDENT (table_name, RESEED) komutunu çalıştırın.

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

ALTER TABLE (Transact-SQL)

Tablo (Transact-sql) oluştur

DBCC (Transact-sql)

IDENTITY (Özellik) (Transact-SQL)

USE (Transact-sql)

IDENT_SEED (Transact-sql)

IDENT_INCR (Transact-sql)

Kavramlar

Kimlik sütunları çoğaltma