4 KB'tan büyük sistem disk kesimi boyutuyla ilgili hataları giderme

Bu makalede, Windows 11 ve Windows Server 2022'de yükleme sırasında veya bir SQL Server örneğini başlatırken karşılaşılan sorunları gidermeye yönelik çözümler sağlanır. Bu makale, SQL Server yayımlanan tüm sürümleri için geçerlidir.

Bu makalede açıklanan hatalar, 4 KB'tan büyük sistem disk kesimi boyutuyla ilgilidir.

Şunlar için geçerlidir: Tüm sürümleri SQL Server

Belirtiler

Senaryo 1: Windows 11 bir cihaza herhangi bir SQL Server sürümünü yüklersiniz. Ardından, SQL Server Veritabanı Altyapısı Hizmetleri bileşeni için aşağıdaki iletiye benzer hatalar görürsünüz:

Feature: Database Engine Services 
Status: Failed 
Reason for failure: An error occurred during the setup process of the feature. 
Next Step: Use the following information to resolve the error, uninstall this feature, and then run the setup process again. 
Component name: SQL Server Database Engine Services Instance Features 
Component error code: 0x851A001A 
Error description: Wait on the Database Engine recovery handle failed. Check the SQL Server error log for potential causes. 

Senaryo 2: Windows 10 bir cihaza herhangi bir SQL Server sürümünü yüklersiniz. Ardından cihazdaki işletim sistemini Windows 11 yükseltebilirsiniz. Windows 11 bir cihazda SQL Server başlatmaya çalıştığınızda hizmet başlatılamıyor ve SQL Server hata günlüğünde şuna benzer girdiler fark edeceksiniz:

2021-11-05 23:42:47.14 spid9s There have been 256 misaligned log IOs which required falling back to synchronous IO. The current IO is on file C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\master.mdf. 

Senaryo 3: Windows 10 bir cihaza herhangi bir SQL Server sürümünü yüklersiniz. Ardından cihazdaki işletim sistemini Windows 11 yükseltebilirsiniz. Windows 11 bir cihazda SQL Server başlatmaya çalıştığınızda hizmet başlatılamıyor. SQL Server hata günlüğünde şuna benzer girişler fark edeceksiniz:

Faulting application name: sqlservr.exe, version: 2019.150.2000.5, time stamp: 0x5d8a9215 
Faulting module name: ntdll.dll, version: 10.0.22000.120, time stamp: 0x50702a8c 
Exception code: 0xc0000005 
Fault offset: 0x00000000000357ae 
Faulting process id: 0x1124 
Faulting application start time: 0x01d7bf67449d262c 
Faulting application path: C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Binn\sqlservr.exe 
Faulting module path: C:\Windows\SYSTEM32\ntdll.dll 

Senaryo 4: LocalDB'yi Windows 11 bir cihaza yüklersiniz. Kurulum başarısız oluyor ve SQL Server hata günlüğünde şuna benzer girdiler fark edeceksiniz:

2021-12-15 23:25:04.28 spid5s      Cannot use file 'C:\Users\Administrator\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\TestInstance\master.mdf' because it was originally formatted with sector size 4096 and is now on a volume with sector size 16384. Move the file to a volume with a sector size that is the same as or smaller than the original sector size.

Windows 11 Uygulama Olay Günlüğü'nde şuna benzer girdiler fark edeceksiniz:

Message            : Windows API call WaitForMultipleObjects returned error code: 575. Windows system error message is: {Application Error}
                     The application was unable to start correctly (0x%lx). Click OK to close the application.
                     Reported at line: 3621.
Source             : SQLLocalDB 11.0

Not

El ile yüklediğiniz bir SQL Server örneğinin veya uygulamalar tarafından yüklenen bir LocalDB örneğinin önceki senaryolarında belirtilen hatalarla karşılaşabilirsiniz.

Senaryo 5: Kesim boyutunu 4 KB'tan yüksek kullanmaya çalışırsanız aşağıdaki hata iletisini görürsünüz:

