SQL Server’da XML Parsing

SQL Server’da  bazen datayı xml den çekmek zorunda kalabiliriz. Böyle durumlarda  xml parse etmeniz gerekirse faydalı olabileceğini düşündüğüm bir örneği paylaşmak istedim.


Bu örneğin benzerini buldum ve benim çok işime yaradı. Oldukça kısa ve anlaşılır bir kod bloğu olmuş. Burada xml datayı XML tipinde bir değişkene alıyoruz. DocHandle diye tanımlanan değişken sayaç görevi görüyor. Burada sql serverda hazır bulunan sp_xml_preparedocument ve sp_xml_removedocument stored procedurelerini kullanıyoruz. Bu stored procedureler  xml data üzerinde handle ile dolaşmamızı sağlıyor. OPENXML komutuna parametre olarak dochandle ımızı , datamızın olduğu tag leri  ve taglerin arasında aradığımız datanın kaç tag arasında olduğunu veriyoruz. WITH ile de kolon adlarını ve veri tipini veriyoruz. Böylelikle select komutu ile xml arasındaki datayı elde etmiş oluyoruz.

SSAS OLAP Küpü Oluşturma

Uzun bir aradan sonra tekrardan merhaba :) Bu makalemde SQL Server Analysis Service(SSAS) kullanarak OLAP küpü oluşturmaktan bahsedeceğim.
Bilindiği üzere iş zekası platformlarında raporlamalarda küp kullanılır. Kübü hazırlamadan önce  datawarehouse dan gerekli tablolar ya da viewlar kullanılarak bir database oluşturulur. Veya da alternatif bir çözüm olarak function ya da sp’ler yardımıyla dimension ve fact tabloları SSAS’te oluşturulur. Ben bu makalemde AdventureWorksDW2008R2 database ini data source olarak kullandım. Sonraki makalelerimde de yine bu database üzerinden örnekler anlatmaya çalışacağım.
 İşe  SQL Server Business Intelligence Development Studio’da (BIDS) Analysis Service projesi oluşturarak başlayabiliriz. Küp oluşturmadan önce kullanacağımız datasource u seçmemiz lazım. Aşağıda step step wizard kullanarak data source, data source view ve cube oluşturmayı gösterdim. Öncelikle BIDS’te oluşturduğumuz projede, Solution Explorer’da Data Sources kısmında sağ tıkladığımızda New Data Source diyerek wizard ı kullanabiliriz.
Açılan ekranda Next diyerek ilerleyebiliriz.
Bir sonraki stepte New butonunu tıklayarak Connection Manager ı açarız.

Connection Manager’da  servername, log on ve de connect to a database kısımları uygun bir şekilde doldurulur. Burada ben local serverımda Windows Authentication ile AdventureWorksDW2008R2 database ini kullandım.

Bu pencerede data source’a bağlanırken istersek username ve password tanımlayabiliriz. Ya da service account ı tercih edebiliriz. Ben burada Use the credentials of the current user seçeneğini seçtim.  

 Son olarak da connection stringimizi de görüp, data source’umuza istediğimiz ismi vererek Finish butonunu tıklayabiliriz. Artık data source oluşturmuş olduk. 
Küp oluşturmadan önce bir de data source view oluşturmamız gerekli. Bunun sebebi küpte bu referans aldığımız databasedeki tüm tabloları ya da viewları kullanmak zorunda olmamamızdır.
Projemizde yine Solution Explorer da Data Source Views  kısmına sağ tılayarak New Data Source View seçeneğini seçmemiz gerekir.

Açılan wizard’da Next diyerek ilerleriz.

Sonrasında kullanacağımız data source’u seçeriz. Sonuçta birden fazla data source oluşturmuş olabiliriz. Dilersek burada da New Data Source diyerek data source oluşturabiliriz. Sonrasında Next deyip ilerleriz.

Kullanacağımız tablo ve viewları seçtikten sonra Add Related Tables seçeneğini seçerek ilerleriz.

