Instalacja programu SQL Server kończy się niepowodzeniem z powodu błędu rozmiaru sektora na maszynie wirtualnej platformy Azure z systemem Windows Server

Dotyczy: SQL Server, SQL Server na maszynie wirtualnej Azure - Windows

Podsumowanie

Ten artykuł pomaga rozwiązać problem, który występuje podczas ręcznego instalowania wystąpienia SQL Server na maszynie wirtualnej Microsoft Azure działającej w systemie Windows. Podczas instalowania SQL Server na maszynie wirtualnej Azure używającej dysku NVMe o rozmiarze sektora natywnego o rozmiarze większym niż 4 KB instalacja kończy się niepowodzeniem, ponieważ SQL Server pliki danych, takie jak master.mdf nie mogą być hostowane na woluminie o rozmiarze sektora 8 KB. W tym artykule wyjaśniono, dlaczego w nowszych seriach maszyn wirtualnych platformy Azure występuje niezgodność rozmiaru sektora oraz jak wymusić rozmiar sektora 4 KB, aby instalacja programu SQL Server zakończyła się pomyślnie na tym dysku.

Objawy

Podczas instalowania wystąpienia programu SQL Server na maszynie wirtualnej platformy Azure z systemem Windows instalacja kończy się niepowodzeniem, a dziennik błędów programu SQL Server wyświetla następujący komunikat podczas próby uruchomienia aparatu bazy danych:

Nie można użyć pliku "...\master.mdf", ponieważ został on pierwotnie sformatowany z rozmiarem sektora 4096 i jest teraz na woluminie o rozmiarze sektora 8192. Przenieś plik do woluminu o rozmiarze sektora, który jest taki sam jak lub mniejszy niż rozmiar oryginalnego sektora.

Plik dziennikaSummary.txtw folderze konfiguracji SQL Server zawiera również wpisy podobne do następujących:

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.

Ten problem może wystąpić w przypadku instalacji lokalnych, ale istnieje większe prawdopodobieństwo jego wystąpienia podczas instalowania programu SQL Server na maszynie wirtualnej platformy Azure.

Przyczyna

Ten problem występuje ze względu na rozmiar sektora dysku w przypadku niektórych rozmiarów maszyn wirtualnych platformy Azure. Nowsze serie maszyn wirtualnych platformy Azure, takie jak Dadsv6, Eadsv6 i Fasv6, używają interfejsu pamięci masowej opartego wyłącznie na NVMe i wymagają obrazu systemu operacyjnego z obsługą NVMe. Te serie maszyn wirtualnych udostępniają dyski z domyślnym natywnym rozmiarem sektora 8 KB, którego SQL Server nie obsługuje dla plików bazy danych. SQL Server obsługuje dyski o natywnych rozmiarach sektora 512 bajtów i 4 KB. Jeśli maszyna wirtualna Azure zostanie wdrożona z rozmiarem sektora 8 KB, a następnie zainstalujesz SQL Server, instalacja może zakończyć się niepowodzeniem. Aby uzyskać więcej informacji, zobacz Typy magazynu dla SQL Server.

Uwaga

Ten scenariusz ma zastosowanie tylko w przypadku ręcznego instalowania SQL Server na maszynie wirtualnej Azure. Nie ma zastosowania podczas wdrażania obrazu maszyny wirtualnej SQL Server z Azure Marketplace, ponieważ te obrazy są wstępnie skonfigurowane do używania rozmiaru sektora 4 KB.

Typy dysków i maszyn wirtualnych, których dotyczy problem

W następujących scenariuszach najczęściej występuje niezgodność rozmiaru sektora:

  • Lokalne dyski NVMe z serii maszyn wirtualnych w wersji 6 (na przykład Dadsv6, Eadsv6, Easv6 i Fasv6), które uwidaczniają rozmiar sektora natywnego o rozmiarze 8 KB.
  • Premium SSD v2 i Ultra Disk, gdy tworzysz dysk z logicznym rozmiarem sektora 4096 bajtów, ale udostępniasz go za pośrednictwem hosta, który zgłasza fizyczny rozmiar sektora 8 KB.

Dyski danych Standard HDD, Standard SSD i Premium SSD (v1), które dołączasz do wcześniejszych serii maszyn wirtualnych, zwykle mają rozmiar sektora 4 KB i nie dotyczy ich ten problem.

Rozwiązanie

Aby rozwiązać ten problem, wymuś, aby maszyna wirtualna platformy Azure używała sektorów o rozmiarze 4 KB, a następnie ponownie zainstaluj program SQL Server.

  1. Jeśli SQL Server jest już zainstalowana, odinstaluj ją. W przeciwnym razie przejdź do następnego kroku.

  2. Dodaj klucz rejestru ForcedPhysicalSectorSizeInBytes.

  3. Sprawdź, czy rozmiar sektora wynosi 4 KB, uruchamiając następujące polecenie w wierszu polecenia z podwyższonym poziomem uprawnień:

    fsutil fsinfo sectorinfo <volume pathname>
    
  4. Uruchom ponownie maszynę wirtualną platformy Azure.

  5. Zainstaluj ponownie program SQL Server.

Poniższy zrzut ekranu przedstawia dane wyjściowe fsutil fsinfo sectorinfo polecenia dla E: dysku, który ma rozmiar sektora 8 KB:

Zrzut ekranu przedstawiający dane wyjściowe wiersza polecenia o rozmiarze sektora 8 KB.

Poniższy zrzut ekranu przedstawia dane wyjściowe tego samego polecenia dla E: dysku po dodaniu klucza rejestru do użycia rozmiaru sektora 4 KB:

Zrzut ekranu przedstawiający dane wyjściowe wiersza polecenia o rozmiarze sektora 4 KB.

ForcedPhysicalSectorSizeInBytes Klucz rejestru jest ustawieniem na poziomie systemu operacyjnego. Wszystkie dyski, które są aktualnie dołączone, oraz wszystkie dołączone później dyski używają rozmiaru sektora 4 KB do momentu usunięcia tego klucza rejestru.