17 Ocak 2017 Salı
CLR Stored Procedure
CLR (Common Language Runtime), Microsoft’un .NET mimarisi ile birlikte sunduğu yönetilebilir programlama platformudur.
CLR ve .NET dilleri ile SP’ler, kullanıcı tanımlı fonksiyonlar ve Trigger’lar gibi nesneleri kodlamak mümkündür. Dolayısı ile SP ve diğer nesneleri kodlamak için CLR’ ye ihtiyaç vardır. Bununla birlikle SP için çeşitli CLR prosedürleri’de beraberinde gelmektedir.
Güvenlik ve denetim gibi konularda CLR SP’ler, SQL Server için büyük avantaj sağlamaktadır.
Extended Stored Procedure
Genellikle .dll uzantısı şeklinde derlenmiş olan prosedürlerdir.
T-SQL dışındaki C, C++, Visual Basic, Delphi gibi dillerde yazılıp derlenirler.
Veritabanı uzayı dışında çalışırlar.
Sistem içerisinde hazır olarak gelen extended procedure’ ler genellikle xp_ öneki ile başlarlar, fakat sp_ öneki ile başlayan prosedürlerde vardır.
Bu sistem extended prosedürleri master veritabanı içerisinde tutulmaktadır. Tam nitelikli isimleri db.sahibi.sp-ismi şeklindedir.
Bütün sistem prosedürlerini master veritabanı altında görebilirsiniz. Örneğin veritabanına bağlanan kullanıcıları listelemek için aşağıdaki extended sistem prosedürü kullanılabilir.
T-SQL dışındaki C, C++, Visual Basic, Delphi gibi dillerde yazılıp derlenirler.
Veritabanı uzayı dışında çalışırlar.
Sistem içerisinde hazır olarak gelen extended procedure’ ler genellikle xp_ öneki ile başlarlar, fakat sp_ öneki ile başlayan prosedürlerde vardır.
Bu sistem extended prosedürleri master veritabanı içerisinde tutulmaktadır. Tam nitelikli isimleri db.sahibi.sp-ismi şeklindedir.
Bütün sistem prosedürlerini master veritabanı altında görebilirsiniz. Örneğin veritabanına bağlanan kullanıcıları listelemek için aşağıdaki extended sistem prosedürü kullanılabilir.
Stored Procedure
Prosedür, belli bir görevi yerine getirmek için yazılmış program parçacıklarıdır. Başka bir deyişle, herhangi bir işlevi yerine getirmek için yazılan kodların bir paket içerisinde tutulmuş halidir.
Bir prosedür başka bir prosedür tarafından da çağrılabilmektedir. Bu da, sık kullanılan işlemlerin bir defa yazılarak programın akışına göre defalarca kullanılmasını sağlamaktadır. Böylelikle kod yazımı ve programlama işlemi kolaylaştırılmış olmaktadır.
Stored Procedure’ler diğer programlama dillerindeki fonksiyonlarla aynı işleve sahiptir.
Oluşturulan bir Stored Procedure’e ana program içerisinde bir komut ile ulaşılmaktadır.
Aynı komut defalarca verilerek procedure çalıştırılabilmektedir. Dolayısı ile procedure defalarca yazılmayıp tek bir defa yazılıp çağrılmış olmaktadır.
Stored Procedure’ler, ilk defa 1980’li yıllarda Sybase veritabanı sunucusunda kullanılmıştır.
Sorguların önceden hazırlanması ve veritabanı yönetim sistemi içerisinde saklanması en büyük özelliğidir. Dolayısı ile aynı uzayda çalıştığı içinde daha hızlı sonuçlar alınabilmektedir.
Bir SP oluşturulduktan sonra veritabanı içerisinde saklanmaktadır ve ihtiyaç duyulduğunda ise çağrılmaktadır.
Stored Procedure’ler, oluşturma şekillerine göre dört’e ayrılırlar:
Extended Stored Procedure’ler
CLR Stored Procedure’ler
Sistem Stored Procedure’leri
Kullanıcı Tanımlı Stored Procedure’ler
VIEW’ ları Şifrelemek
Bazı durumlarda View’ları oluşturan kaynak kodların başkaları tarafından görülmemesi istenebilir. Böyle bir durumda SQL Server’ın kendi içerisinde yer alan bir şifreleme mekanizması bu yapıları kullanıcı için şifreler. Burada dikkat edilmesi gereken en önemli nokta şifrelenmiş bir View’ın içeriğini biz dahil hiç kimsenin görememesidir. Bu nedenle şifreleme işlemi uygulanmadan önce kaynak kodların bir kopyasının mutlaka saklanması gerekir.
View’ları şifrelemek için ENCRYPTION komutu kullanılmaktadır.
ENCRYPTION komutu View oluşturulurken kullanılacağı gibi sonradan da kullanılabilir. Bu komutun genel yapısı şöyledir.
CREATE VIEW view_adı
WITH ENCRYPTION
AS
SELECT cümlesi
Burada dikkat edilmesi gereken bir diğer noktada, View’ın çalıştırılabileceği fakat kodlarının görülemeyeceğidir. Kaynak kodunu görmek için bir sistem prosedüründen faydalanalım. Query kısmına aşağıdaki komut yazıldığında ilgili View’ın şifrelendiğini belirten bir mesaj görüntülenir.
Şifreyi kaldırmak isterseniz View üzerinde yine bir değişiklik yaparak bunu yapabilirsiniz. Bunun için WITH ENCRYPTION komut satırını kaldırarak View’ı yeniden düzenleyebilirsiniz.
VIEW’ ları Silmek
Bir View’ı veritabanından kaldırmak(silmek) için DROP komutu kullanılmaktadır. Bu komut kullanıldığında view sistemden tamamen silinmiş olacaktır. DROP komutunun genel kullanımı aşağıdaki gibidir.
DROP VIEW view_adı
Örnek:
DROP VIEW Urunler
Birden Fazla Tablo Kullanmak
Bir JOIN komutu kullanılarak birden fazla tablodaki veriler bir VIEW oluşturularak defalarca sorgulanabilir. Genel olarak bu işlem için şöyle bir yapı kullanılır:
CREATE VIEW view_adı
AS
SELECT sütun_adları FROM tablo_1 JOIN tablo_2 ON birleştirme_şartı
VIEW’ larda Değişiklik Yapmak
Bir View üzerinde değişiklik yapılmak istenildiğinde ALTER VIEW komutu kullanılır. ALTER VIEW deyiminin genel yapısı aşağıdaki gibidir.
ALTER VIEW view_adi
AS
SELECT ifadesi
VIEW Sütunlarına İsim Vermek
View’lar da sütun adları isteğe göre değiştirilebilir. Eğer değiştirilmek istenmiyorsa filtrelenen ana tablodaki sütun adları ile aynı olacaktır.
Sütun adları ihtiyaca göre değiştirilebilir. View’larda sütun adları verilirken herhangi bir veri tipi belirtilmez. Bunun nedeni sorgulanan tablo baz alındığı için veri tipleri yine asıl tablodaki veri tipleri ile aynı olacaktır.
VIEW Oluşturmak
Görünümler tablolarla aynı özelliklere sahip olup en fazla 1024 tane sütundan oluşabilmektedir. Görünüm oluşturmak için CREATE VIEW komutu kullanılmaktadır.
Görünümün genel yapısı şöyledir:
CREATE VIEW view_adı
AS
SELECT sütunlar FROM tablo_adı
MS SQL Server üzerinde yeni bir Query açarak oluşturacağımız «bilgi» adlı View’a ait T-SQL kodlarını yazarak çalıştıralım.
Oluşturulan View’ lar ilgili veritabanının «views» sekmesinde yer almaktadır ve dbo.bilgi şeklinde görüntülenmektedir.
Oluşturduğumuz View’lar standart SQL komutlarına benzer şekilde çalıştırılmaktadır.
View oluşturma işlemini dilerseniz MS SQL Server’ da ilgili veritabanındaki «views» seçeneğini farenin sağ tuşuna basarak açılan menüden «New View…» diyerek te oluşturabilirsiniz.
«New View» seçeneğini tıkladığınızda karşınıza View’ı hangi tablo yada tablolardan oluşturacağınızı soran bir ekran gelecektir. Örneğimizi tblUrun tablosunu kullanarak yeniden yapalım.
tblUrun tablosu seçildiğinde View’da sorgulanması gereken alanların tek tek seçilmesi istenecektir.
Her seçilen alan bir SELECT ifadesi içerisine eklenir. Eğer bir filtreleme yapılacaksa Filter seçeneği içerisinde belirtilir.
Görünümün genel yapısı şöyledir:
CREATE VIEW view_adı
AS
SELECT sütunlar FROM tablo_adı
MS SQL Server üzerinde yeni bir Query açarak oluşturacağımız «bilgi» adlı View’a ait T-SQL kodlarını yazarak çalıştıralım.
Oluşturulan View’ lar ilgili veritabanının «views» sekmesinde yer almaktadır ve dbo.bilgi şeklinde görüntülenmektedir.
Oluşturduğumuz View’lar standart SQL komutlarına benzer şekilde çalıştırılmaktadır.
View oluşturma işlemini dilerseniz MS SQL Server’ da ilgili veritabanındaki «views» seçeneğini farenin sağ tuşuna basarak açılan menüden «New View…» diyerek te oluşturabilirsiniz.
«New View» seçeneğini tıkladığınızda karşınıza View’ı hangi tablo yada tablolardan oluşturacağınızı soran bir ekran gelecektir. Örneğimizi tblUrun tablosunu kullanarak yeniden yapalım.
tblUrun tablosu seçildiğinde View’da sorgulanması gereken alanların tek tek seçilmesi istenecektir.
Her seçilen alan bir SELECT ifadesi içerisine eklenir. Eğer bir filtreleme yapılacaksa Filter seçeneği içerisinde belirtilir.
VIEW (Görünüm) Nesnesi
Görünümler, veritabanı içerisinde önceden tanımlanmış tabloları kullanarak elde edilen geçici sanal tablolardır.
Bu tablolar veritabanında fiziksel herhangi bir yer kaplamazlar.
Görünümler, herhangi bir tablodaki belli alanların listelenmesini sağlarlar.
Bir veritabanı üzerinde eğer sık sorgulanan veriler var ise, bu verilerin hızlı ve basit bir şekilde sorgulanmalarını sağlamaktadırlar.
Tablolar olduğundan farklı gösterilmek istenildiğinde çeşitli filtreler kullanılır. Bu filtrelerden biri de görünümlerdir.
Görünümler kaydedilmiş sorgulardan oluşmaktadır.
Başka bir deyişle sorguları basitleştirmek bunların erişimlerini ve izinlerini düzenlemek, birbirinden farklı sunuculardaki benzer verileri karşılaştırmak ve bazı durumlarda da sorgu sürelerini kısaltmak için kullanılan gerçekte var olmayan sanal tablolardır.
Bu şekilde veritabanı üzerinde yer alan tablo yada tablolara daha kolay ve güvenli bir şekilde erişim yapılabilmektedir.
Bir görünüm ile birden fazla tablo üzerinde sorgulama yapılabilir. Bu haliyle karmaşık SQL ifadelerini daha da basitleştirmiş olur.
Oluşturulan bir görünüm ile veriler üzerinde herhangi bir güncelleme işlemi yapılamaz.
Bu yapılar sadece MS SQL Server, Oracle gibi ileri seviye veritabanı yönetim sistemlerinde bulunmaktadır. MS Access’ te bu yapılar yoktur.
Bir görünümün genel yapısı şekildeki gibidir.
Genel olarak görünümler aşağıdaki amaçlar için de kullanılmaktadırlar:
Kullanıcıların, bir tabloda yer alan sütun veya satırlarındaki önemli verilerini görmek.
Tablolarda bulunan verileri başka bir tablo formatında göstermek.
Karmaşık sorguları basitleştirmek.
Kaydol:
Kayıtlar (Atom)