Masters Of SQL

SQL Server ile ilgili bilgiler, hayata dair paylaşımlar ve birazda eğlence tabii...
Deadlock’sız, Blocking’siz, Contention’sız günler diliyoruz :)
Sysadmin sizinle olsun

SQL Server Data Classification & KVKK (GDPR)

Merhaba MastersOfSql Okuyucuları;

Ya hani biz Jedi'lerdik, hani biz Aydınlık taraftık, hani biz Karanlık güçlere karşı savunmacıydık nerden çıktı şimdi bu KVKK. Aslında tam da kendimizi tanımladığımız yerde duruyor KVKK :) Karanlık güçlerden gelip bilgilerimizi alacaklara karşı :), peki KVKK (6698 Sayılı Kişisel Verilerin Korunması Kanunu) nedir? Bunun için yazılmış 100 lerce hukuksal terimler içeren makale ve yazılar bulabilirsiniz mesela Resmi olarak kurulan Kişisel Verileri Koruma Kurumu linkinden veya KVKK Platformu'n dan okuyup öğrenebiliriz. Bu kanunları çok dikkatli okumanızı tavsiye ederim ışın kılıçları çok keskin Bizim konumuz KVKK'nın detayları değil onun içinde ayrılmış olan "Veri Sınıflandırma" bölümü.

Peki biz gelelim asıl konumuza arkadaş biz SQL (siküel :) ) ci değil miydik? bizene milletin verilerinden, son günlerde moda olan soy ağacından (Sene 2018 ileride okuyanlar ne yazmış bunlar demesinler :)), anne kızlık soyadından veya kredi kartı bilgisinden işte yıllarca kaçtık şimdi tam ortasında bulduk kendimizi ne işle uğraşıyoruz "Veri Tabanı" peki kanun ne diyor? "Kişisel Verilerin Korunmasını" (Kişisel Bilgilerin deselerdi kaytarırdık belki :)) evet ne kadar espri yapsak da bundan kaçışımız yoksa o zaman neler yapmamız gerektiği konusunda ilerleyelim.

Microsoft SQL Server 2017 ile bildiğiniz üzere kullandığımız Managment Studio'yu ayrı bir paket olarak indirmemize imkan sağladı bu hem SP çıkmasını azalttı hem de devamlı gelişen ve değişen SQL dünyasında daha hızlı ilerlememizi sağladı en son çıkan SSMS'i burdan indirebilirsiniz. Download SQL Server Management Studio (SSMS) Artık bizim dünyamıza geri geldik :)

Öncelikle kendi kullandığımız SSMS'in versiyonunu bulalım bunun için
  • Kullandığımız SSMS'i açalım
  • Help >>> About menüsüne basalım




  • Açılan popup da versiyonu görelim




Gördüğünüz üzere bende 17.5 versiyonu var. Sizlerde bu versiyonu kurduktan sonra asıl konumuz olan "Veri Sınıflandırmaya" geçebiliriz.

SQL Server veritabanınızı sınıflandırmak için:
  • SQL Server Management Studio'da (SSMS) SQL Server'a bağlanın.
  • SSMS üzerinde, sınıflandırmak istediğiniz veritabanını sağ tıklatın ve Tasks >> Classify Data ... seçeneğini tıklayın.




  • Data Classification sınıflandırma motoru veri tabanını tarayarak kolon isimlerinden hassas veriler içeren sütünları sınıflandırarak listeler.


SQL Server'ın önerileri listelenir bu listeden otomatik olarak gelenlerden seçmek istediklerimizi direk seçebiliriz ayrıca DropDown içerisinden de "Information Type" ve "Sensitivity Label" bilgilerini de değiştirebiliriz. Seçtiğimiz verileri "Accept selected recommendations" butonuna tıklayarak ekleyelim..

Bu sistemle SQL'in otomatik olarak sınıflandırdıklarını eklemiş olduk bununla beraber Menüde bulunan "Add Classification" butonuna basarak da Manuel olarak ekleyeceğimiz veriler için bir tablo açılmasını sağlarız.

Sağ tarafta açılan tablo içerisinden seçimlerimizi ayarladıktan sonra "Add" butonuna basıyoruz.

Diğer seçimlerimizi de bitirdikten sonra listemiz son halini almış oluyor. Artık "Save" botunan basarak "Data Classification" işini bitirebiliriz.

Peki tüm yaptıklarımızı rapor halinde nasıl alacağız. SSMS üzerinde, sınıflandırmak istediğiniz veritabanını sağ tıklatın ve Reports >> Standart Reports >> Data Classification seçeneğini tıklayın. Raporumuz ekrana gelecektir.

Buradan excel, pdf, word gibi ortamlara export edebiliyoruz.

KVKK ve Veri Sınıflandırma işleri şimdilik başlangıç seviyesinde bununla birlikte bir noktadan başlamak gerekiyor Sith generalleri geldi mi kurtuluşumuz olmayabilir. :)

Güzel haberlerde görüşmek üzere :) 

SQL Server IO Test

Sevgili MastersOfSQL severler, ilk yazımla sizlere merhaba demek istiyorum.

Nedir bu IO, input – giren, output’da çıkan data diyebiliriz. SQL Server’ınıza yazılan ve okunan dataların giriş ve çıkışlarını saniyede en fazla ne kadar yapabildiğini gösteren bir değerdir. Önemli midir? Evet önemlidir 😊

Neden önemlidir kısaca anlatmaya çalışalım. Storage veya disk alt yapınız, SQL Server’ınıza gelen çılgın SELECT cümlelerine cevap veremediği zaman IO sebebiyle beklemeler yaşarsınız. Tabiki burada hemen sorgularınızı gelişi güzel yazmamanız gerektiğini düşünmeye başlamanız gerekir.

Her bir SELECT sorgunuzun bir IO değeri olduğunu unutmayın, buna nasıl bakarım derseniz, sorgunuzun başına;

SET STATISTICS IO ON parametresini yazarak, sorgunuz çalıştıktan sonra ne kadar IO yaptığına dair değerleri görebilirsiniz.

Şimdi gelelim SQL Server sunucunuz üzerinde bu IO testleri nasıl yapılıyor bir bakalım. Daha önceden SQLIO adında bir program kullanıyorduk, Microsoft bunu DskSpd programı ile değiştirdi. Hem fiziksel hem de sanal makinalarda test için kullanılabilir.

Programı aşağıdaki linkten indiriyoruz;

https://gallery.technet.microsoft.com/DiskSpd-a-robust-storage-6cd2f223

Komut satırından çalışan bir programdır, bu yüzden direk C dizini altına DskSpd adında bir klasör açalım

C:\DskSPd

DiskSpd programı komut satırından çalışan bir program olduğundan, komut satırını yönetici olarak açmakta fayda var.

Ufak bir hatırlatma, SQL datalarınızın bulunduğu diskleri 64k unit size olarak formatlamayı unutmayın. Neden 64k formatlanıyor diye merak edenlere, başka bir makalede bunu anlatacağım.

DiskSpd’de kullanacağımız parametrelere göz atalım;

Örnek kod: DiskSpd.exe -c100G –d300 -r -w0 -t8 -o8 -b8K -h -L E:\testdosyasi.dat

-          c (Test dosyası boyutu 100 gb)

-          d (Test süresi 300 saniye)

-          r (Random IO, eğer r parametresi yazılmaz ise ardışık olarak testi yapar)

-          w (Testteki write yüzdesini belirler, w25 w50 gibi, w0 olarak bırakılırsa %100 read olarak test yapar)

-          t (Worker thread sayısını belirler, Core sayısına göre bu değeri değiştirmekte fayda var)

-          o (Outstanding’İn den kısaltmasını alıyor, her worker thread’e bağlı IO kuyruğu oluşturmak için kullanılıyor.

-          b (Blok size değeri veriliyor, her page 8kb olduğundan, 8kb veya 64k kullanılıyor)

-          h (İşletim sistemi seviyesinde ve donanım cachingi iptal etmek için kullanıyor, SQL server testinde bu parametre önemli)

-          L (test sırasındaki latency’i yakalıyor)

-          E:\testdosyasi (Test sırasında kullanılacak dosyanın yolunu belirtiyoruz, hangi disk biriminde test yapacaksanız ona göre değiştirmeniz gerekiyor)

Parametrelerden sonra yukardaki örnekte olan komutu çalıştıralım.


IO -1

3gb lık testfile oluşturmuştum, 8 thread üzerinde IO’ları ayrı ayrı gösteriyor, toplamda bu disk üzerinde %100 Read testinde Toplam Read IO’su 31.000 olarak çıktı.

Şimdi de %30 Write yapan bir test yapalım

DiskSpd.exe -c3G –d300 -r -w30 -t8 -o8 -b8K -h -L E:\testdosyasi.dat

Test ile bilgileri ilk olarak veriyor, software cache ve hardware write cache disable durumda. Read ve write değerleri, block size, random IO mu yoksa ardışık IO mu yapacağını Input parameters bölümünde görebilirsiniz. Bundaki amaç farklı parametreler kullanıp yapacağınız testleri kaydedip karşılaştırmak için kullanabilirsiniz.


IO -2

8 Corelu bir makinada bu testi yaptım, 8 thread olarak çalıştı, ve 300 saniye boyunca tüm Cpu’lar %100 olarak çalıştı, test sonuçlarının en başında Cpu yüzdelerini de görebiliyoruz. Eğer tüm cpular bu test sırasında çalışmıyor ise, thread kısmını kontrol etmelisiniz.


IO - 3

Şimdi read ve write IO larına baktığımızda, aslında bu disklerin toplam 30bin IO değeri verdiğini görüyoruz, thread ve test dosyası ile biraz daha oynasak bile, aşağı yukarı bu değerleri göreceğiz.


IO - 4

Son olarak da latency değerlerine bakalım, eğer sizde de bu kadar yüksek latency çıkıyorsa sotrage’inizde bir sorun vardır 😊 ben bu testi ssd’li bir laptopta yaptığımdan bu değerlerin çıkması gayet normal.



IO – 5

IO testlerimizi yaptık, storage’imizin ne kadar IO vereceğini artık biliyoruz, mevcut yapınızdaki durumu yukardaki testler ile artık görebileceksiniz. SQL Server’ınızın IO ları ile altyapınızın IO’larını karşılaştırıp, IO ihtiyacınız var mı yok mu tespit edebilirsiniz. Mevcut durum bu, peki yeni bir server ve storage alırken size kaç disk lazım olacak? Storage planlamasını neye göre yapıyorsunuz? Maalesef bu planlama ver abi ordan 20 disk, 2 de SSD takalım hız olur diyerek geçiştiriyorlar. Günün sonunda yanlış bir yatırımı kucağınızda buluyorsunuz 😊

Son paragraftaki soruların cevapları için bizi takip etmeye devam edin 😊 Storage planlaması hakkında daha bir makale yazacağım.

Obi-Wan Kenobi olarak ilk yazımda umarım faydalı olmuşumdur. Üstadın dediği gibi “Güç sizinle olsun”

SQL Server Configuration Manager Cannot connect to WMI provider Hatası

Merhaba MastersOfSql Okuyucuları;

Gün geçmiyor ki gittiğimiz bir müşteride hatayla karşılaşmayalım :):) Herşey yolunda gitse biz nasıl kazanacağız değil mi? iş te bunlar hep Dark Side ların yüzünden :) 

Aslında yapmak istediğimiz SQL Server'ın Database Engine servis kullanıcısı değiştirmekti (bunun önemini ayrıca yazacağız) her DBA gibi yapmamız gereken şekilde giderek Start --> Configuration Manager diyoruz ve hooop karşımızda bir hata; 

Cannot connect to WMI provider. You do not have permission or the server is unreachable. Note that you can only manage SQL Server 2005 and later servers with SQL Server Configuration Manager. Invalid class [0x80041010]

haydaaa evet bu hatayı biliyoruz daha öncede karşılaşmıştık ve bir kaç çözümü vardı bunları deniyoruz bununla birlikte nafile :( o zaman nöronlarımızı biraz daha kurcalayarak çok eski bilgilerimize başvuralım diyerek kara kaplı USB mizi search etmeye başvuruyoruz ve yıllar öncede çözdüğümüz çözümü buluyoruz aslında bu daha çok SQL Server upgrade olunca olurdu peki bu sefer niye olmuş diye bakarken evet sunucu upgrade olmuş.

O zaman kollarımızı sıvayarak işe koyulalım.

Yapmamız gereken ilk iş bozulan "mof" dosyasının yolunu bularak bunu tekrar register etmektir.  Bizim sunucumuz SQL Server 2014 e upgrade edildiğini bildiğimizden dolayı aşağıdaki komutu Run a yazarak çalıştırıyoruz 

mofcomp "C:\Program Files (x86)\Microsoft SQL Server\120\Shared\sqlmgmproviderxpsp2up.mof"
Sunucunuzun versiyonuna göre "120" yazan yeri değiştirerek bunu yapabilirsiniz.
Microsoft SQL Server Versiyon   Build Number
Microsoft SQL Server 2017          140
Microsoft SQL Server 2016          130
Microsoft SQL Server 2014          120
Microsoft SQL Server 2012          110
Microsoft SQL Server 2008 R2       100
Microsoft SQL Server 2008          100
Microsoft SQL Server 2005           90


Tekrar SQL Server Configuration Manager ı açtığımızda bu sefer açıldığını göreceksiniz. 

SQL Server 2012 den 2014 e upgrade yapılmış.



Bir konumuzu da böylece bitirmiş olduk şimdilik tattoine gezegenine geri dönüp biraz Sith avlayalım :) 

Güç sizinle olsun...