Compartilhar via


Solucionar erros relacionados ao tamanho do setor de disco do sistema maior que 4 KB

Este artigo fornece soluções para solucionar erros durante a instalação ou inicialização de uma instância do SQL Server no Windows 11 e Windows Server 2022. Este artigo é válido para todas as versões lançadas do SQL Server.

Os erros discutidos neste artigo estão relacionados ao tamanho do setor do disco do sistema maior que 4 KB.

Aplica-se a: SQL Server todas as versões

Sintomas

Cenário #1: você instala qualquer versão do SQL Server em um dispositivo Windows 11. Em seguida, você verá erros semelhantes à seguinte mensagem para o componente Serviços do Mecanismo de Banco de Dados do SQL Server:

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. 

Cenário #2: você instala qualquer versão do SQL Server em um dispositivo Windows 10. Em seguida, você atualiza o sistema operacional do dispositivo para o Windows 11. Quando você tenta iniciar o SQL Server em um dispositivo Windows 11, o serviço falha ao iniciar e, no log de erros do SQL Server, você observa entradas semelhantes a:

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. 

Cenário #3: Você instala qualquer versão do SQL Server em um dispositivo Windows 10. Em seguida, você atualiza o sistema operacional do dispositivo para o Windows 11. Quando você tenta iniciar o SQL Server em um dispositivo Windows 11, o serviço não é iniciado. No log de erros do SQL Server, você observa entradas semelhantes a:

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 

Cenário #4: você instala o LocalDB em um dispositivo Windows 11. A instalação falha e, no log de erros do SQL Server, você observa entradas semelhantes a:

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.

No Log de Eventos do Aplicativo Windows 11, você observa entradas semelhantes a:

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

Observação

Você pode encontrar as falhas mencionadas nos cenários anteriores para uma instância do SQL Server instalada manualmente ou em uma instância do LocalDB instalada por aplicativos.

Cenário #5: Se você tentar usar o tamanho do setor maior que 4 KB, verá a seguinte mensagem de erro:

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.

Causa

Durante a inicialização do serviço, o SQL Server inicia o processo de recuperação do banco de dados para garantir a consistência do banco de dados. Parte desse processo de recuperação de banco de dados envolve verificações de consistência no sistema de arquivos subjacente antes de tentar abrir arquivos de banco de dados do sistema e do usuário.

Em sistemas que executam Windows 11, alguns novos dispositivos de armazenamento e drivers de dispositivo expõem um tamanho de setor de disco maior que o tamanho do setor de 4 KB com suporte.

Quando isso ocorrer, o SQL Server não poderá ser iniciado devido ao sistema de arquivos sem suporte, pois o SQL Server atualmente oferece suporte a tamanhos de armazenamento de setor de 512 bytes e 4 KB.

Você pode confirmar que encontrou esse problema específico executando o comando:

fsutil fsinfo sectorinfo <volume pathname>

Por exemplo, para analisar o volume E:, execute o seguinte comando:

fsutil fsinfo sectorinfo E:

Procure os valores PhysicalBytesPerSectorForAtomicity e PhysicalBytesPerSectorForPerformance, retornados em bytes e, se forem diferentes, mantenha o maior para verificar o tamanho do setor do disco. Um valor de 4096 indica um tamanho de armazenamento de setor de 4 KB.

Além disso, lembre-se da política de suporte do Windows para suporte ao sistema de arquivos e ao tamanho do setor de armazenamento. Para obter mais informações, consulte o artigo Política de suporte da Microsoft para discos rígidos de setor de 4 KB no Windows .

Observação

Não há nenhuma versão lançada do SQL Server compatível com tamanhos de setor maiores que 4 KB. Para obter mais informações, consulte o artigo Limites de suporte ao tamanho do setor da unidade de disco rígido no SQL Server .

Resoluções

A Microsoft está atualmente investigando esse problema.

