Pazartesi , 20 Kasım 2017

SQL Server Development

Olusturdugumuz Stored Procedure’lere Tüm Veritabanlarindan Erisebilmek

SQL Serverda Stored Procedure, fonksiyon gibi objeler veritabanı seviyesinde olup sadece oluşturulduğu veritabanında kullanılabilirler. Eğer farklı bir veritabanına bağlı iken başka bir veritabanındaki objeye erişmek istersek ilgili objenin adının başına veritabanı adını da eklememiz gerekiyor. Aksi takdirde “Invalid object name ‘%.*ls’” hatasını alırız. Fakat özellikle SQL Serverın built-in sistem stored procedure ve fonksiyonlarını çalıştırırken veritabanı adı vermeksizin herhangi bir veritabnından ... Devamını Oku »

SQL Server 2012 Indirect Checkpoint Özelligi

Checkpoint, SQL Server Database Engine servisi tarafından çalıştırılan ve Buffer Cache diye adlandırılan bellek bölgesindeki Dirty Page’lerin diske yani data dosyasına yazılması işlemidir. Dirty Page kavramı ise az önce bahsettiğimiz Buffer Cache bellek bölgesinde bulunan ve üzerinde değişlik yapılmış(delete,update vb) fakat hala fiziksel olarak diske yazılmamış page olarak adlandırılmaktadır. Yani bir veri üzerinde bizim yapmış olduğumuz değişlikler doğrudan data dosyası ... Devamını Oku »

SQL Server 2012 Contained Database

Hem veritabanı yöneticilerini hem de veritabanı uygulamaları geliştiren yazılımcıların sıkça zorluklardan biri test ve geliştirme(Development) ortamlarında oluşturdukları veritabanlarının Canlı(Production) gibi farklı ortamlara daha doğrusu farklı SQL Server Instance’ına taşınmasıdır. Çünkü birçok durumda sadece veritabanının taşınması yeterli değildir. Çünkü SQL Serverda veritabanları bağımsız nesneler olmayıp kullandığımız SQL Server loginleri, SQL Server Agent jobları, linked Serverlar gibi nesneler sadece veri tabanlarımıza değil ... Devamını Oku »

Temp tablo ve Table variable Karşılaştırılması

SQL Serverda verileri geçici olarak tutabileceğimiz yapılar vardır. Bunlardan en fazla bilinen ve kullanılanı Temp tablolar ve Tablo tipi değişkenler(Table variable)’dir. Genelde performans için hangisini kullanmalıyım ya da ikisinin kullanmak arasında ne gibi farklar var soruları ile çok sık karşılaşabilirsiniz. Bu yüzden kısaca bu iki yapı arasındaki önemli farklara değinmek istiyorum. İlk olarak table variable bir değişken olduğu için bellekte ... Devamını Oku »

Resimlerin SQL Server Tablolarına Kaydedilmesi

Resim, müzik hatta Word, Excel gibi dosyaların yani yapısal olmayan verilerin(unstructured data) veritabanında Binary formatta tutulması tavsiye edilmese bile bazen kaçınılmaz bir ihtiyaç haline gelebiliyor. Örneğin sık karşılaşılan resim dosyalarının SQL Serverda bir tabloda Binary formatta tutulması yerine performans için bu resimlerin ortak erişilebilen paylaştırılmış bir klasörde tutulması ve SQL Serverda bu resimlerin fiziksel yolunun tutulması daha performanslı bir çözüm ... Devamını Oku »

SQL Server 2014 Paralel Select Into Yeniliği

SQL Server 2014 ile gelen bir başka yenilik Select ifadesini kullanarak bir tablonun tamamı veya bir kısmını kullanarak yeni bir tablo oluşturduğumuz durumlarda bu işlemin paralel bir şekilde yapılması ve dolayısıyla da daha kısa sürede bitmesini sağlamasıdır. SQL Server 2014 öncesi sürümlerde de kullandığımız Select Into komut yapısı SQL Server 2014 sürümüyle beraber paralel olarak çalışmayı desteklemektedir. Bu yeniliğin kullanılması ... Devamını Oku »

SQL Server Sorgularımızın Anatomisi ve Query Process Yapısı

Güncel hayatta karşılaştığımız teknik problemler ne kadar karmaşık olursa olsun çözüme ulaşabilmek için ilgili konuyla ilgili bilgi birikimimizi sağlam temeller üzerine kurmuş olmamız gerekmektedir. Çünkü bir probleme müdahale edebilmek için arka planda kullandığımız sistemin nasıl davrandığını iyi kavramamız gerekir. Benzer şekilde SQL Server tarafında sık karşılaştığımız sorgularımızda ortaya çıkan performans gibi birçok karmaşık sorunu çözebilmek adına SQL Server’ın bizim sorgumuzu ... Devamını Oku »

Aktif Pasif SQL Server Failover Cluster İçinde Aktif Olan Nodu Bulmak

SQL Server Failover Clustering kullanıyorsanız ve aktif-pasif modda çalışıyorsanız bazen aktif olan nodun hangi nod olduğuna ihtiyacımız olabilir. Bu durumda SQL serverın built-in fonksiyonlarından SERVERPROPERTY fonksiyonunu ComputerNamePhysicalNetBIOS parametresi ile çalıştırdığımızda bize o anda aktif olarak SQL Serverın üzerinde çalıştığı makinenin NetBIOS adını verecektir. Eğer Failover Clustering kullanıyorsak bu değer Failover durumunda değişecektir ve her defasında aktif olan nodun NetBIOS adını verecektir. SERVERPROPERTY fonksiyonu aşağıdaki ... Devamını Oku »

T-SQL ile Gruplanan Değerlerin Birleştirilmesi

Verilerimiz üzerinde gruplama işlemi yaparken Group by ifadesini kullanıyoruz. Group by ile verilerimizi gruplayabildiğimiz gibi aynı zamanda Sum gibi gruplama fonksiyonlarını kullanarak gruplama yaptığımız seviyedeki verilerinde toplamlarını alabiliriz. Fakat Sum fonksiyonu ile sadece numerik verilerin toplandığını biliyoruz. Bazen gruplama yaptığımızda alanlar dışında kalan numerik ya da numerik olmayan alanların toplanmasını değil birleştirilmesini isteriz. Örneğin bir tabloda öğrencilerin numaraları ve aldıkları ... Devamını Oku »

SQL Server Deadlock Kavramı ve Deaclok’ların Loglanması

Deadlock, eş zamanlı(Concurrent) çalışan sistemlerin doğal davranışlarından biridir. Kavram olarak iki farklı process’in işlemlerine devam edebilmeleri için birlerinin üzerinde çalıştığı kaynağı bekliyor olmasıdır. Böyle bir durumda her iki process’de devam edebilmek adına birbirlerini beklemektedir. Bu bekleme çok uzun sürüp bitmeyeceği için de SQL Server aralarında maliyeti düşük olanını seçerek ilgili processlerden birini onlandırıp diğerinin devam etmesini sağlar ki bu process’lerden ... Devamını Oku »