Anasayfa » Forum

grup olarak tablo d...
 
Bildirimler

grup olarak tablo drop etme  

  RSS
 Anonim

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.

Alıntı
Gönderildi : 23/02/2011 20:00
Rahmi DILLI
(@rahmidilli)
Tecrübeli Üye

[quote user="cinemaker"]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.
[/quote]

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

CevapAlıntı
Gönderildi : 23/02/2011 23:09
Ahmet Rende
(@AhmetRende)
Üye

[quote user="Rahmi DILLI"]

[quote user="cinemaker"]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.
[/quote]

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

[/quote]

 Hocam arkadaş tabloları silmek istemiş kayıtları değil.
Saygılar

CevapAlıntı
Gönderildi : 23/02/2011 23:47
CozumPark
(@cozumpark)
Kıdemli Üye

[quote user="cinemaker"]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.
[/quote]


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

CevapAlıntı
Gönderildi : 24/02/2011 00:33
 Anonim

[quote user="MERT DOĞAN"]

Şu stored procedure ile bu dediğiniz yapılabilir:

sp_Msforeachtable 'IF ? LIKE 'Grup_Takisi%'' DROP TABLE ?'[/quote]

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.

CevapAlıntı
Gönderildi : 24/02/2011 18:34
CozumPark
(@cozumpark)
Kıdemli Üye

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.

CevapAlıntı
Gönderildi : 24/02/2011 19:13
Rahmi DILLI
(@rahmidilli)
Tecrübeli Üye

[quote user="Webeffect"][quote user="Rahmi DILLI"]

[quote user="cinemaker"]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.
[/quote]

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

[/quote]

 Hocam arkadaş tabloları silmek istemiş kayıtları değil.
Saygılar

[/quote]

Teşekkürler uyarı için.

Kusura bakmayın gripken post bakıp cevaplamaya çalışırsak 🙂 Cevap verenler olmuş sanırım hallolmuştur.

CevapAlıntı
Gönderildi : 24/02/2011 21:52
 Anonim

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.

CevapAlıntı
Gönderildi : 18/03/2011 13:27
CozumPark
(@cozumpark)
Kıdemli Üye

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.

CevapAlıntı
Gönderildi : 18/03/2011 14:30
 Anonim

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

CevapAlıntı
Gönderildi : 18/03/2011 18:30
Paylaş: