Forum

grup olarak tablo d...
 
Bildirimler
Hepsini Temizle

grup olarak tablo drop etme

10 Yazılar
4 Üyeler
0 Likes
1,353 Görüntüleme
(@Anonim)
Gönderiler: 0
Konu başlatıcı
 

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.

 
Gönderildi : 23/02/2011 21:00

(@rahmidilli)
Gönderiler: 2458
Famed Member
 

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.

 
Gönderildi : 24/02/2011 00:09

(@AhmetRende)
Gönderiler: 138
Estimable Member
 

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

 
Gönderildi : 24/02/2011 00:47

(@cozumpark)
Gönderiler: 16309
Illustrious Member Yönetici
 

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.

 
Gönderildi : 24/02/2011 01:33

(@Anonim)
Gönderiler: 0
Konu başlatıcı
 

Ş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.

 
Gönderildi : 24/02/2011 19:34

(@cozumpark)
Gönderiler: 16309
Illustrious Member Yönetici
 

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.

 
Gönderildi : 24/02/2011 20:13

(@rahmidilli)
Gönderiler: 2458
Famed Member
 

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.

 
Gönderildi : 24/02/2011 22:52

(@Anonim)
Gönderiler: 0
Konu başlatıcı
 

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.

 
Gönderildi : 18/03/2011 14:27

(@cozumpark)
Gönderiler: 16309
Illustrious Member Yönetici
 

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.

 
Gönderildi : 18/03/2011 15:30

(@Anonim)
Gönderiler: 0
Konu başlatıcı
 

Bu tabloları sildim. Shrink sonrası data boyutum 400mb civarı düştü. Teşekkürkler. Sağolasınız.

 
Gönderildi : 18/03/2011 19:30

Paylaş: