Microsoft SQL Server hakkında yazılar
Bu makalede, SQL Server Trace Flag ne olduğunu, nasıl kullanıldığını ve bazı yaygın senaryolarda nasıl faydalı olabileceğini inceleyeceğiz. Trace Flag Nedir ? SQL Server’ın davranışını değiştiren ve çeşitli senaryolarda performansı artıran veya hata ayıklama sürecini kolaylaştıran özel ayarlar olarak tanımlanabilir. Kullanım amaçları genel anlamda kriz anında ihtiyaçlara göre Trace Flags’ler eklenip problemi çözmeye yönelik işlemler yapılabilir. SQL Server Trace Flag seçerken dikkatli olmak önemlidir. Yanlış bir Trace flag etkinleştirilmesi, beklenmedik davranış değişikliklerine veya performans sorunlarına neden olabilir. Bu nedenle, her Trace Flag etkilerini ve kullanım senaryolarını bilmek önemlidir. Trace Flag etkinleştirildikten sonra sistem üzerindeki etkilerini izlemek ve değerlendirmek de önemlidir. Trace Flag nasıl aktif edebiliriz. Bağzı Trace Flag’ ler Service Restart edildikten sonra devreye girecektir. Aktif etmek için; SQL Server Configuration Manager/ SQL Server Services/ SQL Server (InstanceName) Instance’a sağ tıklayıp Properties diyoruz ve Startup Parameters kısmına geliyoruz burada 3 tane System tarafından Default olarak gelen Trace Flag’ler bulunmaktadır. […]
“Not Synchronizing / Suspect” SQL Serer AlwaysOn mimarisinde bulunan sunucuların veri tabanlarında bu sorunun meydana gelmesinde birçok neden vardır. Bunlar; Ağ Sorunları: AlwaysOn mimarisinde, ana sunucu ve ikincil sunucular arasında veri senkronizasyonu için gerekli olan ağ bağlantısı sorunları. Disk Sorunları: Veri tabanı dosyalarının tutulduğu disklerde disk doluluğu, disk arızası gibi disk sorunlarının meydana gelebilir. Log Dosyası Sorunları: Veri tabanlarının log dosyalarının bozulması veya dolması durumu. Bekleyen İşlemler: Veri tabanında bekleyen bir işlem (örneğin, büyük bir sorgu veya bir yedekleme işlemi) diğer işlemleri engellemesi durumunda. Veri tabanı Bozulması: Veri tabanı dosyalarında veya yapılarında bozulma meydana gelmesi. Bakım Yetersizliği: Düzenli yedekleme, veri tabanı kurtarma işlemleri vb. gibi veri tabanı yönetimi için gerekli düzenli bakımların yapılmaması. Bu gibi durumlarda, genellikle SQL Server hata günlüklerine bakarak daha spesifik bir sorun tespit edilebilir ve ardından uygun çözüm yolları belirlenebilir. Biz bu makalede disk sorunu ile karşılaşacağımız için disk sorununun tespiti ve çözümü üzerine gideceğiz. Karşılaşabileceğimiz […]
Bir veri tabanını Always On Availability Group’a eklerken karşılaşmış olduğum “Password Required” durumunda yapabileceğiniz bir kaç adımdan bahsedeceğim. Öncelikle bu durumla şifrelenmiş veri tabanını Always On Availability Group’a eklerken karşılaşırsınız. Hangi veri tabanlarında şifreleme olduğunu aşağıda script yardımıyla görebilirsiniz. USE MASTER SELECT * FROM sys.symmetric_keys Şimdi gelelim veri tabanımızı Always On Availability Group’a eklemeye Yukarıda gördüğünüz yere veri tabanını uygulamış olduğunuz şifreyi girmeniz daha sonrasında refresh dediğinizde ilerlemenize izin verecektir. Peki şifremizi unuttuysak neler yapabiliriz 🙂 1- Master key’i drop edebiliriz. USE [DENEMEDB] GO DROP MASTER KEY 2- Master key şifresini değiştirebiliriz. ALTER MASTER KEY REGENERATE WITH ENCRYPTION BY PASSWORD=’YENİ_ŞİFRENİZ’ Her adımı denediniz fakat aşağıdaki gibi bir hata alıyorsanız ne yapmanız gerek? Msg 15329, Level 16, State 2, Line 1 The current master key cannot be decrypted. If this is a database master key, you should attempt to open it in the session before performing this operation. The FORCE option […]
Bu makalede partition left function kullanarak tablolarımızı partitionlı olarak create ederek verilerimizi bu şekilde dizayn etme adımlarını göreceğiz. Öncelikle partition açıklayalım; SQL Server ‘da, büyük tabloların performansını ve yönetilebilirliğini artırmak için tabloyu farklı bölümlere (partitions) ayırabilirsiniz. Bu bölümler genellikle bir tarih sütunu, Id sütunu veya başka bir ayırt edici anahtar temel alınarak yapılır. Partition, sorgu performansını artırabilir çünkü belirli bir veri kümesini sorgularken yalnızca ilgili bölüme erişilir veya ihtiyaç dahilinde sorgularını ilgili partition yönlendirerek sorgu maliyetini ciddi ölçüde azaltabilirsiniz ve bu da SQL engine daha az veri üzerinde çalışmasını sağlar. Ayrıca, veri yönetimi ve bakım görevlerini kolaylaştırır, çünkü eski verileri daha kolay arşivleyebilir veya silebilirsiniz. Şimdi de partition avantaj ve dezavantajlarına göz atalım; Partition Tablo Avantajları: Partition tablolar, belirli partition üzerinde işlem yaparak sorgu performansını artırabilir. Büyük veri kümelerini daha küçük ve yönetilebilir parçalara ayırarak veri yönetimi kolaylaştırılır. Veri bakımı ve yedekleme işlemleri daha hızlı ve etkili olabilir. Partition […]
Bu makalede partition right function kullanarak tablolarımızı partitionlı olarak create ederek verilerimizi bu şekilde dizayn etme adımlarını göreceğiz. Öncelikle partition açıklayalım; SQL Server ‘da, büyük tabloların performansını ve yönetilebilirliğini artırmak için tabloyu farklı bölümlere (partitions) ayırabilirsiniz. Bu bölümler genellikle bir tarih sütunu, Id sütunu veya başka bir ayırt edici anahtar temel alınarak yapılır. Partition, sorgu performansını artırabilir çünkü belirli bir veri kümesini sorgularken yalnızca ilgili bölüme erişilir veya ihtiyaç dahilinde sorgularını ilgili partition yönlendirerek sorgu maliyetini ciddi ölçüde azaltabilirsiniz ve bu da SQL engine daha az veri üzerinde çalışmasını sağlar. Ayrıca, veri yönetimi ve bakım görevlerini kolaylaştırır, çünkü eski verileri daha kolay arşivleyebilir veya silebilirsiniz. Şimdi de partition avantaj ve dezavantajlarına göz atalım; Partition Tablo Avantajları: Partition tablolar, belirli partition üzerinde işlem yaparak sorgu performansını artırabilir. Büyük veri kümelerini daha küçük ve yönetilebilir parçalara ayırarak veri yönetimi kolaylaştırılır. Veri bakımı ve yedekleme işlemleri daha hızlı ve etkili olabilir. Partition […]
Bu yazımızda DMV ve DMF serimizin 2.sine devam edeceğiz. Yazımızda sql server query execution sonuçlarını montior etme ve bunları nasıl anlamlandırabileceğimize bakacağız. Yazı sonunda hazır olarak çoğumuzun kullandığı bu DMV ve DMF’lerin nerede ve ne için kullanıldığını öğrenmiş olacağız. Bu seride Connection, Session ve Request bölümlerini inceleyeceğiz. Task ve Worker bölümleri operating system ile alakalı olduğundan dolayı bir sonraki bölümde onları ele alacağız. SQL Server bir session’ın process’i aşağıdaki gibi gerçekleşmektedir. Görsel – 1 Bu süreci detaylandırmak istersek adım adım aşağıda bunları ele alabiliriz. Sql Server’da connection yapıldıktan sonra unique olarak kendine özel bir session alır. Görsel – 2 session_id: Session’ın Id’si connect_time: Connection’ın gerçekleştirildiği tarih net_transport: SQL Server’a gerçekleştirilen bağlantı türü auth_scheme: Gerçekleştirilen bağlantının tipi client_net_address: Bağlantı gerçekleştiren Session’ın IP bilgisi num_reads: Session’ın yapmış olduğu okuma sayısı num_writes: Yapmış olduğu yazma sayısı last_read: Yapılan son okumanın tarihi last_write: Yapılan son yazmanın tarihi Görsel – 3 ve Sql Server […]
Bu başlık altında SQL Server Performans tuning, monitoring, optimizasyon ve teşhis için kullanılan DMO (Dynamic Management Objects) olarak adlandırılan DMV (Dynamic Management Views) ve DMF’ler (Dynamic Management Functions) için serinin ilkine bakacağız. SQL Server 2005 öncesinde bunları kendi içinde tablolar ile yapmaktaydı 2005 ve sonrasında bunları DMV ve DMF ile sunmaya başladı. Özellikle sistemde bir sorunla karşılaştığımızda bunu adreslemek istediğimizde ve çözüm için bize hint verebilecek en önemli yapı taşları DMV ve DMF’lerdir. Bu iki yapı doğru okunabilirse ve sorunu adreslemek ve çözmek için bizi iyi bir rehber olacaktır. Dynamic Management View (DMV): Table gibi objectlerdir ve view olarak adlandırılırlar. Select komutu ile bu viewları okuyabiliriz. Dynamic Management Function (DMF): Input parametresi alarak verilen bu parametreye göre sonucu bize döndürecektir. Kullanımı esnasında CROSS APPLY ile function kullanımı sağlanmaktadır. SQL Server’da, Server ve Database kapsamında 2 tür DMV ve DMF vardır. Server kapsamında olanlar, server’a ilişkin bilgileri verir ve bu objelerin […]
Service Principal Name (SPN) nedir? Bu yazımızda Service Principal Name (SPN) hakkında konuşacağız. Active Directory ve SQL Server arasında Kerberos kimlik doğrulaması için kullanılan benzersiz bir tanımlayıcıdır. SQL Server instance’ının hangi Windows hesabı altında çalıştığını belirlemek için kullanılır. Kerberos kimlik doğrulaması, istemci ve sunucunun aynı Windows etki alanında veya güvenilen etki alanlarında olmasını ve SPN’nin Active Directory ile kaydedilmiş olmasını gerektirir. SPN kaydedilmediğinde veya kayıt başarısız olduğunda, Windows güvenlik katmanı hesabı SPN ile ilişkilendiremez ve Kerberos kimlik doğrulaması kullanılmaz. Kerberos nedir dediğimizde ise, Windows 2000’den itibaren Active directory etki alanları için varsayılan kimlik doğrulama protokolüdür. Simetrik şifreleme tekniği kullandığından dolayı NTLM’den daha güvenilir ve daha hızlıdır. Kerberos Authentiction’ın bize faydalarına bakarsak eğer, Client ve server arasında doğrulama yaparak güvenli bir şekilde doğrulama yapmaktadır. Biz buna Mutual Authentication diyoruz. Doğrulama yaparken server ve client arasında ticket alışverişi yapar ve bu alışveriş kriptoludur bu şekilde daha güvenli hale getirir. Bu durumu Secure […]
Bu makalede sunucumuzda Event Viewer Windows logs arşivlenmesinin adımlarını göreceğiz. Event Viewer’da bulunan Windows logs altında bulunan Application, Security, Setup, System, Forwarded Events ilgili katmanlar hakkında sunucu loglarına erişmemize olanak sağlamaktadır. Ancak log kayıtlarının belirli boyutlara ulaştığında artık en eski log kaydı silinerek yerine yeni log kaydı kaydediliyor bu bir quee mantığı olarak ilerliyor yani ilk giren ilk çıkar Windows logs altında ise ilk yazılan ilk silinir şeklinde anlayabiliriz bu quee mantığını. Görsel-1 Peki sunucu içerisinde bulunan Windows logs hangi boyuta ulaştığında silinerek yerine yeni kayıtlar yazıldığını nasıl kontrol ederim diye merak ediyorsanız hemen bunun adımlarına geçelim; İlgili Log üzerine gelerek sağtık > Properties > Maximum log size Bu alan sizin log dosyanızın ulaşacağı maksimum boyutu göstermektedir. Maksimum boyuta ulaşıldığı takdirde en eski log kaydı silinerek yerine yeni log kaydı kaydediliyor, quee mantığı olarak ilerliyor yani ilk giren ilk çıkar. Bunu siz kendi ortamlarınızın konfigürasyon ayarlamalarına göre boyutu artırabilir azaltabilirsiniz. […]
Bu yazımızda sql server’da arka planda kullanılan, kaynak yönetimini ve sorgularımızı doğrudan ilgilendiren “Cache Plan” hakkında bilgileri ele alacağız. SQL Server’da bir sorgu ilk kez çalıştırıldığında derlenir (compile) ve query için bir plan oluşturulur. Bu plan sayesiyle sorgu hangi adımları izleyeceğini plana göre gerçekleştirir. Ve bu plan SQL Server’da Plan Cache içerisinde depolanır. Görsel -1 Plan cache içerisinde depolanan planlar sayesinde query tekrar geldiğinde yeni bir plan oluşturmasına gerek kalmaz ve aynı planı kullanarak sonucu geri döndürür. Bu sorgu planının ön bellekte kalma süresi sorgunun ne kadar kullanıldığı ile alakalıdır. Daha sık kullanılan sorgular plan cache’te daha fazla kalır. Plan Cache içerisinde tutabileceğim maximum plan sayısı 160.036. SQL Plans, Object Plans, Bound Trees, Extended SPs her biri için bu rakam 40.009’dur. Yoğun ad hoc sorguları SQL Plan bucket sayımızı arttırabilir ve bu durum SOS_CACHESTORE spinlock contention yaşamamıza neden olabilir. Bu durumun üstesinden -T174 Trace flag ekleyerek sayıyı 4 katına çıkarabiliriz. […]