Bir SQL Server veritabanı tablosuna kayıtlar ekledim. Tabloda tanımlanmış bir birincil anahtar vardı ve otomatik artan kimlik tohumu "Evet" olarak ayarlanmıştı. Bu öncelikle SQL Azure'da her tablonun bir birincil anahtar ve kimlik tanımlı olması gerektiği için yapılır.
Ancak tablodan bazı kayıtları silmem gerektiğinden, bu tablolar için kimlik tohumu bozulacak ve dizin sütunu (1 artışla otomatik olarak oluşturulur) bozulacaktır.
**Kayıtları sildikten sonra kimlik sütununu nasıl sıfırlayabilirim, böylece sütun artan sayısal sıraya sahip olur?
Kimlik sütunu veritabanının hiçbir yerinde yabancı anahtar olarak kullanılmaz.
Kimlik sayacını sıfırlamak için DBCC CHECKIDENT
yönetim komutu kullanılır. Komut sözdizimi şöyledir:
DBCC CHECKIDENT (table_name [, { NORESEED | { RESEED [, new_reseed_value ]}}])
[ WITH NO_INFOMSGS ]
Örnek:
DBCC CHECKIDENT ('[TestTable]', RESEED, 0);
GO
Azure SQL Veritabanı'nın önceki sürümlerinde desteklenmiyordu, ancak artık destekleniyor.
Lütfen new_reseed_value
bağımsız değişkeninin SQL Server sürümleri arasında farklılık gösterdiğini unutmayın belgelere göre:
Tabloda satırlar mevcutsa, bir sonraki satır new_reseed_value değeriyle eklenir. SQL Server 2008 R2 ve önceki sürümlerde, eklenen bir sonraki satır new_reseed_value + geçerli artış değerini kullanır.
Ancak, Bu bilgiyi yanıltıcı buluyorum (aslında tamamen yanlış) çünkü gözlemlenen davranış, en azından SQL Server 2012'nin hala new_reseed_value + mevcut artış değeri mantığını kullandığını gösteriyor. Microsoft, aynı sayfada bulunan kendi `Örnek C'si ile bile çelişmektedir:
C. Mevcut kimlik değerini yeni bir değere zorlamak
Aşağıdaki örnek, geçerli kimlik değerini AddressType tablosundaki AddressTypeID sütununu 10 değerine ayarlayın. gt; Tabloda mevcut satırlar olduğundan, eklenen bir sonraki satır 11 değerini kullanacaktır. için tanımlanan yeni akım artış değeri olan > değeridir. sütun değeri artı 1.
USE AdventureWorks2012;
GO
DBCC CHECKIDENT ('Person.AddressType', RESEED, 10);
GO
Yine de, tüm bunlar daha yeni SQL Server sürümlerinde farklı davranışlar için bir seçenek bırakmaktadır. Sanırım Microsoft kendi belgelerinde bazı şeyleri açıklığa kavuşturana kadar emin olmanın tek yolu, kullanmadan önce gerçek testler yapmaktır.