5.00 / 1 oy

Sql Server'da tüm tablolardaki kayıtları tek komutla silmek

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.

kaanbey

15.02.2020 20:56

Bu soru 1 kez yanıtlandı.

Bu soruya sadece kayıtlı kullanıcılar yanıt yazabilirler. Yanıt yazmak için lütfen giriş yapınız.

Reitix
Sql Server'da tüm tablolardaki kayıtları tek komutla silmek

İnternet sitemizdeki deneyiminizi iyileştirmek için çerezler kullanıyoruz. Bu siteye giriş yaparak çerez kullanımını kabul etmiş sayılıyorsunuz. Daha fazla bilgi.