Perşembe , 19 Temmuz 2018

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 »

SQL Serverda Bilinçsiz Tür Dönüşümü İşleminin Performansa Etkisi

Benzer olmayan veri tipine sahip verileri karşılaştırmak için SQL Server’ın öncelikle verileri ortak bir türe dönüştürmesi gerekir. Tip dönüşümü iki şekilde yapılabilir. İlk olarak Cast, Convert ve Parse gibi fonksiyonları kullanarak yapılan bilinçli tür dönüşümleri(Explicit Conversion) iken diğer türü ise biz açıkca belirtmememize rağmen SQL Server’ın veriler üzerinde yaptığı bilinçsiz tür dönüşümü (Implicit Conversion) işlemidir. Her iki tür dönüşümü de ... Devamını Oku »

Veritabanının Farklı Isimle Restore Edilmesi

SQL server sık karşılaştığım sorulardan bir tanesi sistemde var olan bir veritabanının farklı isimle kopyasını nasıl oluşturabileceğiydi. Aynı soruyla bir forumda da karşılaştıktan sonra bu konuyu yazmam gerektiği kanaatine vardım. Öncelikle elimizde var olan bir sql server backup dosyası restore edilirken aksi belirtilmediği sürece SQL Server backup alınırken kullanılan data ve log dosyaları ile aynı lokasyonda aynı isimle yine data ... Devamını Oku »

Transactional Replikasyonun Backup Kullanilarak Başlatilmasi

Varsayılan olarak iki SQL server arasında replikasyon kurduğunuzda kurulum aşamasındaki ilk senkronizasyon yani her iki veritabanının eşitlenmesi işlemi Snapshot Agent tarafından yapılır. Snapshot Agent Publisher üzerindeki veritabanının Snapshot’ını alarak ilgili Subscriber’lara gönderir. Fakat veritabanı boyutunun büyük olduğu durumlarda Snapshot alınması ve Subscriber’a gönderilmesi çok uzun zaman almaktadır. Bu sebeple özellikle büyük boyutlu veritabanlarını kullanarak tanımlanacak replikasyonlarda SnapShot kullanmak yerine veritabanının ... Devamını Oku »

Farklı Windows kullanıcı ile SSMS Çalıştırma

SSMS(SQL Server Management Stdio) aracını kullanarak Windows Authentication ile SQL Servera bağlanmak istediğimizde kullanıcı seçmeden o an Windows’a login olmuş kullanıcının bilgileri ve yetkileriyle bağlanmamız gerekir. Örneğin varsayılan halinde SSMS aracını açıp Windows Authentication seçtiğimizde karşımıza aşağıdaki gibi bir ekran gelecektir. Yukardaki ekranda gördüğümüz gibi Windows Authentication seçtiğimiz zaman kullanıcı adı ve şifremizi değiştiremiyoruz. Fakat bazı durumlarda Windows’a login olmuş ... Devamını Oku »

Connection String’lerde Kullanılan Persist Security Info ve Integrated Security Özelikleri

Programatik olarak SQL Server gibi bir veri kaynağına bağlanma ihtiyacımız olduğunda veri kaynağına ait bağlantı bilgilerinin tutulduğu objelere Connection String yani bağlantı cümleleri diyoruz. Connection String içinde SQL Servera bağlanmak için gereken ve hassas(sensitive) veri dedğimiz kullanıcı adı ve password bilgilerini de barındırabilmektedir. Bu nedenle Connection String oluştururken hassas verilerin güvenliğinin sağlanması için Persist Security Info ve Integrated Security adında ... Devamını Oku »

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 »