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 .
- 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
ForcedPhysicalSectorSizeInBytes
. - Modifique o novo valor, digite em
* 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 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 |