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

Resumo

Este artigo fornece soluções para solucionar problemas de falhas de instalação e inicialização do SQL Server causadas por um tamanho do setor do disco do sistema maior que os 4 KB suportados. Esses erros ocorrem quando dispositivos de armazenamento modernos, como SSDs (unidades de estado sólido) NVMe, relatam um tamanho do setor de disco do sistema maior que 4 KB. Os sintomas incluem falhas na Instalação do SQL Server, erros 5178 e 5179, falha no identificador de inicialização ou recuperação do Mecanismo de Banco de Dados, avisos de "E/S de log desalinhadas" e falhas de aplicativo ntdll.dll. As soluções se aplicam a todas as versões lançadas do SQL Server, incluindo o LocalDB.

Instalar SQL Server em um computador com um tamanho de setor de disco do sistema maior que 4 KB pode resultar nos cenários a seguir.

Cenário 1: mover o arquivo para um volume com um tamanho de setor compatível

Ao tentar usar o tamanho do setor maior que 4 KB, você 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.

Cenário 2: Não foi possível localizar o identificador de inicialização do Mecanismo de Banco de Dados

Quando você tenta instalar uma instância de SQL Server em uma VM (máquina virtual) Azure executando Windows, a instalação falha e você recebe a seguinte mensagem de erro no log de erros SQL Server quando o mecanismo tenta iniciar durante a instalação:

Não é possível usar o arquivo '...\master.mdf' porque ele foi originalmente formatado com tamanho de setor 4096 e agora está em um volume com tamanho de setor 8192. Mova o arquivo para um volume com um tamanho de setor que seja igual ou menor que o tamanho de setor original.

Além disso, você pode ver as seguintes informações no arquivo de log Summary.txt na pasta de instalação do SQL Server:

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.

Para obter mais informações, consulte problemas na instalação do SQL Server devido ao erro de tamanho do setor em uma máquina virtual Azure no Windows Server 2022.

Cenário 3: Falha ao aguardar o processo de recuperação do Mecanismo de Banco de Dados

Ao instalar qualquer versão do SQL Server, você verá o seguinte erro para o componente Mecanismo de Banco de Dados Services 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. 

Ou você verá os seguintes erros no Log de erros do SQL Server:

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.

Cenário 4: Houve 256 IOs de log desalinhados que exigiram a recaída para e/S síncrona

Instale qualquer versão do SQL Server em um dispositivo Windows 10. Em seguida, você atualiza o sistema operacional (SO) no 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 as seguintes entradas:

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 5: erro de aplicação do SQL Server causado por ntdll.dll

Instale 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 as seguintes entradas:

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 6: mover o arquivo para um volume com um tamanho de setor igual ou menor que o tamanho original do setor

Você instala o LocalDB em um dispositivo Windows 11 e a instalação falha. No log de erros do SQL Server, você observa as seguintes entradas:

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 no dispositivo Windows 11, você observa as seguintes entradas:

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.

Causa de erros de tamanho do setor de disco no SQL Server

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.

Alguns novos dispositivos de armazenamento e drivers de dispositivos apresentam um tamanho de setor de disco maior que o tamanho de setor de 4 KB compatível.

Quando esse problema ocorre, o SQL Server não pode ser iniciado devido ao sistema de arquivos sem suporte, pois o 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 pelos valores PhysicalBytesPerSectorForAtomicity e PhysicalBytesPerSectorForPerformance, retornados em bytes. Se forem diferentes, mantenha o maior para verificar o tamanho do setor de disco. Um valor de 4096 indica um tamanho de armazenamento de setor de 4 KB.

Além disso, consulte o artigo Política de suporte da Microsoft para discos rígidos com setores 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 limites de suporte do tamanho do setor da unidade de disco rígido em SQL Server.

Etapas de resolução para erros de tamanho do setor de disco no SQL Server

  • Atualmente, a chave do Registro é necessária para instalar com êxito o ForcedPhysicalSectorSizeInBytes SQL Server ao usar plataformas de armazenamento modernas, como NVMe, que fornecem um tamanho de setor maior que 4 KB. Essa chave do Registro do sistema operacional Windows força o tamanho do setor a ser emulado como 4 KB.

    Para adicionar a chave do Registro ForcedPhysicalSectorSizeInBytes, use o Editor do Registro ou execute os comandos conforme descrito na seção Prompt de Comando ou PowerShell. Não é necessário adicionar o Sinalizador de Rastreamento 1800 para este cenário.

    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, certifique-se de seguir essas etapas com atenção. Para proteção acrescida, faça 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 .

    1. Execute o Editor do Registro como administrador.
    2. Navegue até Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device.
    3. Selecione Editar>Novo>Valor de múltiplas cadeias de caracteres e dê a ele o nome de ForcedPhysicalSectorSizeInBytes.
    4. Clique com o botão direito do mouse no nome, selecione Modificar, e digite * 4095 no campo Dados do valor.
    5. Selecione OK e feche o Editor do Registro.

    Você deve reinicializar o dispositivo depois de adicionar a chave do Registro para que essa alteração entre em vigor.

  • Se você não adicionar a chave do Registro e 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. Certifique-se de que a unidade apresente um tamanho de setor compatível ao consultar os comandos fsutil. Atualmente, o SQL Server oferece suporte a tamanhos de armazenamento de setor de 512 bytes e 4.096 bytes.

Cuidado

Se você já criou um pool de armazenamento com discos com um tamanho de setor maior que 4 KB para hospedar arquivos SQL Server, primeiro remova o pool de armazenamento, aplique um dos métodos de solução de problemas mencionados neste artigo e recompile o pool de armazenamento antes de tentar instalar SQL Server no pool de armazenamento ou pools.

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 se basear nas informações que são emuladas a partir dos drivers do sistema de arquivos.

Windows 10 drivers 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 usam. 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