Transaction Mimarisi-2

Xact_State()  Fonksiyonu   Try-catch yapısını kullandığımızda bir hata aldığımızda transaction rollback edilir. Transaction’ın o anki durumu hakkında bilgi alıp durumuna göre işlem yapabiliriz. Transaction’ın durumu hakkında bilgi almak için xact_state() fonksiyonu kullanılır. 1–> Transaction’ın aktif olduğunu gösterir. 0–> Transaction’ın pasif olduğunu gösterir. 2–> İlgili transaction’ın sonlandırılabilir bir transaction olmadığını gösterir. Nested Transactions Sql server bir transaction bitmeden başka […]

Transaction Mimarisi

Transaction mimarisi, veri tabanlarının bence en önemli parçasını oluşturmaktadır. Yapılacak bir işin basamaklarında herhangi bir hata alındığında o hataya kadar yapılan işleri tamamen geri alabilir yada bizim belirlediğimiz düğüme geri dönebiliriz. Temel olarak transactionlar aşağıdaki 4 özelliğe sahiptirler. Atomicity: Yapılan bir işlem birden fazla alt işlem içerebilir ve bu alt işlemlerden herhangi birisi hatalı sonuçlanırsa, tüm […]

Trigger Mimarisi (DDL Trigger)

Tüm veritabanı hatta daha geniş kapsamlı olarak Server bazında gerçekleştirilen Create, Alter Drop gibi ddl (Data Definition Language) işlemlerini kontrol etmek istediğimiz durumlarda DDL trigger’larını kullanabiliriz.Sadece veritabanı üzerindeki ddl işlemlerini kontrol etmek için DDL trigger’ımızı ilgili veritabanı üzerinde oluşturmamız gerekir. Server seviyesinde ddl işlemleri için trigger’ımızı master veritabanında oluşturmalıyız. Ddl trigger’larının tetiklenmesi ile oluşan event […]

Trigger Mimarisi (DML Trigger-2)

Instead Of Dml Trigger İnstead of Dml trigger’ları tetiklendiğinde dml komutları yerine sadece trigger tetiklenir. Bir insert işlemi için instead of trigger’ı oluşturduğumuzda tablo üzerinde insert işlemi yapmak istediğimizde insert işlemi yapılmaz bunun yerine instead of dml trigger’ımız tetiklenir. Bu yöntem tablo üzerinde yapılacak olan dml işlemlerini kontrol etmek için kullanılır. After dml triggerlar ile […]

Trigger Mimarisi (Dml Trigger-1)

Sql Server gibi ilişkisel veritabanı yönetim sistemlerinde tablo veya view üzerinde gerçekleştirilen insert,update, delete gibi DML işlemlerini ve veritabanı veya server seviyesinde create,alter, veya drop gibi DDL işlmelerinden biri gerçekleştiğinde tetiklenip çalışacak olan Sql Server objelerine trigger denir. DML ve DDL işlemlerinin performanslarını takip edilirken triggler mutlaka kontrol edilmelidir. Yapacağımız işlem uzun zaman alıyorsa buna […]

Kullanıcı Tanımlı Fonksiyonlar

UDF (User Defined Function), kullanıcı tanımlı fonksiyonlar birden fazla t-sql ifadesinin art arda işlenip bir sonuç üretilmesi için kullanılan sql server objeleridir diyebiliriz. Stored procedure’lerden farklı olarak kullanıcı tanımlı fonksiyonlar içinde DML işlemleri yapamayız. Fonksiyonlarda sorgu sonucunda gelen değer kullanıcıya döndürebiliriz. –Sp’lerden dönen değer spnin doğru çalışıp çalışmadığını kontrol ederken, fonksiyonlardan dönen değeleri başka bir işlem […]

Stored Procedure-2

Daha önce stored procedure konusu ile giriş yapmıştık. Biraz daha ayrıntılı olarak değinmeye çalışacağım, bilmediğimiz ve dikkat etmemiz gereken bilgileri yazmaya çalışacağım. Stored procedurelerin adhoc sorgulardan daha hızlı ve stabil çalıştığını ve bununda adhoc sorgu için her çalıştırmada tekrar oluşturalacak execution planın stored procedure için ilk çalıştırmada oluşturulması ve diğer seferlerde bu planı oluşturmadan direk kullanmasından kaynaklandığını biliyoruz. Stored Procedure’lerin […]

Az Bilinen Sorgulama Teknikleri-2

Grouping Sets Birden fazla kritere göre gruplama yapmak istediğimizde group by ifadesinin union veya union all gibi operatör  ile birleşmesi sonucu kullanabiliyorduk. Raporlamalar için büyük bir ihtiyaç olan grouping sets operatörü diğer koşullara göre  daha hızlı çalışmaktadır. Grouping Sets ifadesinden sonra gruplama yapmak istediğimiz tüm verileri aralarına virgül koyarak parantez içinde listeleyebiliriz. Boş parantez işareti […]

Az Bilinen Sorgulama Teknikleri

Table Sample Komutu Table Sample komutu Sql Server 2005 ile gelen rastgele sayıda kayıt elde etmemizi sağlayan komuttur. Rastgele sayıda kayıt elde etmek için NewID() fonksiyonuda bulunmaktadır.Table Sample ile kayıtlar direkt olarak verilerin tutulduğu Page’lerden okunur ve ne kadar sayfanın okunacağı parametre olarak belirtilir.Table Sample komutunu iki şekilde çalıştırabiliriz. Percent ile belirtilmiş sorguda pagelerden yüzde […]

Log Shipping

Log shipping sql server 2000’den günümüze kadar süregelen bir teknolojidir. Production (sistemde etkin olarak görev yapan veritabanı) ortamında bulunan veritabanlarından herhangi bir olağan dışı durum sebebiyle, veri kaybolmasını istemiyorsak Log shipping teknolojisini kullanmalıyız. Production ortamındaki veritabanının belirli aralıklarla kopyası alınıp diğer sunucuda tutulur. Jobl’ar vasıtasıyla secondary database, production ortamından beslenmelidir. Böylece veri kaybını en aza […]