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 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 :) 

Çalışmalarımız devam ediyor

Merhaba MastersOfSql Okuyucuları;

Bildiğiniz üzere Galaksinin yaramaz ufaklığı Yoda güçle birleşti ve aramızda pek olmuyor bununla birlikte ara sıra ruhlar aleminden gelip buralar ne alemde diye bakıyor :):) bakarsınız eğitimine çok katkısı olmasa da ünlü şu sözüyle "Oldun sen bir Jedi şövalyesi olsun sana hayırlı uğurlu" diyerek Jedi lığını onayladığı "Luke Skywalker" da aramıza katılır :) artık geldiğinde Aydınlık tarafta mı yoksa Karanlık tarafta mı yazar bilemiyoruz onu zaman gösterecek ve belki de büyük sürpriz "zor zar :):) " ikna etmeye çalıştığımız büyük bir güç daha var O bir Prenses O bir BI ustası O bir ... 























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

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...