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

The learning never ends

Merhaba MastersOfSql Okuyucuları;

Usta Yoda'nın kendisi burada olmasa da öğretilerini unutmamamız lazım değil mi? Belki bu söz O'na ait değil :) yine de ifadesi güzel değil mi? "The learning never ends"



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 2017 CU3 Çıktı

Merhaba MastersOfSql Okuyucuları;

Tüm yazılımlarda olduğu gibi Microsoft da SQL Server için belli aralıklarla SP (Services Pack) veya CU (Cumulative Update) çıkartarak yaptığı düzenlemeleri yayınlıyor. SQL Server'ın tüm versiyonları için SP ve CU ları en hızlı bu site üzerinden takip edebilirsiniz.SQL Server Builds

SQL Server'ı en son versiyonu olan 2017 için de 4 Ocak 2018 de bir CU3 yayınlandı. Microsoft ekibinin bu CU da önemli bir uyarısı var! Hayatımıza renk katmış olan Query Store da tutulan tüm Execution Plan ların silinmesi gerektiğidir.


SET NOCOUNT ON;
DROP TABLE IF EXISTS #tmpUserDBs;

SELECT [database_id], 0 AS [IsDone]
INTO #tmpUserDBs
FROM master.sys.databases
WHERE [database_id] > 4
 AND [state] = 0 -- must be ONLINE
 AND is_read_only = 0 -- cannot be READ_ONLY
 AND [database_id] NOT IN (SELECT dr.database_id FROM sys.dm_hadr_database_replica_states dr -- Except all local Always On secondary replicas
  INNER JOIN sys.dm_hadr_availability_replica_states rs ON dr.group_id = rs.group_id
  INNER JOIN sys.databases d ON dr.database_id = d.database_id
  WHERE rs.role = 2 -- Is Secondary
   AND dr.is_local = 1
   AND rs.is_local = 1)

DECLARE @userDB sysname;

WHILE (SELECT COUNT([database_id]) FROM #tmpUserDBs WHERE [IsDone] = 0) > 0
BEGIN
 SELECT TOP 1 @userDB = DB_NAME([database_id]) FROM #tmpUserDBs WHERE [IsDone] = 0

 -- PRINT 'Working on database ' + @userDB

 EXEC ('USE [' + @userDB + '];
DECLARE @clearPlan bigint, @clearQry bigint;
IF EXISTS (SELECT [actual_state] FROM sys.database_query_store_options WHERE [actual_state] IN (1,2))
BEGIN
 IF EXISTS (SELECT plan_id FROM sys.query_store_plan WHERE engine_version = ''14.0.3008.27'')
 BEGIN
  DROP TABLE IF EXISTS #tmpclearPlans;

  SELECT plan_id, query_id, 0 AS [IsDone]
  INTO #tmpclearPlans
  FROM sys.query_store_plan WHERE engine_version = ''14.0.3008.27''

  WHILE (SELECT COUNT(plan_id) FROM #tmpclearPlans WHERE [IsDone] = 0) > 0
  BEGIN
   SELECT TOP 1 @clearPlan = plan_id, @clearQry = query_id FROM #tmpclearPlans WHERE [IsDone] = 0
   EXECUTE sys.sp_query_store_unforce_plan @clearQry, @clearPlan;
   EXECUTE sys.sp_query_store_remove_plan @clearPlan;

   UPDATE #tmpclearPlans
   SET [IsDone] = 1
   WHERE plan_id = @clearPlan AND query_id = @clearQry
  END;

  PRINT ''- Cleared possibly affected plans in database [' + @userDB + ']''
 END
 ELSE
 BEGIN
  PRINT ''- No affected plans in database [' + @userDB + ']''
 END
END
ELSE
BEGIN
 PRINT ''- Query Store not enabled in database [' + @userDB + ']''
END')
  UPDATE #tmpUserDBs
  SET [IsDone] = 1
  WHERE [database_id] = DB_ID(@userDB)
END

SQL Server 2017 CU3 de değişenleri görmek için tıklayınız.

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