Son olarak da oluşturduğumuz data source view a isim verip bu kısmı tamamlarız.

Artık küp oluşturabilirz. Bunun için de Solution Explorer’da Cubes kısmında sağ tıklayarak New Cube seçeriz.

Açılan pencerede her zamanki gibi Next diyerek ilerleriz.


Select Creation Method kısmında küpte kullanacağımız tabloların seçimini nasıl yapacağımızı ya da boş küp oluşturmayı seçebiliriz. Ben burada Use existing tables seçeneğini seçtim.
Sonrasında measure grup tablolarını açılan tablo listesinden seçebiliriz. Suggest butonuna tıklayarak da seçim yapabiliriz. 

Bu ekranda küpte kullanacağımız measureları  seçeriz.

Bu ekranda da kullanacağımız dimensionları seçeriz.

Son olarak da küpe istediğimiz ismi veririz. 

Ve böylece artık küpümüz hazır :) Bir sonraki makalemde de SSAS projesi kullanarak yapabileceklerimizi anlatmaya devam edeceğim. Görüşmek üzere :)

SQL Server Sistem Veritabanları

SQL Server’ı kurduğunuzda ilk olarak 4 tane sistem veritabanı kurulumu gerçekleşir. Bu veritabanları server’ın çalışması için gereklidir. 

1.Master Veritabanı: Her SQL server’da versiyon fark etmeksizin mutlaka olması gereken bir veritabanıdır.  Bu veritabanı sistem tablolarını içerir. Sistemin bütününü izlemeyi sağlar. Tüm extended ve system stored procedure’ler master veritabanında saklanır.
2.Model Veritabanı: Kopyalama için referans alınabilecek model anlamında isimlendirilmiştir. Her yeni veritabanı için model veritabanı bir şablon oluşuturur. İsteğe bağlı olarak  yeni oluşturulacak veritabanlarının nasıl olacağı buradan ayarlanabilmektedir. Ayrıca denetim tabloları kümesi, kullanıcı grubu gibi yapılar da bu veritabanından oluşturulur. Model veritabanı diğer veritabanları için şablon oluşturduğu için silinemez ve sistemde kalmalıdır. Model veritabanı oluştururken dikkat edilemesi gereken en önemli nokta, yeni  oluşturulacak veritabanının boyutunun model veritabanının boyutundan küçük olmaması gerektiğidir. Yani oluşturacağınız veritabanının boyutu en az model veritabanı kadar olmalıdır.
3.MSDB Veritabanı: SQL Server ‘da sistem için yardımcı servisler olana agent’ların işlem sürecinin herhangi bir sistem görevini sakladığı veritabanıdır. Yedekleme için görev zamanlayıcı veya Stored Procedure’un ilk çalışması (time execution) ile ilgili kayıtlar msdb veritabanında tutulur. Ayrıca SSIS paketleri de bu veritabanında bulunur.
4.TempDB Veritabanı: Geçici bir tablo oluşturulduğunda bu tablo aslında tempdb veritabanında oluşturulur. Verilerin geçici olarak saklanması gerektiğinde de tempdb veritabanı kullanılır. Ayrıca karmaşık bir sorgu çalıştırdığınızda SQL Server geçici tablolar oluşturması gerekirse bunlar da tempdb yoluyla gerçekleştirilir. Diğer veritabanlarından farklı olarak SQL Server her başlatıldığında tamamen sıfırdan oluşturulan bir veritabanıdır. Yani tempdb veritabanını SQL Server’ın ram’i şeklinde düşünebilirsiniz.

SQL ile Stored Procedure Kullanımı