Considere uma das seguintes soluções:

  • Se você tiver várias unidades neste sistema, poderá especificar um local diferente para os arquivos de banco de dados após a conclusão da instalação do SQL Server. Certifique-se de que a unidade reflita um tamanho de setor com suporte ao consultar os fsutil comandos. Atualmente, o SQL Server oferece suporte a tamanhos de armazenamento de setor de 512 bytes e 4096 bytes.

  • Você pode adicionar uma chave de registro, o que fará com que o comportamento do Windows 11 e posterior seja semelhante ao do Windows 10. Isso força o tamanho do setor a ser emulado como 4 KB. Para adicionar a chave do ForcedPhysicalSectorSizeInBytes Registro, use o Editor do Registro ou execute comandos conforme descrito na seção PowerShell como Administrador. Você deve reinicializar o dispositivo depois de adicionar a chave do Registro para que essa alteração entre em vigor.

    Importante

    Esta seção contém etapas que informam como modificar o registro do Windows. No entanto, poderão ocorrer problemas sérios se você modificar o registro incorretamente. Portanto, certifique-se de seguir essas etapas com atenção. Para proteção acrescida, faça backup do Registro antes de modificá-lo. Em, é possível restaurar o Registro caso ocorra um problema. Para obter mais informações sobre como fazer backup e restaurar o Registro, consulte o artigo Como fazer backup e restaurar o Registro no Windows .

    Editor do Registro

    1. Navegue até Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device.
    2. No menu Editar, aponte para Novo e selecione Valor de Várias Cadeias de Caracteres. Nomeie-o como ForcedPhysicalSectorSizeInBytes.
    3. Modifique o novo valor, digite * 4095. Selecione OK e feche o editor do Registro.

    Prompt de comando como administrador

    1. Adicione a chave.

      REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" /v "ForcedPhysicalSectorSizeInBytes" /t   REG_MULTI_SZ /d "* 4095" /f
      
    2. Valide se a chave foi adicionada com êxito.

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

    PowerShell como administrador

    1. Adicione a chave.

      New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" -Name   "ForcedPhysicalSectorSizeInBytes" -PropertyType MultiString        -Force -Value "* 4095"
      
    2. Valide se a chave foi adicionada com êxito.

       Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" -Name   "ForcedPhysicalSectorSizeInBytes"
      
  • Você pode iniciar o SQL Server especificando o sinalizador de rastreamento 1800. Para obter mais informações, consulte DBCC TRACEON. Esse sinalizador de rastreamento não está habilitado por padrão. O sinalizador de rastreamento 1800 força o SQL Server a usar 4 KB como o tamanho do setor para todas as operações de leitura e gravação. Quando você estiver executando o SQL Server em discos com tamanho de setor físico maior que 4 KB, o uso do sinalizador de rastreamento 1800 simulará uma unidade nativa de 4 KB, que é o tamanho do setor com suporte para o SQL Server.

  • Em vez disso, instale o SQL Server em dispositivos Windows 10 disponíveis.

Mais informações

Os drivers NVMe nativos do Windows 11 foram atualizados para incluir o tamanho real do setor relatado diretamente pelos dispositivos de armazenamento NVMe. Isso foi feito em vez de depender das informações emuladas dos drivers do sistema de arquivos.

Os drivers do Windows 10 não relatam o tamanho do setor de origem do armazenamento físico.

Os drivers aprimorados do Windows 11 desconsideram a emulação que os dispositivos de armazenamento NVMe comuns estão usando. Por exemplo, fsutil exibe um tamanho de setor de 8 KB ou 16 KB, em vez de emular o tamanho de setor de 4 KB necessário exigido pelo Windows.

A tabela a seguir fornece uma comparação dos tamanhos de setor relatados pelos sistemas operacionais. Este exemplo ilustra as diferenças entre Windows 10 e Windows 11 usando o mesmo dispositivo de armazenamento. Para os valores de PhysicalBytesPerSectorForAtomicity e PhysicalBytesPerSectorForPerformance, Windows 10 exibe 4 KB e Windows 11 exibe 16 KB.

Exemplo de saída de 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

Confira também