Cuma, Eylül 18, 2015

MSSQL Tablo Satır Sayısı ve Boyutu Öğrenme

MSSQL bir veritabanında tablodaki satır sayısını ve boyutunu aşağıdaki sorgu ile öğrenmek mümkün. Şişen db lerdeki problemli tabloyu tespit etmek için faydalı bir yöntem.

CREATE TABLE #RowCountsAndSizes (TabloAdi NVARCHAR(128),rows CHAR(11),    
       reserved VARCHAR(18),data VARCHAR(18),index_size VARCHAR(18),
       unused VARCHAR(18))

EXEC       sp_MSForEachTable 'INSERT INTO #RowCountsAndSizes EXEC sp_spaceused ''?'' '

SELECT     TabloAdi,CONVERT(bigint,rows) AS SatirSayisi,
           CONVERT(bigint,left(reserved,len(reserved)-3)) AS BoyutKB
FROM       #RowCountsAndSizes
ORDER BY   BoyutKB DESC,SatirSayisi DESC,TabloAdi

DROP TABLE #RowCountsAndSizes

Salı, Mayıs 26, 2015

ASP.Net HttpHandlers(ashx) Session Kullanımı

ASP .Net projelerinde sıkça projeye özel handler lar oluşturulur. Örneğin; ajax işlemleri, resim işleme vs... gibi. Kullanıcı tarafından oluşturulan bu handler larda session kullanımı standartta kapalıdır. Ufak bir trik ile session kullanımına açabiliriz.

VS ile oluşturduğum handler(ashx) dosyasının sınıfı standart olarak aşağıdaki gibi tanımlanır;

public class StateChangeModule : IHttpHandler
{
         public void ProcessRequest(HttpContext context)
        {
                      .
                      .
                      .
}

Görüldüğü gibi handler sınıfı, sadece IHttpHandler inteface'ini implemente edilmiş olarak geliyor. Biz bu sınıfa IRequiresSessionState inteface'ini implemente ederek session kullanamına açmış oluruz. 

public class StateChangeModule : IHttpHandler,IRequiresSessionState
{
         public void ProcessRequest(HttpContext context)
         {
                 string myValue = context.Session["userName"];
         }
          
           .
           .
           .      
}

Eğer sadece sessiondan veri okuma yapacaksak IReadOnlySessionState arayüzünü implemente etmek yeterli. Olay bu kadar basit.