Sql Server Management Studio Performans Raporları

SQL SERVER MANAGEMENT STUDIO PERFORMANS RAPORLARI

    Sql Server Performansı her zaman öncelikli konular arasında olmuştur. Sql Server yapısı itibari ile, cpu, memory ve disk I/O’larını yüksek seviyede tüketmektedir. Bu sebeplerden dolayı Sql Server doğru yapılandırılmadığı ve izlenmediği durumlarda, performans kaybı yaşanmaktadır.

     Bu makalede sizlere, Dynamic Management View’ler ile elde edebileceğiniz verileri, Sql Server Management Studio üzerinde nasıl rapor haline getirebileceğinizi anlatacağım. Sql Server performansını izlemek için birçok 3. Parti yazılım mevcuttur, bu yazılımlar genellikle ücretlidir. Sql Server Performance Dashboard raporlarını ücretsiz olarak indirebilirsiniz. Sql Server Management Studio’da görebildiğimiz bu raporları, Sql Server Reporting Services üzerinden de çalıştırabilmekteyiz, Reporting Services Web arayüzüne bu raporları nasıl yükleyeceğimizi ve daha sonra bu raporlar periyodik olarak mail ile nasıl gönderebileceğimize değineceğiz.

İlk olarak, Microsoft’un ücretsiz olarak sunduğu Sql Server Performance Dashboard raporunu aşağıdaki linkten indiriyoruz.

https://www.microsoft.com/en-us/download/details.aspx?id=29063

    Kurulum dosyasını çalıştırarak kurulumu başlatıyoruz, basit bir kurulumu var, next – next ile kurulum işlemini tamamlıyoruz.

Rapor dosyalarının kurulduğu klasör bilgisi önemli, bu dosyaları daha sonra SSMS içine ekleyeceğiz.

Rapor kurulumu tamamlandıktan sonra, Sql Server Management Studio’yu açıyoruz. Instance adı üzerinde sağ klik yaparak, Reports – Custom Report’u açıyoruz.

Open File ekranından Tools – Performance Dashboard altına kaydedilen raporumuzu açıyoruz.

Gelen uyarı ekranına Run diyerek raporu çalıştıryoruz.

Raporu direk eklediğimizde aşağıdaki uyarı karşımıza geliyor.

Report defiinition language ile yapılan bu rapor, Reporting Services ile uyumlu çalışmaktadır. İstenirse Reporting Service ile bu rapor alınabilir. Raporun çalışması için Sql Server dizini altına kurulan Perfomance Dashboard içindeki Setup.sql scriptini çalıştırmamız gerekiyor.

Script üzerine çlft tıklayarak, SSMS üzerinde Execute diyerek scripti çalıştırıyoruz.

Raporu Custom Reports – Performance Dashboard Main kısayolu ile açıyoruz. Aşağıdaki gibi karşımıza raporumuz geliyor.

Raporun üstünede iki tane grafik var, soldaki CPU genel kullanım oranını göstermekte, sağdaki ise bekleyen isteklerin hangi sebeplerden dolayı beklediğini gösteren bar grafik.

CPU grafiğindeki barlara tıkladığımızda, CPU kullanımındaki detaylara bizi yönlendirmektedir. Barlara tıkladığımızda aşağıdaki gibi bir hata alabiliriz.

Bu hatayı sub-report’un reginol ayarlardan dolayı çalışmadığı için alırız. Time verilerini Datatime yerine nvarchar veri tipinde aldığı için bu hatalar meydana gelmektedir. Hatayı düzeltmek için aşağıdaki scripti çalıştırmamız gerekiyor.

USE msdb

GO

ALTER
PROCEDURE MS_PerfDashboard.usp_Main_GetCPUHistory

as

begin

    declare @ms_now bigint


    select @ms_now = ms_ticks from
sys.dm_os_sys_info;

    select
top 15 record_id,

        CONVERT(NVARCHAR(30),
dateadd(ms,
1 *
(@ms_now [timestamp]),
GetDate()),121 )as EventTime,

        SQLProcessUtilization,

        SystemIdle,

        100 SystemIdle SQLProcessUtilization as OtherProcessUtilization

    from (

        select

            record.value(‘(./Record/@id)[1]’, ‘int’)
as record_id,

            record.value(‘(./Record/SchedulerMonitorEvent/SystemHealth/SystemIdle)[1]’, ‘int’)
as SystemIdle,

            record.value(‘(./Record/SchedulerMonitorEvent/SystemHealth/ProcessUtilization)[1]’, ‘int’)
as SQLProcessUtilization,

            timestamp

        from (

            select
timestamp,
convert(xml, record) as record

            from
sys.dm_os_ring_buffers

            where ring_buffer_type =
N’RING_BUFFER_SCHEDULER_MONITOR’

            and record like
‘%%’)
as x

        )
as y

    order
by record_id desc


end

GO

Şimdi CPU grafiğindeki barlara tıkladığımızda detay ekranı karşımıza gelmektedir.

Wait Category grafiğindeki en yüksek beklemeyi yapan bar veya barlara tıklayarak bekleme nedenlerini incelebiliriz.

Query Text alanında sorguların üzerine tıkladığımızda, bize sorguların query planlarını vermektedir, eğer sorguda eksik bir index var ise, bunun bilgisini ve yeni index oluşturmak içinde hazır scriptini sunmaktadır.

Dashboard’un sol alt tarafında bulunan, Current Activity bölümünde, kullanıcı istekleri ve kullanıcı oturumları hakkında bilgi vermektedir. User Requests ve User Session linklerine tıkladığımızda detay ekranları karşımıza gelmektedir.

Anlık kullanıcı oturumlarının raporu için User Sessions bölümüne tıklamanız gerekmektedir.

Dashboard’un sağ alt köşesindeki Historical Information bölümü bulunmaktadır, bu bölümünde bekleme nedenleri, I/O İstatistikleri, CPU kullanım oranları, aktif oturumlar ve veritabanları hakkında bilgiler vermektedir.

Waits alt raporunda, bekleme nedenlerini grafiksel olarak göstermektedir.

Alt tarafında bulunan Wait Category de matrix rapor bulunmaktadır, bekleme kategorilerinin detaylarını buradan görebilirsiniz.

Historical I/O Statistics raporunda, veritabanlarının ne kadar I/O tükettiğini görebilirsiniz, okuma ve yazma değerlerine göre sıralama yapılabilmektedir.

Expensive Queries bölümünde, en fazla CPU tüketen, Logical read, logical write, fiziksel okuma ve CLR zamanına göre sorguları getirmektedir.

Miscellaneous Information raporlarında, Active Traceler, Active Xevent Sessionları, Veritabanlarının genel bilgileri ve Missing Indexler hakkında raporlar bulunmaktadır. Missing Index raporunda, Indexler hakkında bilgilerin yanı sıra, missing olan indexlerin oluşturulması için scriptini de raporda vermektedir.

Performans Raporlarının Reporting Service Üzerinden Alınması

    Sql Server Performans raporları Management Studio üzerinden alınması için, raporun manuel tetiklenmesi gerekiyor. Belli bir süre geçtikten sonra bu raporlar unutulmaktadır. Management Studio’daki raporlar RDL – Report Definition Language ile yapıldığından, Sql Server Reporting Service ile birebir uyumlu raporlardır.

    Reporting Service ile uyumlu olan bu raporları, kendi Reporting Service’imizi üzerine yükleyebilir, bu rapolar Reporting Service’in web arayüzünden görebiliriz. Diğer avantajı da, raporları günlük, haftalık veya aylık olarak istenen kullanıcılara mail olarak gönderebiliriz. Böylelikle, Sql Server Performansı gibi önemli raporların sürekli bildirimlerini yapabiliriz.

    Reporting Services kurulumu ve konfigürasyonunu daha önceki makalelerimizde işlemiştik. Sisteminizde Reporting Service kurulu olduğunu varsayarak anlatmaya devam edeceğim. İlk olarak Visual Studio Data Tools programını açıyoruz. Boş yeni bir proje açıyoruz.

New Project ekranında, boş Report Server Project’i seçiyoruz.

Name kısmına, rapor projesinin adını yazıyoruz. Reporting Services web sitesinde, proje klasörüne verilen isim buradan gelmektedir.

Boş bir rapor projesi açtık, Visual Studio Data Tools ana ekranın sağında bulunan, Solution Explorer bölümündeki, Reports klasörüne sağ tıklayarak performans raporumuzu ekleyeceğiz.

Reports – Add – Existing Item’e tıkıyoruz

Add Existing Item klasör penceresinden Dashboard raporumuzu seçip ekleyeceğiz. Raporumuz Program Files x86/Microsoft Sql Server/110/Tools/Perfomarnce Dashboard klasörü altındaydı, bu klasöre gelip performance_dashboard_main.rdl dosyasını seçip Add diyerek rapor projemize ekliyoruz.

Dashboard raporundaki, alt raporların hepsi hidden dosyalardır, bu dosyaların özelliklerine girip hidden özelliğini kaldırmanız gerekmektedir. Dashboard raporunun ana sayfasında, alt raporlara linkler verilmiştir, link verilen alt raporların, rapor projesine eklenmesi gerekeceği için hidden özelliklerini kaldırmanız gerekmektedir.

Performance Dashboard raporumuz Solution Explorer ekranımıza geldi, rapor üzerinde sağ tıklayarak Open diyoruz.

Rapor design ekranında açıldı, sol tarafta bulunan Report Data bölümünde raporun DataSource’u ve Datasetleri de gelmiş oldu.

Raporun çalışması için, ilk olarak Data Source yani veri kaynağını ayarlamamız gerekiyor. Raporun hangi Sql Server’daki bilgilerini getireceğiniz belirtmemiz gerekmektedir. Eğer birden fazlla Sql Server için raporu almak istiyorsanız, Raporun bir kopyasını proje bazında yaparak, sadece Data Source’un da ilgili Sql Server’ı ayarlamanız yeterli olacaktır.

Data Source’da, Sql Server’ımızın bağlantı ayarlarını gireceğiz, bunu için DataSource1 sağ klik properties ekranını açıyoruz.

Rapor Sql Server içinde çalışması için Shared Data Source olarak ayarlanmış, bu ayarı Embedded Connection olarak değiştiriyoruz. Ardından Edit’e tıklayarak bağlantı özelliklerini yapıladıracağız.

Edit ile Connection Properties ekranı açılıyor, bu ekranda Server name kısmına Sql Server’ın adını veya Ip adresini yazıyoruz. Log on tipini seçiyoruz. Connect a database kısmından master veritabanını seçiyoruz. Rapordaki sorgular master veritabanından çalıştığı için, başka bir veritabanı seçtiğimizde hata alabiliriz. Son olarak test connection diyerek bağlantı ayarlamızın doğruluğunu test ediyoruz.

Raporumuzun connection string’i, Data Source Properties ekranına gelmiş oldu.

Data Source’un ikonu daha önce kısayol işareti bulunan shared data source idi, yapılan değişikliklerden sonra data source’umuz embedded olarak değişti.

Raporun data source’unu ayarladıktan sonra, raporumuzu Preview sekmesine tıklayarak çalıştırıyoruz.

Raporumuz sorunsuz bir şekilde çalıştı. Bu dashboard raporu olduğu için, bu ana ekrana bağlı bir çok alt rapor var. Örnek olarak Waiting Request grafiğindeki bar çubuğuna tıklayalım. Tıkladığımız zaman detaylarına gitmesi gerekir, fakat alt raporu projeye tanımlamadığımız için aşağıdaki uyarıyı alıyoruz.

Alt raporların hepsi, proje klasörümüzün içindeydi, bu alt raporları Add – Existing Item diyerek ekliyoruz

Performance_dashboard_main haricindeki tüm raporları seçiyoruz.

Alt raporlar, solution Explorer’a eklenmiş oldu.

Raporu tekrar çalıştırıp, Waits alt raporuna tıklayalım.

