Aracılığıyla paylaş


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

Bu makalede, Windows'da SQL Server'ın bir örneğini yükleme veya başlatma sırasında karşılaşılan hataları gidermeye yönelik çözümler sağlanmaktadır. Bu makale, SQL Server'ın yayımlanan tüm sürümleri için geçerlidir.

Bu makalede, 4 KB'tan büyük sistem disk kesimi boyutuyla ilgili hatalar ele alınmaktadır. Sistem disk kesimi boyutu 4 KB'tan büyük olan bir makineye SQL Server örneği yüklemeye çalıştığınızda aşağıdaki senaryolarla karşılaşabilirsiniz:

Şunlar için geçerlidir: SQL Server tüm sürümler

Senaryo 1: Dosyayı uyumlu kesim boyutuna sahip bir birime taşıma

4 KB'tan büyük kesim boyutunu kullanmayı denerseniz 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.

Senaryo 2: Veritabanı Altyapısı başlangıç tutamacı bulunamadı

Windows çalıştıran bir Azure sanal makinesine (VM) SQL Server örneği yüklemeye çalıştığınızda yükleme başarısız olur ve altyapı yükleme sırasında başlamaya çalıştığında SQL Server hata günlüğünde aşağıdaki hata iletisini alırsınız:

Başlangıçta kesim boyutu 4096 ile biçimlendirildiğinden ve şimdi kesim boyutu 8192 olan bir birimde olduğundan '...\master.mdf' dosyası kullanılamıyor. Dosyayı özgün kesim boyutuyla aynı veya daha küçük bir kesim boyutuna sahip bir birime taşıyın.

Ayrıca, SQL Server kurulum klasöründeki Summary.txt günlük dosyasında aşağıdaki bilgileri görebilirsiniz:

Detailed results:
  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:          0x851A0019
  Error description:             Could not find the Database Engine startup handle.

Daha fazla bilgi için bkz. Windows Server 2022 Azure sanal makinesinde SQL Server yüklemesi kesim boyutu hatasıyla başarısız oluyor.

Senaryo 3: Veritabanı Altyapısı kurtarma tutamacını bekleme başarısız oldu

SQL Server'ın herhangi bir sürümünü yüklediğinizde, SQL Server'ın 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. 

Veya SQL Server hata günlüğünde aşağıdaki hataları görürsünüz:

2025-02-26 20:01:16.79 spid14s     Starting up database 'master'.
2025-02-26 20:01:16.80 spid14s     Error: 5178, Severity: 16, State: 1.
2025-02-26 20:01:16.80 spid14s     Cannot use file 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\master.mdf' because it was originally formatted with sector size 4096 and is now on a volume with sector size 8192. Move the file to a volume with a sector size that is the same as or smaller than the original sector size.

Senaryo 4: Eşzamanlı IO'ya geri dönmeyi gerektiren 256 yanlış hizalanmış günlük IO'su oldu.

Sql Server'ın herhangi bir sürümünü bir Windows 10 cihazına yüklersiniz. Ardından, cihazdaki işletim sistemini (OS) Windows 11'e yükseltin. Windows 11 cihazında SQL Server'ı başlatmaya çalıştığınızda hizmet başlatılamıyor. SQL Server hata günlüğünde aşağıdaki girdileri 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 5

Sql Server'ın herhangi bir sürümünü bir Windows 10 cihazına yüklersiniz. Ardından, cihazdaki işletim sistemini Windows 11'e yükseltin. Windows 11 cihazında SQL Server'ı başlatmaya çalıştığınızda hizmet başlatılamıyor. SQL Server hata günlüğünde aşağıdaki girdileri 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 6: Dosyayı özgün kesim boyutuyla aynı veya daha küçük bir kesim boyutuna sahip bir birime taşıma

LocalDB'yi bir Windows 11 cihazına yüklersiniz ve kurulum başarısız olur. SQL Server hata günlüğünde aşağıdaki girdileri 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 aşağıdaki girdileri 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 önceki senaryolarında veya uygulamalar tarafından yüklenen bir LocalDB örneğinde belirtilen hatalarla karşılaşabilirsiniz.

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 dosya sisteminde tutarlılık denetimleri içerir.

Bazı yeni depolama cihazları ve cihaz sürücüleri, desteklenen 4 KB kesim boyutundan daha büyük bir disk kesimi boyutunu kullanıma sunar.

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

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 PhysicalBytesPerSectorForAtomicity ve PhysicalBytesPerSectorForPerformance değerlerini arayın ve farklılarsa, disk sektör 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

SQL Server'ın 4 KB'tan büyük kesim boyutlarıyla uyumlu yayımlanmış bir sürümü yoktur. Daha fazla bilgi için SQL Server'da sabit disk sürücüsü kesim boyutu destek sınırları makalesine bakın.

Çözümlemeler

  • ForcedPhysicalSectorSizeInBytes Şu anda, 4 KB'tan büyük bir kesim boyutu sağlayan NVMe gibi modern depolama platformlarını kullanırken SQL Server'ı başarıyla yüklemek için kayıt defteri anahtarı gereklidir. Bu Windows işletim sistemi kayıt defteri anahtarı, kesim boyutunun 4 KB olarak örneklendirilmesini zorunlu kılar.

    Kayıt defteri anahtarını eklemek ForcedPhysicalSectorSizeInBytes için, Komut İstemi veya PowerShell bölümünde açıklandığı gibi Kayıt Defteri Düzenleyicisi'nikullanın veya komutları çalıştırın. Bu senaryo için İzleme Bayrağı 1800 eklemeniz gerekmez.

    Ö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ı dikkatli bir şekilde izlediğinizden emin olun. Daha fazla koruma için değiştirmeden önce kayıt defterini yedekleyin. 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.

    1. Kayıt Defteri Düzenleyicisi'ni yönetici olarak çalıştırın.
    2. Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device'a gidin.
    3. Düzenle>Yeni>Çok Dizeli Değeri'ni seçin ve olarak ForcedPhysicalSectorSizeInBytes adlandırın.
    4. Adın üzerine sağ tıklayın, Değiştir'i seçin ve Değer verileri alanına * 4095 yazın.
    5. Tamam'ı seçin ve Kayıt Defteri Düzenleyicisi'ni kapatın.

    Bu değişikliğin etkili olması için kayıt defteri anahtarını ekledikten sonra cihazı yeniden başlatmanız gerekir.

  • Kayıt defteri anahtarını eklemezseniz ve 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 sektör boyutunu yansıttığından fsutil emin olun. SQL Server şu anda 512 bayt ve 4.096 bayt kesim depolama boyutlarını destekler.

Dikkat

SQL Server dosyalarını barındırmak için kesim boyutu 4 KB'tan büyük disklere sahip bir depolama havuzu oluşturduysanız, önce depolama havuzunu kaldırmanız, bu makalede belirtilen sorun giderme yöntemlerinden birini uygulamanız ve depolama havuzuna veya havuzlara SQL Server yüklemeyi denemeden önce depolama havuzunu yeniden oluşturmanız gerekir.

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 taklit edilen bilgilere güvenmek yerine yapıldı.

Windows 10 sürücüleri fiziksel depolama alanının kaynak kesim boyutunu bildirmez.

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'un gerektirdiği 4 KB sektör boyutunu öykünmek yerine 8 KB veya 16 KB sektör 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. PhysicalBytesPerSectorForAtomicity ve PhysicalBytesPerSectorForPerformance değerleri için, Windows 10 4 KB, Windows 11 ise 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