Stored Procedure tabloya bağlı olmaksızın veritabanına kaydedebileceğiniz sql sorgularıdır. Klasik programlamada sql sorgularınızı programınızın içinde kodlarınızın olduğu bloklara da yazabilirsiniz. Fakat stored procedure kullanarak bu sql sorgularını veritabanına kaydedip, kodlarınızın içinden tıpkı yazdığınız bir metodu çağırır gibi çağırıp kullanabilirsiniz. Stored procedure kullanımının en büyük avantajı programın çalışma hızının yüksek olmasıdır. Bunun sebebi  stored procedurelerin server üzerinde çalışmasıdır. Yani yazdığınız stored procedureleriniz programın ilk çalışmasında derlenir ve sonrasında tekrar tekrar derlenmez. Bu da programınıza hız kazandırır. Ayırca stored procedureler veritabanı dışından yani kod bloklarınızdan çağrılabildiği gibi, veritabanındaki triggerlarınız tarafından da çağrılabilmektedir.

Aşağıda bir örnekle stored procedure kullanımını göstermeye çalıştım. Öncelikle Microsoft SQL Server 2008 Management Studio’da veritabanında oluşturduğum tablo şu şekildedir:

  Bu tabloya yeni kayıt eklemek için şu şekilde bir stored procedure yazabiliriz:
 Bu stored procedure ü kaydedip çalıştırmayı deneyelim. Server üzerinde stored procedure e sağ tıklayıp Execute Stored Procedure dediğimzde aşağıdaki alanı görürüz.
 Execute edince çıkan ekranda value kolonuna değerleri girip çalıştırdığımızda Musteri tablosuna girilen değerler artık eklenmiş olmaktadır.

Benzer şekilde stored procedurelere select, update ve delete sorguları da yazabilirsiniz. Parametreli ya da parametresiz olarak yazdığınız tüm sorgularınızı stored procedureleriniz aracılığıyla çalıştırabilirsiniz.


Microsoft SQL Server 2008 Reporting Services (SSRS)

Microsoft SQL Server 2008 Reporting Services (SSRS); organizasyonlarınızda raporlar oluşturmaya, uygulamaya ve yönetmeye yardımcı olan servisler sağlar ve kullanıma hazır araçlar sunar. Raporlarınızın fonksiyonelliğini kendinize göre esnek bir yapıda programlamanıza yardımcı olur.
SQL Server 2008 Reporting Services (SSRS) server tabanlı bir raporlama platformudur. Çeşitlli veri kaynakları için fonksiyonel ve kapsamlı bir raporlama sağlar. SSRS oluşturup yönetebileceğiniz ve sunabileceğiniz raporlar için bir takım araçlar içerir. Müşteriye yönelik uygulamalarda raporlama ve veri genişletmesine  ya da bu uygulamaları yazılım geliştiricilerin programlarına entegre etmesine olanak sağlar. SSRS Microsoft Visual Studio ortamında ve SQL Server araç ve bileşenlerine entegre şeklinde çalışır.
SSRS ile interaktif, liste/çizelge halinde, grafiksel olarak ya da ilişkisel, çok katmanlı ya da XML tabanlı veri kaynaklarından raporlama şeklinde formlar ile uygulamalar oluşturulabilir. Raporlarınızı yayınlayabilir, liste halinde işleyebilir ya da istediğiniz biçimde erişebilirsiniz. SSRS ayrıca öntanımlı modellerde belirli bir amaç için tasarladığınız raporları ve modelin içinden verileri interaktif olarak çıkarmanıza, araştırmanıza olanak sağlar. Yayınladığınız raporları takip edebilir ve export ettiğiniz verileri çeşitli gösterim formatlarından istediğinizi seçerek görüntüleyebilirsiniz. Bu raporlamaları web tabanlı, windows uygulamalı veya da Sharepoint siteden  bağlantı ile oluşturabilirsiniz. Kısaca Reporting Services iş verilerinize ulaşmanızda sizin anahtarınızdır.

Veri Madenciliği ve Microsoft İş Zekası (BI)

