Forum
Merhabalar. Forumda arattırdım bazı örnekleri denedim ama tam olarak istediğimi bulamadım. Yapmak istediğimşey ; veritabanımızda bazı tabloları (grup olarak mesela 001 ile başlayan tabloları) topluca silmek. Bununla ilgili query örneği varsa paylaşan olursa sevinirim. Teşekkürler.
Merhabalar. Forumda arattırdım bazı örnekleri denedim ama tam olarak istediğimi bulamadım. Yapmak istediğimşey ; veritabanımızda bazı tabloları (grup olarak mesela 001 ile başlayan tabloları) topluca silmek. Bununla ilgili query örneği varsa paylaşan olursa sevinirim. Teşekkürler.
"SELECT *From uyeler WHERE kullanici_adi LIKE 'A%'"
Uyeler tablosundan Kullanıcı adı A ile başlayanlar yukarıdaki komutla getirilebilir. Tablonuza göre deneyebilirsiniz. Select yerine delete koyarsanız siler. yedek alıp o şekilde deneyebilirsiniz.
Merhabalar. Forumda arattırdım bazı örnekleri denedim ama tam olarak istediğimi bulamadım. Yapmak istediğimşey ; veritabanımızda bazı tabloları (grup olarak mesela 001 ile başlayan tabloları) topluca silmek. Bununla ilgili query örneği varsa paylaşan olursa sevinirim. Teşekkürler."SELECT *From uyeler WHERE kullanici_adi LIKE 'A%'"
Uyeler tablosundan Kullanıcı adı A ile başlayanlar yukarıdaki komutla getirilebilir. Tablonuza göre deneyebilirsiniz. Select yerine delete koyarsanız siler. yedek alıp o şekilde deneyebilirsiniz.
Hocam arkadaş tabloları silmek istemiş kayıtları değil.
Saygılar
Merhabalar. Forumda arattırdım bazı örnekleri denedim ama tam olarak istediğimi bulamadım. Yapmak istediğimşey ; veritabanımızda bazı tabloları (grup olarak mesela 001 ile başlayan tabloları) topluca silmek. Bununla ilgili query örneği varsa paylaşan olursa sevinirim. Teşekkürler.
Şu stored procedure ile bu dediğiniz yapılabilir:
sp_Msforeachtable 'IF ? LIKE 'Grup_Takisi%'' DROP TABLE ?'
Belirli bir tablo dışında (SilinmeyecekTabloAdi) kalan tüm tabloları silmek istiyorsanız:
DECLARE @id varchar(255)
DECLARE @dropCommand varchar(255)
DECLARE tableCursor CURSOR FOR
SELECT name FROM sys.tables WHERE name <> 'SilinmeyecekTabloAdi'
OPEN tableCursor
FETCH next FROM tableCursor INTO @id
WHILE @@fetch_status=0
BEGIN
SET @dropcommand = N'drop table ' + @id
EXECUTE(@dropcommand)
FETCH next FROM tableCursor INTO @id
END
CLOSE tableCursor
DEALLOCATE tableCursor
Kolay gelsin.
Şu stored procedure ile bu dediğiniz yapılabilir:
sp_Msforeachtable 'IF ? LIKE 'Grup_Takisi%'' DROP TABLE ?'
Mert bey örneğinizdeki gibi : sp_Msforeachtable 'IF ? LIKE 'LG_001%'' DROP TABLE ?'
çalıştırdım fakat sorgulama sonucunda
Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near 'LG_001'.
Msg 105, Level 15, State 1, Line 1
Unclosed quotation mark before the character string ''.
hatası veriyor. Biraz araştırma yaptım ve alternatif olarak:
exec sp_msforeachtable 'if parsename(''?'', 1) like ''my_table%'' drop table ?'
sorgusu buldum ve uyguladım işime yaradı. İlginize teşekkürler.
Ben sorguda yanlışlıkla 'Grup_Takisi%' yerine 'Grup_Takisi%'' yazmışım yani çift tırnak olmuş.
Tek tırnak ile kullanılırsa istediğimiz gibi olur ya da sizin yazdığınız sorgu da işe yaradıysa geçmiş olsun diyelim.
İyi çalışmalar.
Merhabalar. Forumda arattırdım bazı örnekleri denedim ama tam olarak istediğimi bulamadım. Yapmak istediğimşey ; veritabanımızda bazı tabloları (grup olarak mesela 001 ile başlayan tabloları) topluca silmek. Bununla ilgili query örneği varsa paylaşan olursa sevinirim. Teşekkürler."SELECT *From uyeler WHERE kullanici_adi LIKE 'A%'"
Uyeler tablosundan Kullanıcı adı A ile başlayanlar yukarıdaki komutla getirilebilir. Tablonuza göre deneyebilirsiniz. Select yerine delete koyarsanız siler. yedek alıp o şekilde deneyebilirsiniz.
Hocam arkadaş tabloları silmek istemiş kayıtları değil.
Saygılar
Teşekkürler uyarı için.
Kusura bakmayın gripken post bakıp cevaplamaya çalışırsak 🙂 Cevap verenler olmuş sanırım hallolmuştur.
Bu konuya ek olarak şöyle bir sorunum çıktı;
Gereksiz tabloları drop etmeden önce data boyutu (shrink sonrası) 960mb iken, işlem sonrası datadaki toplam tabloların 3/2 sini silip shirink yapmama rağrem dosya boyutu 1018mb oldu.
Fakat tablolara girdiğim zaman BKP... ile başlayan tabloların oluştuğunu gördüm.
Bu tablolar neden oluşmuş olabilir ya da bu tabloları tekrar drop edersem bir sorun yaşarmıyım. Çünkü BKP ile başlayan tablolar datayı çok şişiriyor.
Değerli hocalarımdan öneri bekliyorum. Teşekkürler.
Bu BKP ile başlayan tablolar neden oluşuyorlar? Shrink işlemi yapıldı diye böyle tablolar oluşmaz. Bunların oluşmasına neden olan başka bir uygulama olmalı. Büyük ihtimalle o veritabanını kullanan uygulama oluşturuyordur.
BKP ile başlaması bana Backup tablosu (belirli tablolardaki belirli kayıtların tutulduğu özel bir iç backuplama metodu ile) olabileceğini çağrıştırdı. Bir bevi geri dönüşüm kutusu gibi. Tavsiyem; veritabanının bu haliyle yedeğini alın. Ardından eğer bu veritabanını kullanan uygulama bu tablolardaki verilere ihtiyaç duymuyorsa (programın satıcısından öğrenebilirsiniz) tabloları silin gitsin.
Bir de yaptığınız işlemle ilgili olarak; eğer recovery model full olarak seçili ise transaction log'larda shrink işleminin pek fazla bir etkisi olmaz. Shrink işlemi sonrasında veritabanınızda ciddi bir alan kazancı elde etmek istiyorsanız önce tam bir yedek aldıktan sonra database recovery'yi simple'a getirip öyle shrink uygulayın. Çok ciddi alan kazancı olacaktır. Ardından yine database recovery'yi Full'e getirirsiniz.
Bu tabloları sildim. Shrink sonrası data boyutum 400mb civarı düştü. Teşekkürkler. Sağolasınız.