11 Mayıs 2012 Cuma

Veritabanındaki Tüm Kayıtları Tablo Yapılarını Bozmadan Silme

Bu seferki notumu ben deneyimlemedim ama çalışma arkadaşım görevini nasıl hallettiğini benimle paylaştı.. Pratik bir çözüm olduğundan notlarımda bulunsun istedim..
Mevzu veritabanımızın tüm kayıtlarını tablo yapılarımızı bozmadan boşaltmaktı. Başka başka şirketlere kurulumlarda pratiklik sağlayacak bir Stored procedure gerekliydi.. Komacaaan bir veri tabanımız olduğundan alt alta updateler deleteler trucateler anlamsız olacaktı; ki tabloların bir dolu bağlantısı keyleri vs vardı.. O zaman biz dee

EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
EXEC sp_MSForEachTable 'DELETE FROM ?'
EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'

 
kodlarını pratik olarak kullanıp sorunsuzca işimizi hallederiz. :)
Kodumdan gelen bu temiz veritabanını senin için hazırladım.... :P

8 Mayıs 2012 Salı

WCF Services - The maximum message size quota for incoming messages (65536) has been exceeded.



Son birkaç zamandır işlevini bile tam anlamadığım WCF Serviceslarla uğraşıyordum.. Herzamanki gibi mononun laneti vuku buldu ve pek çok gıcık engelle karşılaşıp ondan bundan yardım alaraktan serviceten doğru cevabı alabilip son aşamaya kadar gelebildim. Son aşama dediğim de servisten gelen metodları çalıştırıp sonuçları bir xml dosyasına yazdırmaktı.. Bu kadar basitti yani,, ne olurdu hemencik olsaydı :) Ama olmaaz, eğer hemen olursa uğursuzluk gelir..
Neyse sorunum bu defa da bazı metodların çalışırken
"The maximum message size quota for incoming messages (65536) has been exceeded. bla bla bla"
şeklinde bir hata vermesiydi.. Araştırdım ettim, sorunun app.config dosyasındaki
maxBufferSize ve maxReceivedMessageSize ayarlarıyla olduğunu keşfettim. Gel gelelim bu ayarları ne yaparsam yapayım aynı hatayı almaya devam ettim. Adeta yaptığım değişikliği kaale almıyordu program. Tam çözümü buldum derken olmaması cesaretimi kırmıştı.. Ama sonra bir forumda o şahane postu gördüm.. Linki:

http://forums.asp.net/post/4700212.aspx

Bu linkten hareketle app.config dosyamdaki alanlardan sadece
     maxBufferSize="2147483647"
     maxBufferPoolSize="524288"
     maxReceivedMessageSize="2147483647">
     <readerQuotas
      maxDepth="2147483647"
      maxStringContentLength="2147483647"
      maxArrayLength="2147483647"
      maxBytesPerRead="2147483647"
      maxNameTableCharCount="2147483647" />
ve

<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
alanlarımı değiştirip çalıştırdım. Hatadan eser kalmamıştı..
Her ne kadar WCF lerle uğraşırken çok sıkılmışsam da hatanın çözümünü bulmanın değeri paha biçilemez.
İnternete nasıl teşekkür edeceğimi bilemiyorum :)