Sql Server'da yaklaşık 30 adet tablonun verilerini (tüm satırlarını) silmem gerekiyor ve bu işlemi de sık sık tekrarlamam gerekeceği için (replika tablo) bu işlemi bir prosedür ya da fonksiyon ile tek seferde yapabilmem gerekiyor. Anlaşılan artık soru sormak yerine hem soru hem de cevap gibi bir konspete dönmüş burası, ben de kendi bulduğum çözümümü buradan paylaşmak istiyorum. Eğer daha iyi bir çözümü olan olursa yine paylaşabilirse sevinirim.
Aşağıdaki kodları çalıştıracak olursanız şu işlemleri yapıyor:
- Tabloları silmiyor, tablo sütunlarını da silmiyor, sadece tüm tabloların satırlarını yani verilerini siliyor
- Prosedürleri ya da fonksiyonları da silmiyor, sadece tablo kayıtlarını siliyor
EXEC sp_MSForEachTable 'DISABLE TRIGGER ALL ON ?'
GO
EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
GO
EXEC sp_MSForEachTable 'DELETE FROM ?'
GO
EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'
GO
EXEC sp_MSForEachTable 'ENABLE TRIGGER ALL ON ?'
GO
Not: Yedek almak iyidir, sonradan bir tablo içerisinde silmemeniz gereken bir veri olduğunu hatırlarsanız çok geç olur. Bu yüzden bu komutları çalıştırmadan veritabanı yedeği almayı ihmal etmeyin.