Raporumuz çalıştı, eğer rapor çalışmasında Data Source ile ilgili bir hata verirse, Data Source’u convert to shared datasource yaptığınız da sorun düzelmiş olacaktır.

Performans raporlarımızı Reporting Service üzerinde çalıştırdık, rapor düzenleme aracı olan Visual Studio Data Tools içinde raporlarımızı açtık, şimdi bu raporları Reporting Service web sunucusu üzerine nasıl aktaracağımıza bakalım.

Daha önceki Reporting Services makalelerimizden hatırlayacağınız üzere, raporlar web sunucusuna aktarmamız için, Reporting Services’in ftp sunucusunun adına ihtiyacımız var, ftp sunucusunu öğrenmek için, Sql Server dizini altındaki Reporting Services Configuration Manager’ı açıyoruz.

RS Configuration manager ekranında, Web Service Url sekmesindeki, Report Server Web Service Urls linkini kopyalalıyoruz. Link kopyalanmaya izin vermeyebilir, linki tıklayarak browser üzerinde açtıktan sonra Url’yi kopyalabilirsiniz.

Visual Studio Data Tools’da Project menüsünde rapor özellikleri sayfasını açıyoruz

Target Server Url kısmına, Web Service Url’imizi kopyalıyoruz

Ok ile ekranı kapadıktan sonra, Performans Raporunu Reporting Service Web service’ine yüklemesine geçiyoruz. Solution Explorer menüsünden proje adına sağ tıklayarak Deploy diyoruz.

Performans raporu web tarafına deploy edildi. Reporting Service web Url’sini açıyoruz. Raporun geldiğini kontrol ediyoruz.

Raporumuzu proje olarak oluşturduğumuz için klasör olarak Web tarafına gelmiş bulunuyor.

Performans Dashboard Raporunun Otomatik Olarak Mail Gönderilmesi

Performans Dashboard raporunun günlük, haftalık veya aylık olarak mail olarak gönderebiliriz. İlk olarak Sql Server Performans Dashboard klasörüne tıklıyoruz. Bir sürü alt raporunda geldiği gözüküyor. Sadece performance_dashboard_main raporunun Subscribe edilmesi yeterli olacaktır.

Performance-_dashboard_main raporunun yanındaki menü işaretine tıklayarak Subscribe diyoruz.

Subscription ekranında mail gidecek kişileri yazıyoruz. Parametre varsayılan olarak bırakılıyor.

Select Schedule bölümünden raporun hangi periyodlarda mail gönderileceği belirlenir.

Saatlik, günlük, haftalık, aylık veya bir kereliğine mail gönderilebilmektedir. Ok ile ekran kapatılır, subscribe ekranı da Ok ile kapatılır. Tanımlamış olduğumuz mail görevi, Reporting Service Web servisinin My Subcription bölümüne gelmektedir. Bu ekrana bakıp, mail görevimizi takip edebiliriz.

Bu ekranda mail görevlerimizi görebilmekteyiz

Reporting Service üzerinde mail gönderebilmek için, lokal yapımız içinde Exchange Server gibi bir mail sunucusu var ise, Exchange Server’ın bağlantı ayarlarını Reporting Services Configuration Manager altındaki E-Mail Settings bölümünde tanımladığımızda, mail görevlerimiz sorunsuz çalışacaktır.

Eğer lokalde bir mail sunucumuz yok ise, gmail hesabımız ile nasıl mail göndereceğimizi aşağıdaki makaledeki yönergeleri izleyerek yapabilirsiniz.

http://www.cozumpark.com/blogs/sql/archive/2014/10/26/sql-server-reporting-service-gmail-ile-mail-bildirimleri.aspx

    Sql Server Performansını izlemek için birçok 3. Parti yazılım mevcuttur, bu makalede sizlere Sql Server içerisinden ek bir maliyet getirmeden, Sql Server Performansının nasıl izleneceği, bu raporlar Reporting Service üzerinde çalıştırılması ve bu raporların periyodik olarak mail ile bildirimlerinin sağlanmasını hakkında bilgiler aktarmaya çalıştık.