Error: 5179, Severity: 16, State: 1.
Cannot use file 'data file path', because it is on a volume with sector size 8192. SQL Server supports a maximum sector size of 4096 bytes. Move the file to a volume with a compatible sector size.

Neden

Hizmet başlatma sırasında SQL Server veritabanı tutarlılığını sağlamak için veritabanı kurtarma işlemini başlatır. Bu veritabanı kurtarma işleminin bir bölümü, sistem ve kullanıcı veritabanı dosyalarını açmaya çalışmadan önce temel alınan dosya sisteminde tutarlılık denetimleri içerir.

Windows 11 çalıştıran sistemlerde, bazı yeni depolama cihazları ve cihaz sürücüleri desteklenen 4 KB'lık kesim boyutundan daha büyük bir disk kesim boyutunu kullanıma sunar.

Bu durum oluştuğunda, SQL Server şu anda 512 bayt ve 4 KB'lik kesim depolama boyutlarını desteklediğinden SQL Server desteklenmeyen dosya sistemi nedeniyle başlatılamaz.

Komutunu çalıştırarak bu sorunla karşılaştığınızı onaylayabilirsiniz:

fsutil fsinfo sectorinfo <volume pathname>

Örneğin, E: birimini analiz etmek için aşağıdaki komutu çalıştırın:

fsutil fsinfo sectorinfo E:

bayt cinsinden döndürülen ve PhysicalBytesPerSectorForPerformancedeğerlerini PhysicalBytesPerSectorForAtomicity arayın ve farklıysa disk kesim boyutunu belirlemek için en büyük olanı koruyun. 4096 değeri, 4 KB'lık bir kesim depolama boyutunu gösterir.

Ayrıca, dosya sistemi ve depolama kesimi boyutu desteği için Windows destek ilkesine de dikkat edin. Daha fazla bilgi için Windows'da 4 KB kesimli sabit sürücüler için Microsoft destek ilkesi makalesine bakın.

Not

4 KB'tan büyük kesim boyutlarıyla uyumlu SQL Server sürümü sunulmaz. Daha fazla bilgi için SQL Server makalesindeki Sabit disk sürücüsü kesim boyutu destek sınırlarına bakın.

Çözümler

Microsoft şu anda bu sorunu araştırıyor.

