Po instalaci této opravy hotfix je nutné povolit příznak trasování 1800 jako spouštěcí parametr na všech serverech nebo replikách, které mají velikost fyzického sektoru 512 bajtů a restartovat je, aby tato oprava hotfix fungovala správně.
Příznaky
Představte si následující scénář:
-
V Microsoft SQL Server povolíte funkci Skupiny dostupnosti AlwaysOn nebo Logshipping.
-
Disky, které ukládají soubory protokolu primární a sekundární repliky ve skupině dostupnosti AlwaysOn, mají různé velikosti sektorů. Nebo v prostředích protokolování mají disky, na kterých se ukládají soubory protokolu pro primární servery logshipping a sekundární servery logshipping, různé velikosti sektorů. Příklad:
-
Soubor protokolu primární repliky se nachází na disku s velikostí sektoru 512 bajtů. Soubor protokolu sekundární repliky se ale nachází na disku s velikostí sektoru 4 kB.
-
Soubor protokolu primární repliky se nachází v místním systému s velikostí sektoru 512 bajtů. Sekundární replika se ale nachází na disku Windows Azure Storage, který má velikost sektoru 4 kB.
-
V tomto scénáři je v protokolu chyb SQL Server zaznamenána následující chybová zpráva. Chybová zpráva může po restartování chvíli pokračovat, pokud byly protokoly, které se před restartováním serveru nepoužily na sekundární server.
Došlo k chybně zarovnaným vstupně-výstupním operacím protokolu X, což vyžadovalo návrat zpět na synchronní vstupně-výstupní operace. Aktuální vstupně-výstupní operace je v souboru ....
Synchronizace skupiny dostupnosti nebo protokolování navíc běží velmi pomalu kvůli synchronním vstupně-výstupním operacím. Pokud je sekundární replika ve Windows Azure Storage, trvá dokončení procesu synchronizace mnohem déle, než se čekalo.
Poznámka: K tomuto problému dochází při použití nových jednotek, které mají velikost sektoru 4 kB, a starých jednotek, které mají velikost sektoru 512 bajtů. Další informace o nových jednotkách najdete v tématu SQL Server – Nové jednotky Použití velikosti sektorů 4K a SQL Server – Velikost sektorů úložiště/ VHDx a 4K sektorů.
Řešení
Problém byl poprvé opraven v následující kumulativní aktualizaci SQL Server.
Kumulativní aktualizace 5 pro SQL Server 2014 /en-us/help/3011055
Kumulativní aktualizace 3 pro SQL Server 2012 SP2 /en-us/help/3002049
13 kumulativní aktualizace pro SQL Server 2012 SP1 /en-us/help/3002044
Po použití opravy hotfix a povolení příznaku trasování 1800 jako spouštěcí parametr na všech replikách serverů spuštěných na disku s velikostí sektoru 512 bajtů, zaznamenáte malé zvýšení velikosti následujících souborů:
-
Soubor transakčního protokolu
-
Zálohování protokolů
Kromě toho si všimnete, že v protokolu chyb SQL Server primárního serveru jsou zaznamenány následující zprávy:
Konec protokolu pro databázi "<název databáze>" se přepíše tak, aby odpovídal nové velikosti sektoru 4096 bajtů.
Jedná se o informační zprávu, kterou je možné bezpečně ignorovat.
Každá nová kumulativní aktualizace pro SQL Server obsahuje všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí kumulativní aktualizace. Podívejte se na nejnovější kumulativní aktualizace pro SQL Server:
Řešení
Chcete-li tento problém vyřešit, přesuňte soubor transakčního protokolu v cíli na jednotku, která má bajty na fyzický sektor nastavený na 512 bajtů.
Stav
Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části Informace v tomto článku jsou určeny pro produkt.
Další informace
Osvědčeným postupem je zajistit, aby všechny disky na všech replikách (alespoň všechny disky, které hostují soubory protokolu) měly stejnou velikost sektorů. Ve smíšených prostředích, kde má sekundární fyzický sektor 512 bajtů a primární sektor velikost 4 kB, by se tf 1800 měl používat jako příznak spuštění na všech serverech nebo replikách, které mají velikost fyzického sektoru 512 bajtů a restartovaly se. Tím se zajistí, že formát průběžného vytváření protokolů používá velikost sektoru 4 kB.
Další informace o tom, jak SQL Server fungují s většími sektory, najdete v následujícím příspěvku na blogu podpory:
SQL Server –Prostory úložiště/VHDx a velikost
sektoru 4K
K určení hodnoty Bajty na fyzický sektor můžete použít nástroj příkazového řádku Fsutil. Pokud se tento parametr ve výstupu nezobrazuje, musíte použít opravu hotfix uvedenou v článku znalostní báze 982018.
Pokud chcete ověřit typ jednotky, kterou máte, postupujte takto:
-
Na příkazovém řádku se zvýšenými oprávněními spusťte následující příkaz:
Fsutil fsinfo ntfsinfo x: Poznámka: Zástupný symbol x představuje jednotku, kterou kontrolujete.
-
Pomocí hodnot Bajty na sektor a Bajty na fyzický sektor určete typ jednotky, kterou máte. K tomu použijte následující tabulku:
Hodnota Bajty na sektor
Hodnota Bajty na fyzický sektor
Typ jednotky
4096
4096
Nativní 4K
512
4096
Rozšířený formát (označovaný také jako 512E)
512
512
Nativní 512 bajtů