Categories: MSSQL Posted by Admin on 11/13/2011 1:06 AM | Comments (0)

Geçenlerde özel bir iş üzerine bir miktar araştırma/kodlama yaptım ancak bu süre zarfında bazı gerekçelerle başka bir çözüme gidildi. Bu arada yazmış olduğum deneysel bir proje de bilgisayarımda bekleyekaldı. Sqlserver tarafında farklı sunucularda yer alan veritabanlarını sunucu düzeyinde yetki gerektirmeden senkronlamak için ücretsiz bir araç bulamayınca başladım kodlamaya. Aldığım sonuçlar ücretli araçlara nazaran bir hayli iyi oldu. İlk kodlamamda 40 bin veriyi 3 dk gibi bir sürede karşılaştırıyorken sonradan geliştirdiğim kod  ile 1,000,000 veriyi yaklaşık 200 milisaniyede karşılaştırdığını görünce ben bile ne yaptığıma şaşırdım :) Neyse özetle, aşağıdaki bağlantıdan projeye ulaşabilir, kaynak kodu edinebilir, geliştirebilir ya da yorum yazabilirsiniz.

http://tabledatasync.codeplex.com/

 

Ekran görüntüsü de şöyle:

 

Faydalı olması dileğiyle, mutlu kodlar.

Tags: , , , , | Categories: MSSQL Posted by Admin on 2/12/2011 5:45 PM | Comments (0)

In this article we learn creating executing dynamic sql statement, distinct clause, coalesce function and pivot clause. Some times we need to get reports on variation based tables. Sample data are bellow:


This case, we need to show all members per games level by level. We can use pivot clause in normal senarios(with expcilit pivot data) but this case we must get like following data:

 

We must generate dynamic sql for MemberID and GameID gorups and show order and point data with grouping. Now lets coding.

SELECT DISTINCT CAST(GameID AS VARCHAR(11)) As GameID FROM GameResults


Result:

    GameID
    256
    268
    302
    549


and declare following variables

DECLARE @strSQL varchar(8000) -- Stores all dynamic sql string

DECLARE @columnNames VARCHAR(8000) -- Stores all column grouping string


We can generate sql statement now

DECLARE @strSQL varchar(8000) 
DECLARE @columnNames VARCHAR(8000) 

SELECT @columnNames = COALESCE(@columnNames+',', '') + -- if column name is null then return empty string and concat itself
'MAX(CASE WHEN [GameID] = ' + GameID + ' THEN [Order] ELSE 0 END) AS [' + GameID + '_ORDER], ' + -- GameID_ORDER
'MAX(CASE WHEN [GameID] = ' + GameID + ' THEN Point ELSE 0 END) AS [' + GameID + '_POINT]' -- GameID_POINT
FROM (SELECT DISTINCT CAST(GameID AS VARCHAR(11)) As GameID FROM GameResults) AS GameReports

SET @strSQL = 'SELECT MemberID, ' + @columnNames + ' FROM GameResults GROUP BY MemberID' -- Setting @sqlSql variable
EXEC(@strSQL) -- Execute generated sql string


Result:

 

Dynamicaly generated sql string output:

SELECT MemberID, 
MAX(CASE WHEN [GameID] = 256 THEN [Order] ELSE 0 END) AS [256_ORDER], MAX(CASE WHEN [GameID] = 256 THEN Point ELSE 0 END) AS [256_POINT],
MAX(CASE WHEN [GameID] = 268 THEN [Order] ELSE 0 END) AS [268_ORDER], MAX(CASE WHEN [GameID] = 268 THEN Point ELSE 0 END) AS [268_POINT],
MAX(CASE WHEN [GameID] = 302 THEN [Order] ELSE 0 END) AS [302_ORDER], MAX(CASE WHEN [GameID] = 302 THEN Point ELSE 0 END) AS [302_POINT],
MAX(CASE WHEN [GameID] = 549 THEN [Order] ELSE 0 END) AS [549_ORDER], MAX(CASE WHEN [GameID] = 549 THEN Point ELSE 0 END) AS [549_POINT]
FROM GameResults GROUP BY MemberID
 
Tags: , | Categories: Dynamic Data, MSSQL, Video Posted by Admin on 11/21/2010 3:14 AM | Comments (0)

Bu videoda redgate sql data generator'ün kullanımına ve sağlayacağı faydalara deyinilmiştir. Video sonunda dynamic data iel verilerin nasıl oluşturulduğunu ve kullanılabilirliğini anlatmaktadır.

Redgate - Sql Data Generator Genel Bilgiler from omerfarukz on Vimeo.

İyi seyirler

 

Tags: , , , | Categories: asp.net, c#, Dynamic Data, MSSQL Posted by Admin on 3/16/2010 9:17 PM | Comments (1)

MetaData üzerinden öznitelik ataması yapılarak doğrulama, biçimleme ve özel alan şanlonlarını(FieldTemplates) nasıl kullanacağımızdan bahsetmiştim.

Bu makale özel özniteliklerin ve alan şablonlarının geliştirilmesi konusunu içerecektir. Bu nedenle FileUpload kontrolünün kullanımı ve alan şablonlarının çalışma mantığıyla özel özniteliklerin kullanımı hakkında bilgi sahibi olacağız.

Önceki makalemde bahsettiğim gibi ASP.NET Dynamic Data Web Site ile FileUpload işlemlerini klasik yöntemlerle kullanamıyoruz.


ASP.NET Dynamic Data Web Sitesinde Ajax Tookit ile birlikte kullanıyorsanız ve FileUpload bileşeniniz UpdatePanel içerisinde yer alıyorsa ScriptManager nesnesinin EnablePartialRendering özelliğini false olarak atamanız gerekiyor.


Kodlamaya başlamadan önce yapılması gereken işlemleri özetlemenin faydalı olduğunu düşünüyorum. Kodlama detayları ilgili sınıfların içinde yer almaktadır.

  1. Zorunlu olmasa da dosyanın sunucuya yükleme işleminin gerçekleştirileceği yardımcı bir sınıf.
  2. Her bir dosya yükleme alanı için dosya türü, boyutu vb. bildirimleri yapmak için öznitelik tabanlı bir sınıf
  3. Dosya yükleme alanlarının ekleme ve güncelleme ekranı için FileUpload kontrolü listeleme ve detay sayfaları için ise dosya türüne göre yüklenen dosyaya uygun simge, önizleme vb. için alan şablonlarının(FieldTemplate) gerekli hazırlanması.
  4. İşlevin kazandırılacağı alanlara gerekli öznitelik tanımlamasının yapılması

Temel düzeyde dosya yükleme işlemini gerçekleştirmek üzere aşağıdaki sınıfı kullanacağız

More...