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 .
- Navegue até
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device
. - No menu Editar, aponte para Novo e selecione Valor de Várias Cadeias de Caracteres. Nomeie-o como
ForcedPhysicalSectorSizeInBytes
. - Modifique o novo valor, digite
* 4095
. Selecione OK e feche o editor do Registro.
Prompt de comando como administrador
Adicione a chave.
REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" /v "ForcedPhysicalSectorSizeInBytes" /t REG_MULTI_SZ /d "* 4095" /f
Valide se a chave foi adicionada com êxito.
REG QUERY "HKLM\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" /v "ForcedPhysicalSectorSizeInBytes"
Adicione a chave.
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" -Name "ForcedPhysicalSectorSizeInBytes" -PropertyType MultiString -Force -Value "* 4095"
Valide se a chave foi adicionada com êxito.
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" -Name "ForcedPhysicalSectorSizeInBytes"
- Navegue até
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 |