14 Ocak 2008 Pazartesi

SQL Server 2005 içerisinde Managed Code Kullanmak

SQL Server 2005 içerisinde Managed Code Kullanmak

SQL Server 2005 de veritabanı nesneleri T-SQL veya Managed code(yönetimsel kod) ile oluşturulur. Table, view gibi nesneler T-SQL deyimleri ile oluşturulur. Stored procedure, trigger, user-defined function, user-defined type ve aggregates gibi nesneler ise Managed code ile oluşturulabilir. Bu nesnelerin Managed code ile geliştirilmeleri aşağıdaki avantajları sağlar.

Managed code, Net dillerinin güçlü yapısını kullanır. Örneğin exception handling(hata kontrolleri), object orientation (nesne yönelimi) ve ileri düzey koşul kontrolleri gibi.
Managed code, .Net Framework’ün temel sınıf kütüphanelerini (base class library) kullanır.
Managed code, CPU’nun daha etkin kullanılmasını sağlar.
Managed code ile uygulama geliştirmek için Visual Studio 2005 kullanılır. Visual Studio 2005 içerisinde Visual Basic veya Visual C# seçtikten sonra, Database Proje tipini seçerek uygulama geliştirebilirsiniz.

Bu makalemde Managed code ile user-defined function yazarak SQL Server 2005 için assembly oluşturacağım.
Projeyi oluşturduktan sonra, “Add New Reference” butonunu tıklayarak SQL Server 2005’e bağlanın.


AdventureWorks veritabanı seçelim ve “Test Connection” butonunu tıklayarak bağlantıyı test edelim. Ok butonunu tıklayarak, “Add Database Reference” penceresine tekrar geçelim.


“AddDatabaseReference” penceresinden en son eklediğimiz veritabanını(connection string) seçin.

Aşağıdaki mesaj kutusuna üzerinde, “No” butonunu tıklayarak projeyi oluşturun.


Projeyi oluşturduktan sonra, Project menüsünden “Add User-Defined Function” menüsünü tıklayın.

Proje üzerinde veritabanı işlemleri gerçekleştirmek için sqlaccess.dll ve System.Data.dll kütüphanelerini eklenmelidir. (Project menüsünden, “Add Reference” menüsünü tıklayarak kütüphanaleri projeye ekleyebilirsiniz) Bu kütüphaneler proje ile beraber gelir.
Eklediğimiz sınıfın(class) kod bölümüne aşağıda kodu ekleyin
_
Public Shared Function GetLongDate _
(ByVal DateVal As SqlDateTime) As SqlString
Return DateVal.Value.ToLongDateString()
End Function

Kod satırlarını ekledikten sonra projeyi deploy yapın. Projeyi deploy yapmak için, Proje üzerinde sağ tuşa basın ve açılan menüden “Deploy” menüsünü tıklayın.

Eklediğimiz user-defined function’ı görmek için SQL Server Managed Studio’u açın.
Eklediğimiz user-defined function aşağıdaki gibi gözükecektir.



Fonksiyonu çalıştırmak için yeni bir sorgu(New Query) ekleyin ve aşağıdaki kodları yazın.

exec sp_configure 'clr enabled', 1
GO
RECONFIGURE
GO
USE AdventureWorks
SELECT dbo.GetLongDate('01/01/2006')

SQL Server 2005 içerisinde varsayılan olarak Net Framework pasifdir. Aktif hale getirmek için “sp_configure” stored procedure kullanılır.

Bu konu ile ilgili “SQL Server 2005 ve Net CLR” başlıklı makalemi de okuyabilirsiniz.
Başka bir makalede görüşmek üzere...

Hiç yorum yok: