2020-10-26

TOP 50 Query Statement Order By Total Logical Reads

select top(50)
object_schema_name(ps.object_id,ps.database_id) + '.' +  object_name(ps.object_id,ps.database_id)  as SpName,
replace(replace((substring(t.text, qs.statement_start_offset/2, (case when  qs.statement_end_offset = -1 then len(t.text) * 2 else  qs.statement_end_offset end - qs.statement_start_offset)/2)),char(10),' '), char(13),' ') as QueryStatement,
db_name(t.[dbid]) as DatabaseName,
qs.total_elapsed_time  as TotalElapsedTime,
qs.total_logical_reads as TotalLogicalReads,
qs.min_logical_reads as MinLogicalReads,
qs.total_logical_reads/qs.execution_count as AvgLogicalReads,
qs.max_logical_reads as MaxLogicalReads,  
qs.min_worker_time as MinWorkerTime,
qs.total_worker_time/qs.execution_count as AvgWorkerTime,
qs.max_worker_time as MaxWorkerTime,
qs.min_elapsed_time as MinElapsedTime,
qs.total_elapsed_time/qs.execution_count as AvgElapsedTime,
qs.max_elapsed_time as MaxElapsedTime,
qs.execution_count as ExecutionCount
,(case when convert(nvarchar(max), qp.query_plan) LIKE N'%<MissingIndexes>%' then 1 else 0 end) as HasMissingIndex
,qp.query_plan as QueryPlan
,qs.creation_time as QueryPlanCreationTime
,qs.last_execution_time as LastExecutionTime
from sys.dm_exec_query_stats as qs with (nolock)
left join  sys.dm_exec_procedure_stats ps with (nolock)  on qs.sql_handle=ps.sql_handle
cross apply sys.dm_exec_sql_text(qs.plan_handle) as t
cross apply sys.dm_exec_query_plan(qs.plan_handle) as qp
order by qs.total_logical_reads desc

2020-08-11

Database Log File Shrink Sonrası Write Latency Artışı, WRITELOG Waittype Artışı

Veritabanı log dosyasını Shrink ettikten sonra ilgili dosyanın bulunduğu diskte write latency artışı ve SQL Server tarafında WRITELOG Waittype artışı görüyorsanız DisableDeleteNotification değerini kontrol edip bu değeri 1 olarak değiştirmeyi değerlendirmenizi tavsiye ederim.

2020-07-28

Disk Block Size

