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

    2019-12-06

    Tüm Login ve Tüm Windows Group Altındaki Tüm Loginlerin Listesini Alma

    /*
    Bir instance altındaki tüm login'leri ve Windows group altındaki tüm kullanıcıların listesini aşağıdaki T-SQL bulabilirsiniz
    */

    2019-11-28

    Bir Kullanıcıyı Tüm Veritabanlarından Silmek

    /*
    Bir kullanıcıyı bir instance altındaki tüm veritabanlarından silmek için aşağıdaki T-SQL script'i kullanabilirsiniz:
    */

    2019-11-07

    Çalıştırılan Komut İçeriğinden Job Adını Bulma

    Çalıştırılan komut içeriğinden SQL Server job adını aşağıdaki kod ile bulabilirsiniz:

    select j.name
    from msdb.dbo.sysjobs j
    inner join msdb.dbo.sysjobsteps js on  j.job_id=js.job_id
    where js.command like '%Aranılacak içerik%'

    2019-07-31

    SQL Server en son ne zaman start oldu?

    SQL Server servisinin en son ne zaman başladığını aşağıdaki sorgu ile bulabilirsiniz:

    SELECT sqlserver_start_time
    FROM sys.dm_os_sys_info

    2019-04-02

    2018-10-15

    Tüm Kullanıcı Veritabanlarındaki sys.sql_modules Kod Satır Sayısını Bulma

    Merhaba,

    Tüm kullanıcı veritabanlarındaki  procedure, replication-filter-procedure, view, trigger, function, inline table-valued function, table-valued-function satır sayısınını aşağıdaki T-SQL ile bulabilirsiniz:

    2016-03-18

    SCOM'da Alınan "SQL Agent Job discovery script 'SQLAgentJobDiscovery.vbs' for SQL instance" Hatası ve Çözümü

    Alınan Hata:

    Alert: MSSQL 2014: Discovery failed

    Source: SunucuIntanceNeme.DomainName.com
    Path: SunucuIntanceNeme.DomainName.com
    Last modified by: System
    Last modified time: 3/17/2016 15:58:35 AM Alert description: Management Group: Management Grup 1. Script: SQLAgentJobDiscovery.vbs. Instance: MSSQLSERVER : SQL Agent Job discovery script 'SQLAgentJobDiscovery.vbs' for SQL instance 'MSSQLSERVER'  failed.

    2016-03-09

    Tablodaki İstatistikler En Son Ne Zaman Güncellendi?

    Bir tabloda bulunan istatistiklerin en son ne zaman güncellendiğini ve ilgili istatistiğin hangi index yada alan üzerinde olduğunu aşağıdaki T-SQL ile bulabilirsiniz:

    select
    object_name(s.object_id) as TableName,
    ic.name as ColumnName,
    stats_date(s.object_id, s.stats_id) as StatisticsUpdate,
    s.name as StatisticsName
    from sys.stats s inner join sys.stats_columns sc on s.object_id=sc.object_id and s.stats_id=sc.stats_id
    inner join sys.columns ic on ic.object_id=sc.object_id and ic.column_id=sc.column_id
    where s.object_id=object_id(SchemaAdi.TabloAdi')

    -- Yukarıdaki T-SQL SQL Server 2012/2014 sürümlerinde test edildi.

    2016-02-29

    Çalıştırdığınız Bir Sorgu Bittiğinde Uyarı Sesinin Çıkması

    Merhaba,
     
    SSMS üzerinde çalıştırdığımız bazı sorgular uzun sürer ve bu süre içerisinde başka işlerle uğraşırız. Başlattığımız bir sorgunun bittiğini bir ses uyarısı ile alırsak güzel olur. Bunun için SSMS'da çalıştırdığınız bir sorgu bittiğinde Windows'un default sesinin çıkmasını isterseniz SSMS'da Tools  - > Options'dan aşağıdaki gibi ayarlabilirsiniz:
     

    2016-02-24

    Tempdb Veritabanını Ne Şişiriyor?

    Tempdb Veritabanında yer işgal eden işlemleri aşağıdaki T-SQL ile bulabilirsiniz.

    select ts.session_id,
    sum(ts.internal_objects_alloc_page_count*8/1024) as task_internal_objects_alloc_page_mb,
    st.text as sqltext,
    sum(ts.internal_objects_alloc_page_count) as task_internal_objects_alloc_page_count,
    sum(ts.internal_objects_dealloc_page_count) as task_internal_objects_dealloc_page_count
    from sys.dm_db_task_space_usage ts inner join sys.dm_exec_requests er on ts.session_id=er.session_id
    cross apply sys.dm_exec_sql_text(er.sql_handle) st
    where internal_objects_alloc_page_count+ internal_objects_dealloc_page_count>0
    group by ts.session_id,st.text
    order by 2 desc


    Not: T-SQL script SQL Server 2012/2014 versiyonlarında test edildi.

    2015-11-24

    SQL Server 2012 Service Pack 3

    Beklenen SQL Server 2012 Service Pack 3 yayınlandı. SQL Server 2012 Service Pack 3, 37 adet düzeltme içeriyor. SQL Server 2012 Service Pack 3, SQL Server 2012 Service Pack 2 den sonra çıkan CU1 ile CU9 arasındaki CU barındırıyor.

    Benim için önemli olan düzeltmelerin listesi aşağıdır:

    2015-11-17

    Default Data ve Log Dizinlerini Değiştirdiğim Halde Neden Hala Eski Dizin Değerleri Gözüküyor?

    SQL Server 2008 ve öncesi sürümlerde Server Properties->Database Settings de Database Default Locations'da Data ve Log dizinlerini değiştirdiğimizde ilgili ekranda da bu değişiklerini görüyorduk ve yine bir veritabanı oluşturmak istediğimizde default dizinler en son değiştirdiğimiz dizin olarak görülüyordu.

    2015-07-10

    Registry'den Database Default Location Değerlerini T-SQL İle Okuma

    SQL Server ile ilgili tutulan registry kayıtlarının değerini sunucuya bağlanmaya gerek kalmadan xp_instance_regread  extended stored procedure ile okuyabilirsiniz.

    2015-06-30

    SQL Server 2016 CTP 2.1 İlk Bug!

    SQL Server 2016 CTP 2.1 sürümünün ilk bug'ı Database Properties -> Compatibility level ile karşımıza çıkıyor: SQL Server 2016 yerine SQL Server 2015 yazıyor :)

    SQL Server 2016 : Tempdb Data File Sayısını Kurulum Sırasında Belirtin

     SQL Server 2016 sürümünden önce setup kurulumundan sonra tempdb veri dosyalarını kendimiz manuel tek tek eklerdik. Bu işlemi kolaylaştırmak için Tempdb Veritabanına Çoklu Veri Dosyası Ekleme yazısı ile tempdb veritabanına dilediğiniz kadar veri dosyası eklemek için daha önce script paylaşmıştım. Artık SQL Server 2016 sürümü ile birlikte Setup kurulumu sırasında tempdb sistem veritabanının data file sayısının belirtebiliyorsunuz. Geliştirilen bu yeni özellik için benim ek önerilerim:
    1. Hangi dosyayı hangi dizinde tutmak istediğimizi girebilsek,
    2. Dosya boyutunu da girebilseydik daha güzel olurdu.

    .::YASAL UYARI::.

    ©2004-2024 Mehmet GÜZEL, www.mehmetguzel.net

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