Sayfalar

11 Aralık 2008 Perşembe

(Assembly) DLL’lerin Sql Serverda Kullanılması

Assemblyler (*.dll) sql server üzerinde bir klasör içerisine atılır. Birbirini refere eden tüm assemblyler aynı klasör içinde olmalıdır. Refere eden assemly’nin SQL Server’a yüklenmesi yapıldığında refere edilmiş olan assemblyler de aynı anda SQL Server’a yüklenir.

Örneğin tüm assembly dosyalarını D klasörünün içinde bulunan DLL klasörüne atalım.

Trustworthy Computing(Güvenilir Hesaplama),
Microsoft’un önemsediği güvenlik vizyonunun başında gelen bir konu olup sistem üzerindeki tüm uygulamaların güvenli ve güvenilir bir şekilde ilerlemesini içerir.

SELECT is_trustworthy_on FROM sys.databases WHERE name = db_name()
ALTER DATABASE FulyaTest SET TRUSTWORTHY ON;
GO

SQL Server 2005’e CLR (Common Language Runtime) entegre edilmiştir. Bu entegrasyon veritabanı uygulamaları geliştirirken önemli esneklik sağlar. Özellikle CLR, extended stored procedure yazarken güçlü ve esnek bir yapı sağlar.

SQL Server 2005 ile gelen CLR entegrasyonu sayesinde hazır bir assembly SQL server üzerinden kullanılabilir. Lokal kaynakları içeren bir assembly’i başka bir assembly kullanıyor ise buna Uydu Assembly (Satellite Assembly) adı verilir.

SQL Server CLR entegrasyonunun kullanımı için ilk yapmamız gereken şey kullandığınız SQL Server instance’ında CLR entegrasyonunu aktif hale getirmektir. CLR entegrasyonunu aktif hale getirmek için 2 yöntem kullanılabilir;
  1. Başlat > Programlar > Sql Server 2005 > Configuration Tools > SQL Server Surface Area Configuration penceresini açalım. Açılan penceredeki seçenekler arasından “Surface Area Configuration for Features” seçtikten sonra açılan yeni penceredeki komponent listesinden “CLR Integration”ı seçip “Enable CLR Integration” kutucuğunu işaretleyelim.
  2. SQL Server Management Studio’yu açıp New Query seçeneğini seçtikten sonra aşağıdaki T-SQL komutunu da kullanırız. Bu komutun sonunda ise “reconfigure” komutu çalıştırılarak yapılan değişikliklere göre SQL Server’ın kendini yeniden yapılandırması sağlanır.

    --Veri tabanı için CLR aktif hale getiriliyor.
    sp_configure 'clr enabled', 1
    Reconfigure with override
    GO

    SQL Server 2005 de CLR’ı aktif hale getirdikten sonra D:/DLL klasöründe bulunan assembly dosyalarını SQL Server üzerinde oluşturmak için SQL Server Management Studio’yu açıp New Query seçeneğini seçtikten sonra aşağıdaki T-SQL komutunu da kullanırız.

    Not: Assemblyler derlenirken C:\WINDOWS\assembly (global assembly) klasörünede atılırlar. Derleme işlemi SQL Server üzerinde yapılmadığı için bu klösörde assemblyler yaratılmaz o nedenle D:\DLL klasörüne atmış olduğumuz assembly’leri bu klasörede kopyalamamızda fayda var.

    --Assembly yaratılıyor
    CREATE ASSEMBLY csmultipaycreditcard
    FROM 'D:\DLL\csdeneme.dll'
    WITH PERMISSION_SET=UNSAFE

    Not : Assembly oluşturulduktan sonra yüklendiği klasör ile hiç bir ilişkisi kalmaz. Bağımsız çalışır. Klasördeki assembly değşince değişmez. Tekrar oluşturulması gerekmektedir.

    CAS MODELİ (Yetkilendirme)
    PERMISSION_SET = SAFE --Veriye erişim yetkisi vardır. In-Proc veri sağlayıcısı sınıflarını kullanabilir. Dosya sistemi, ağ bağlantısı gibi dış kaynaklara erişim yetkisi yoktur. Varsayılan güvenlik modelidir.
    PERMISSION_SET = EXTERNAL_ACCESS --SAFE ile yapılan bilen tüm işlemlerin yapılabileceği gibi dosya sistemi, ağ bağlantısı, event loglar gibi dış kaynaklara erişim de sağlanabilir.
    PERMISSION_SET = UNSAFE --Bu güvenlik modeli ile çalışan kodlar üzerinde CASın hiç bir kısıtlaması yoktur.

    T-SQL komutunu çalıştırmamız ile birlikte Sql Server Management Studio’da Assembly’i oluşturduğumuz veri tabanının altında Programmability’nin altında Assemly nin içerisinde csdeneme ve varsa refere ettiği assembly'lerin de oluşmuş olduğunu görebiliriz.

    SELECT * FROM sys.assemblies – oluşturulmuş olan assemblyler.
    SELECT * FROM sys.assembly_files – assembly dosyalarının yüklendiği klasör listeleri

    -- Visiblity ayarları On/Off
    ALTER ASSEMBLY [csdeneme]
    Visiblity =Off

    -- Assembly 'i silmek için
    DROP ASSEMBLY [csdeneme]

Hiç yorum yok:

Yorum Gönder

Yorumunuzu bırakın.