Aşağıdaki çözümlerden birini göz önünde bulundurun:

  • Bu sistemde birden çok sürücü varsa, SQL Server yüklemesi tamamlandıktan sonra veritabanı dosyaları için farklı bir konum belirtebilirsiniz. Komutları sorgularken sürücünün desteklenen bir kesim boyutunu yansıttığından fsutil emin olun. SQL Server şu anda 512 bayt ve 4096 baytlık kesim depolama boyutlarını desteklemektedir.

  • Windows 11 ve sonraki sürümlerin davranışının Windows 10 benzer olmasına neden olacak bir kayıt defteri anahtarı ekleyebilirsiniz. Bu, kesim boyutunu 4 KB olarak öykünmeye zorlar. Kayıt defteri anahtarını eklemek ForcedPhysicalSectorSizeInBytes için, Yönetici olarak PowerShell bölümünde açıklandığı gibi Kayıt Defteri Düzenleyici kullanın veya komutları çalıştırın. Bu değişikliğin etkili olması için kayıt defteri anahtarını ekledikten sonra cihazı yeniden başlatmanız gerekir.

    Önemli

    Bu bölüm, Windows kayıt defterini nasıl değiştirebileceğinizi gösteren adımlar içerir. Ancak kayıt defterini hatalı biçimde değiştirirseniz önemli sorunlar oluşabilir. Bu nedenle bu adımları dikkatle uyguladığınızdan emin olun. Ek koruma için kayıt defterini değiştirmeden önce yedeklemeyi unutmayın. Böylece, bir sorun oluşursa kayıt defterini daha sonra geri yükleyebilirsiniz. Kayıt defterini yedekleme ve geri yükleme hakkında daha fazla bilgi için Windows'da kayıt defterini yedekleme ve geri yükleme makalesine bakın.

    Kayıt defteri Düzenleyici

    1. Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device'a gidin.
    2. Düzenle menüsünde Yeni'nin üzerine gelin ve Çoklu Dize değeri'ni seçin. adını verin ForcedPhysicalSectorSizeInBytes.
    3. Yeni değeri değiştirin, yazın * 4095. Tamam'ı seçin ve Kayıt Defteri düzenleyicisini kapatın.

    Yönetici Olarak Komut İstemi

    1. Anahtarı ekleyin.

      REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" /v "ForcedPhysicalSectorSizeInBytes" /t   REG_MULTI_SZ /d "* 4095" /f
      
    2. Anahtarın başarıyla eklenip eklenmediğini doğrulayın.

      REG QUERY "HKLM\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" /v "ForcedPhysicalSectorSizeInBytes"
      

    Yönetici olarak PowerShell

    1. Anahtarı ekleyin.

      New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" -Name   "ForcedPhysicalSectorSizeInBytes" -PropertyType MultiString        -Force -Value "* 4095"
      
    2. Anahtarın başarıyla eklenip eklenmediğini doğrulayın.

       Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" -Name   "ForcedPhysicalSectorSizeInBytes"
      
  • 1800 izleme bayrağını belirterek SQL Server başlatabilirsiniz. Daha fazla bilgi için bkz. DBCC TRACEON. Bu izleme bayrağı varsayılan olarak etkin değildir. İzleme bayrağı 1800, SQL Server tüm okuma ve yazma işlemleri için kesim boyutu olarak 4 KB kullanmaya zorlar. Fiziksel kesim boyutu 4 KB'tan büyük disklerde SQL Server çalıştırdığınızda, 1800 izleme bayrağını kullanarak SQL Server için desteklenen kesim boyutu olan yerel bir 4 KB sürücü benzetimi yapılır.

  • Bunun yerine kullanılabilir Windows 10 cihazlara SQL Server yükleyin.

Daha fazla bilgi

Windows 11 yerel NVMe sürücüleri, doğrudan NVMe depolama cihazları tarafından bildirilen gerçek kesim boyutunu içerecek şekilde güncelleştirildi. Bu işlem, dosya sistemi sürücülerinden öykünen bilgilere güvenmek yerine yapıldı.

Windows 10 sürücüleri fiziksel depolamanın kaynak kesim boyutunu raporlamaz.

Geliştirilmiş Windows 11 sürücüleri, yaygın NVMe depolama cihazlarının kullandığı öykünmeyi göz ardı eder. Örneğin, fsutil Windows için gereken 4 KB kesim boyutunu öykünme yerine 8 KB veya 16 KB kesim boyutunu görüntüler.

Aşağıdaki tablo, işletim sistemleri tarafından bildirilen kesim boyutlarının karşılaştırmasını sağlar. Bu örnekte, aynı depolama cihazını kullanan Windows 10 ile Windows 11 arasındaki farklar gösterilmektedir. ve PhysicalBytesPerSectorForPerformancedeğerleri PhysicalBytesPerSectorForAtomicity için Windows 10 4 KB ve Windows 11 16 KB görüntüler.

Örnek çıktısı fsutil fsinfo sectorinfo <volume pathname>

Windows 10 Windows 11
LogicalBytesPerSector : 512 LogicalBytesPerSector : 512
PhysicalBytesPerSectorForAtomicity : 4096 PhysicalBytesPerSectorForAtomicity : 16384
PhysicalBytesPerSectorForPerformance : 4096 PhysicalBytesPerSectorForPerformance : 16384
FileSystemEffectivePhysicalBytesPerSectorForAtomicity : 4096 FileSystemEffectivePhysicalBytesPerSectorForAtomicity : 4096
Device Alignment : Aligned (0x000) Device Alignment : Aligned (0x000)
Partition alignment on device : Aligned (0x000) Partition alignment on device : Aligned (0x000)
No Seek Penalty No Seek Penalty
Trim Supported Trim Supported
Not DAX capable Not DAX capable
Not Thinly-Provisioned Not Thinly-Provisioned

Ayrıca bkz.