Solucionar problemas de 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 iniciar uma instância de SQL Server no Windows 11 e no Windows Server 2022. Este artigo é válido para todas as versões lançadas de SQL Server.

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

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

Sintomas

Cenário nº 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 dos Serviços de 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 nº 2: Instale qualquer versão do SQL Server em um dispositivo Windows 10. Em seguida, você atualiza o sistema operacional no dispositivo para Windows 11. Quando você tenta iniciar SQL Server em um dispositivo Windows 11, o serviço falha ao iniciar e no log de erros 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 nº 3: Instale qualquer versão do SQL Server em um dispositivo Windows 10. Em seguida, você atualiza o sistema operacional no dispositivo para Windows 11. Quando você tenta iniciar SQL Server em um dispositivo Windows 11, o serviço não é iniciado. No log de erros SQL Server, você nota 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 nº 4: Você instala o LocalDB em um dispositivo Windows 11. A configuração falha e, no log de erros 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ê nota 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 de SQL Server instalada manualmente ou em uma instância localDB instalada por aplicativos.

Cenário nº 5: Se você tentar usar o tamanho do setor acima de 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.

Motivo

Durante a inicialização do serviço, SQL Server inicia o processo de recuperação de 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 do setor de disco maior que o tamanho do setor de 4 KB com suporte.

Quando isso ocorrer, SQL Server não poderá iniciar devido ao sistema de arquivos sem suporte, pois SQL Server atualmente dá suporte a tamanhos de armazenamento do 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 e PhysicalBytesPerSectorForPerformance, retornados PhysicalBytesPerSectorForAtomicity em bytes e, se forem diferentes, mantenha o maior para verificar o tamanho do setor de disco. Um valor de 4096 indica um tamanho de armazenamento do setor de 4 KB.

Além disso, esteja ciente 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 a política de suporte da Microsoft para discos rígidos do setor de 4 KB no artigo do 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 os limites de suporte do setor de unidade de disco rígido em SQL Server artigo.

Resoluções

No momento, a Microsoft está investigando esse problema.

Considere uma das seguintes soluções:

  • Se você tiver várias unidades nesse sistema, poderá especificar um local diferente para os arquivos de banco de dados após a conclusão da instalação do SQL Server. Verifique se essa unidade reflete um tamanho de setor com suporte ao consultar os fsutil comandos. SQL Server atualmente dá suporte a tamanhos de armazenamento do setor de 512 bytes e 4.096 bytes.

  • Você pode adicionar uma chave de registro, o que fará com que o comportamento de Windows 11 e posterior seja semelhante a Windows 10. Isso força o tamanho do setor a ser emulado como 4 KB. Para adicionar a chave do ForcedPhysicalSectorSizeInBytes registro, use o Registro Editor ou execute comandos conforme descrito na seção PowerShell como Administrador. Você deve reiniciar 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. Entretanto, sérios problemas poderão ocorrer caso você modifique o Registro incorretamente. Portanto, siga essas etapas cuidadosamente. Para mais proteção, faça o backup do registro antes de modificá-lo. Em seguida, você poderá restaurar o registro se ocorrer 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 ForcedPhysicalSectorSizeInBytes.
    3. Modifique o novo valor, digite em * 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 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 SQL Server usar 4 KB como o tamanho do setor para todas as operações de leitura e gravação. Quando você estiver executando SQL Server em discos com tamanho de setor físico maior que 4 KB, usando o sinalizador de rastreamento 1800 simulará uma unidade nativa de 4 KB, que é o tamanho do setor compatível com SQL Server.

  • Instale SQL Server em dispositivos Windows 10 disponíveis.

Mais informações

Windows 11 drivers NVMe nativos 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 Windows 10 não relatam o tamanho do setor de origem do armazenamento físico.

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

A tabela a seguir fornece uma comparação dos tamanhos do 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.

Saída de exemplo 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