Disk Block Size kaç KB olduğunu aşağıdaki iki farklı PowerShell komutu öğrenebilirsiniz:

  • Get-CimInstance -ClassName Win32_Volume | Select-Object Label, BlockSize | Format-Table -AutoSize
  • Get-WmiObject -Class Win32_Volume | Select-Object Label, BlockSize | Format-Table -AutoSize
  • 2020-06-23

    Sızma Teşebbüsünde SQL Server Error Log Mesajları

    Sızma testi(Pentest) yada gerçek sızma teşebbüslerinde SQL Server Error Log'da aşağıdaki mesajları birden çok kez görebilirsiniz. SQL Server Error Log'da aşağıdaki uyarıları bir yada birden çok kez gördüğünüzde Bilgi Güvenliği/Sistem Güvenliği ekipleri ile iletişime geçip veritabanı sisteminizi gözden geçirmenizde fayda var.
    1.       Length specified in network packet payload did not match number of bytes read; the connection has been closed. Please contact the vendor of the client library. [CLIENT: X.X.X.X]

    2020-03-05

    Deprecated SQL Server Features

    Deprecated Features, bir ürün için kullanımdan kaldıracak özellikleri ifade eder. Kaldırılacağı açıklanan özellikleri kullanmaktan kaçınıp; önerilen alternatif özellikler ile değiştirmek gerekir.

    2020-02-19

    Bir security gruba dahil olduğunuz halde o security grubun yetkilerini alamıyorsanız

    SQL Server tarafında bir security grubun yetkisi varken bu gruba eklenen bir kullanıcının "hala yetkim yok" sıklıkla karşılaştığımız durumlardandır. Active Directory tarafında alınan ticket'lar belli bir süre Kerberos ticket cache'de tutulur ve ilgili session bu cache'deki ticketları kullanır. Bir security gruba dahil olduğunuz halde o security grubun yetkilerini alamamanızın sebebi Kerberos ticket cache'de bu bilginin olmamasından kaynaklanıyor. Dahil olduğunuz security grubun yetkilerini kullanamıyorsanız:
      1. Kerberos ticket cache'ın bir süre sonra otomatik yenilenmesini(bu süre saatler olabilir) bekleyebilirsiniz.
      2. Oturumunuzu Logoff / Logon yaparak Kerberos ticket cache'ın yenilenmesini sağlayabilirsiniz.
      3. Komut satırından klist purge komutunu çalıştırarak Kerberos ticket cache'ı kendiniz temizleyebilirsiniz.

        Ticket lerin detayını görmek için komut satırından klist tickets komutunu kullanabilirsiniz.

    2020-02-07

    SQL Server'ın yeni çıkan bir versiyonuna ne zaman geçmeliyim?


    Eskiden SQL Server'ın yeni sürümüne geçiş için genellikle kararlılık açısından yeni versiyonun ilk  SP'sinin çıkması beklenirdi fakat Microsoft, SQL Server 2017 sürümünden itibaren politika değişikliğine gidip SP çıkarmıyor sadece CU çıkarıyor ve ihtiyaç varsa GDR  çıkarıyor. Bu yüzden eski alışkanlıkları değiştirmek gerekiyor. 

    Yeni versiyon için benim tavsiyem en azından ilk CU sonrası testlerinizi sağlıklı yaptıktan sonra üst sürüme geçiş yapabilirsiniz.



    Microsoft'un 2017 yılındaki politika değişikliği ile ilgili ayrıntılı bilgiye ve bir çok sorunun cevabına 

    https://docs.microsoft.com/tr-tr/archive/blogs/sqlreleaseservices/announcing-the-modern-servicing-model-for-sql-server adresindeki dokümandan ulaşabilirsiniz.


    SP: Service Pack
    CU: Cumulative Update
    GDR: General Distribution Release

    2020-01-22

    SQL Server'da En Çok Karşılaşılan Bağlantı Hataları ve Çözümleri

    1. SSMS üzerinden veritabanı sunucusuna hiç erişemiyorum.
      Alınan Genel Hata : A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)

    2020-01-14

    Could not allocate space for object 'sys.sysfiles1'.'sysfiles1' in database 'VeritabanıAdı' because the 'FileGroupAdı' filegroup is full

    Alınan Hata:
    "Could not allocate space for object 'sys.sysfiles1'.'sysfiles1' in database 'VeritabanıAdı' because the 'PRIMARY' filegroup is full. Create disk space by deleting unneeded files, dropping objects in the filegroup, adding additional files to the filegroup, or setting autogrowth on for existing files in the filegroup."

    Çözüm: 
    İgili veritabanın birincil .mdf dosyasının 
    1. Auto growth değeri disable ise enable yapabilirsiniz.
    2. Max size verilmiş ise unlimited yapabilirsiniz.

    2019-12-27

    SAS Enterprise Guide'de Her Seferinde Tablodaki Tüm Kayıtların Gelmesini Önleme

    SAS Enterprise Guide yazılımındaki kullanıcılar bir tablo özelinde sorgu yazmak istediklerinde bir tabloyu tıklayınca her seferinde tablonun tamamının sorgulanması veritabanı sistemine yük getirir. Hele hele tablolarnız TB seviyesinde çok büyük ise  veritabanı sisteminize gelen bu gereksiz yükü SAS özelinde aşağıdaki dizindeki EGOptions.xl tablosunda ufak bir değişiklik yaparak önleyebilirsiniz.

    Dizin ve dosya adı: C:\Users\@KullanıcıKodu\AppData\Roaming\SAS\EnterpriseGuide\@Version\EGOptions.xml

    Yapılacak Değişiklik:

    <bAutoDisplayData>true</bAutoDisplayData> true değerini <bAutoDisplayData>false</bAutoDisplayData> false
    yapmak.


    Not :
    @KullanıcıKodu ve @Version değişkenlerini ortamınıza uygun olması gereken değer ile değiştirmelisiniz.

    2019-12-08

    Spotlight on SQL Server Uygulamasının SQL Scriptleri Nerede Tutuluyor?

    SQL Server veritabanı sisteminin sağlık durumu izlemek için kullanılan araçlardan birisi olan Spotlight on SQL Server uygulamasının kullandığı scriptleri aşağıdaki dizinde bulabilirsiniz. Script konusunda uzmanlığınız varsa kendinize göre mevcut scriptleri iyileştirebilir yada özelleştirebilirsiniz.

    C:\Program Files (x86)\Quest Software\Diagnostic Server\Agent\conf\Package\sqlserver_spotlight

    .::YASAL UYARI::.

    ©2004-2020 Mehmet GÜZEL, http://www.mehmetguzel.net/ & http://www.mehmetguzel.com/

    Site içeriği kaynak gösterilmek koşuluyla yayınlanabilir. Yazılan yazı ve yorumlar sadece yazı ve yorum sahiplerini bağlar.