Veri madenciliği; verilerden üstü kapalı, çok net olmayan , önceden bilinmeyen ancak potansiyel olarak kullanılabilir bilgi ve örüntülerin çıkarılması olarak tanımlanabilir. İşletmelerde, operasyonel sistemlerde gerçekleşen işlemler sonucu çeşitli veriler üretilmektedir. Geleneksel ticarette geleneksel işlemler sonucu ortaya çıkan verilere, çağımızda, elektronik işlemler sonucu çıkan veriler de eklenmiştir. İşletmelerdeki bilgi sistemlerinin, isim ve kullandıkları yöntemler açısından geçirdiği aşamaları şu şekilde sıralamak mümkündür: "Yönetim bilişim sistemleri"nin (Management Information System -MIS) stratejik karar verme sürecinde kullanılmaya başlamasıyla  "Karar destek sistemleri" (Decision Support System -DSS) ortaya çıkmıştır. Karar destek sistemlerinin istenilen bilgiyi doğru ve zamanında üretebilmesi için bu sistemlerin farklı bir yapıda kaydedilen veri ile beslenmesi gereği doğmuştur.
E-işletmelerde işlemlerden, operasyonel sistemlerden elde edilen verilerin depolandıkları ortamlar veri ambarları olarak adlandırılmaktadır. Bu veriler daha sonra veri madenciliği teknikleriyle anlamlı bilgilere dönüştürülmekte ve stratejik karar verme sürecinde kullanılmaktadır. Veri ambarlarında tutulan veriler, işletmelerin faaliyetlerinden elde edilmiş olan, ancak farklı bir yapıda ve farklı bir fiziksel ortamda tutulan, bilgi üretmeye yönelik verilerdir.  Bu verilerden bazılarının her departmanın kendi kullanım amacına hizmet edecek şekilde ayrılmasıyla "data mart" olarak isimlendirilen her departmana özel veri tabanları oluşmuştur. Veri madenciliği ise bu verilerden çeşitli teknikler, algoritmalar ve sorgulamalarla anlamlı bilgiler keşfetmektir. Veriye dayalı stratejik karar destek sistemlerinin tümü sonuçta "iş zekası (business intelligence) çözümleri" olarak isimlendirilmektedir. OLAP sistemleri; kullanıcıların hızlı analiz yapmalarını sağlayan iş zekâsı sistemleridir.
İş zekası çözümleri için Microsoft İş Zekası (BI) kullanılabilir. Microsoft İş Zekası (BI) Microsoft® SQL Server® özelliklerinin üzerine kurulmuştur;  Microsoft® SharePoint® and Microsoft® Office ile birlikte tam donanımlı bir bilgi platformu sunar. Kuruluşların değişen ihtiyaçlarına hızlı cevap verebilmek için esneklik sağlamaktadır. Microsoft İş zekası çözümleri kuruluşlarda IT verimliliğini düşük maliyetle artırmak mümkündür. Bugünü ve yarını görerek analizler ve raporlamalar yapmayı sağlar. Bunun için Microsoft® SQL Server® ‘ın altyapısını kullanır. SQL Server Analysis Services, OLAP küplerinden anlamlı verilerin elde edilmesine ve analizlerde kullanılmasına olanak sağlamaktadır.
Microsoft iş zekası;  kuruluşlar ile ilgili karmaşık veri setlerinden raporlamalar yaparak oluşturulan pano (dashboard) ile yöneticilerin işleriyle alakalı bilgileri analiz etmesine olanak tanır. Yöneticiler analiz edilmiş verileri panolar sayesinde kolaylıkla yorumlayabilirler. Kuruluşun bugünü ve yarını ile ilgili öngörüde bulunma konusunda Microsoft BI teknolojisinin performansı oldukça yüksektir. SQL Server Analysis Services ile OLAP datalarından anlamlı veriler çekerek veri madenciliği yapmak mümkündür. Microsoft veri madenciliği çözümleri, çalışanların basit veri analizinin ötesine geçerek bilgi dahilindeki gizli eğilimleri, sorunları veya ilişkileri tanımlamalarını kolaylaştırır.