TÜRKİYE'NİN BİLGİ TEKNOLOJİLERİ DERGİSİ BİZE ULAŞIN   |   DÜNYA YAYINCILIK A.Ş.  
BYTE.com.tr Ana Sayfa
Üye Girisi

Eğer üyeyseniz lütfen
buraya tıklayınız.

BYTE Online'a
üye olmak istiyorum.
BYTE Forumlari
BYTE Ögretim
Okur Hatti
Web sitenizi dergimizde tanıtmak, BYTE Dergi, CD, TV ve Online ile ilgili görüş ve önerilerinizi bizlere ulaştırmak için

Okur hattı bölümünü kullanabilirsiniz.

Okur Hatti
Makaleler SQL Server 2005 ve CLR Entegrasyonu
SQL Server 2005 ve CLR Entegrasyonu
Bu yazımızda veritabanı dünyasına farklı bir bakış açısı getirecek olan SQL Server 2005’in CLR entegrasyonunu inceleyeceğiz.

CLR Desteği

SQL Server 2005’in en dikkat çekici özelliklerinden biri CLR ile birlikte çalışabilmesi. Bu sayede kendinizi en rahat hissettiğiniz .net dili ile veritabanı nesneleri oluşturma, oluşturduğumuz nesneleri yapılandırma ve hatta veritabanı yönetim sistemimizin yönetimini sağlama imkanına kavuşuyoruz. Artık geliştirici T-SQL kullanmadan, istediği dilde (Vb.Net,C#...) veritabanı üzerinde trigger 'lar , stored procedure'ler ya da fonksiyonlar yazabilecek, veritabanlarını oluşturup silebilecek. Bu aynı zamanda herhangi bir veritabanı nesnesi yazarken binlerce ( abartmıyorum :) ) bileşeni sunan .Net Class Library'den faydalanabilme anlamına da geliyor.

Fikir vermesi açısından, aşağıda girilen ID ‘ye göre isim döndüren bir fonksiyon görüyoruz. Bu fonksiyon .net dillerinden VB.NET ile kodlanmasına rağmen SQL Server’ın üzerinde saklanıyor ve çalıştırılıyor.

   Imports System.Data.Sqlserver

    Imports System.Data.Sql

      Public Class Kitaplik

       <SqlFunction(DataAccess=DataAccessKind.Read)>

       Public Shared Function YazarDondur() as String

       Dim cmdSql As Sqlcommand = Sqlcontext.GetCommand()

       cmdSql.CommandText= _

           "Select Yazar from Kitap where KitapId = @prmKitapId" 

       Dim prmKitapId As SqlParameter = _

                      cmdSql.Parameters.Add("@prmKitapId",SqlDBType.String)

       prmKitapId.Direction = ParameterDirection.Input

       prmKitapId.Value="K001"

       Return Ctype(cmdSql.ExecuteScalar(),String)

     End Function

    End Class

Bundan önce kullandığımız ADO.NET kodlarına ne kadar da benziyor değil mi? Gördüğünüz gibi SQL Server 2005 için yazılan bu fonksiyonun kodlarını yorumlamak .net ile haşır neşir olanlar için hiç de zor değil. SQL Server’ ı programlamak için yeni bir dil öğrenmek yerine bildiğimiz dili SQL Server’ın desteklemesi elde edinilen bilginin katlanarak artmasına olanak sağlıyor.

Bu noktada T-SQL’in akibetinin ne olacağı sorusu akıllara geliyor. Sanılanın aksine T-SQL rafa kaldırılmış durumda değil! SQL Server 2005’te T-SQL işlevselliğini, geliştirilmiş ve yeni ekleniş birçok özellikle koruyor. Try/Catch yapısının eklenmesi ya da CLR ile bütünleşmesi için eklenen deyimler bu gelişime örnek verilebilir. Aşağıda Try/Catch yapısına ait bir örnek bulunuyor;

BEGIN TRY

  BEGIN TRAN

    INSERT INTO tblMusteri (Id,MusteriAdi,Bakiye,Tarih)

    VALUES (@Id, @MusteriAdi, @Bakiye, GETDATE())

  COMMIT TRAN

END TRY

 

BEGIN CATCH TRAN_ABORT

  ROLLBACK 

  INSERT INTO tblHatalar VALUES ('Hata Oluştu'))

END CATCH

Peki bazı işlemleri hem T-SQL ile hem .Net programlama dillerinden biriyle yapabileceksek T-SQL ve .Net kodu arasında tercihi neye göre belirleyeceğiz? Genel olarak T-SQL'in, veriye erişim ve veri üzerinde toplu işlemler için kullanılması daha uygunken, .net kodlarının veri üzerinde daha karmaşık (ileri düzey matematik ya da katar işlemleri gibi) işlevleri yerine getirirken kullanılması uygun diyebiliriz.

CLR ile bütünleşme beraberinde arttılmış güvenliği (code access security v.b.), bellek yönetimini (garbage collection v.b.) ve çok kanallı (multi threading) programlanabilmeyi de getiriyor. Burada sadece adını andığımız bu başlıkların hepsi başlı başına birer makale konusu. Genel olarak değerlendirdiğimizde ise SQL Server 2005-CLR işbirliği işlevsellik açısından ani bir patlama gibi.






BYTE MAYIS 2009



BYTE dergisinden hangi bölümün artırılmasını istersiniz?
Donanım İncelemeleri
Yazılım İncelemeleri
Nasıl Yaparım (pratik)



 



  ANA SAYFA   |   FORUM   |   ABONE OLUN   |   BİZE ULAŞIN

Sitelerimiz: pcworld.com.tr | computerworld.com.tr | dunya.com | dunyastore.com

©2004 - 2009 BYTE Türkiye