10 Haziran 2014

SQL Server'da Bir Veritabanını Temizleme ve Identity Sütunlarını Reset'leme

Merhabalar;

Çoğumuz biliriz. Oluşturduğumuz veritabanı, projemizde ilerledikçe testlerimiz sırasında deneme verileriyle dolar ve iyice karışır. Tüm veritabanınızı boşaltmak, identity sütunlarını reset'lemek ve ilk günkü haline getirmek için bir script yazmanız yeterli:

/*Constraint & Trigger'ları devre dışı bırakma*/
exec sp_MSforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
exec sp_MSforeachtable 'ALTER TABLE ? DISABLE TRIGGER ALL'

/*Bütün tablolardaki kayıtları silme*/
exec sp_MSforeachtable 'DELETE ?'
    
/*Constraint & Trigger'ları yeniden etkinleştirme*/
exec sp_MSforeachtable 'ALTER TABLE ? CHECK CONSTRAINT ALL'
exec sp_MSforeachtable 'ALTER TABLE ? ENABLE TRIGGER ALL'
   
/*Identity sütunlarını reset'leme (yani yeniden 1'den başlamalarını sağlama)*/
exec sp_MSforeachtable 'IF OBJECTPROPERTY(OBJECT_ID(''?''), ''TableHasIdentity'') = 1 BEGIN DBCC CHECKIDENT (''?'',RESEED,0) END'


İşinize yaradığını düşünüyorum.
Kolay gelsin.


3 yorum:

  1. teşekkürler çok yararlı bir makale. Şu baş belası baş belası deneme kayıtlarını temizlemek için aradığım bişeydi :)

    YanıtlaSil
  2. Bu alanlardaki kayıtları silmek için kullandığımda Yabancı anahtarlarda da hata veriyor mu ?

    YanıtlaSil
    Yanıtlar
    1. Hayır foreign key'lerde de bir sorun çıkarmaması gerekiyor.

      Sil