Po použití tejto rýchlej opravy musíte povoliť príznak sledovania 1800 ako parameter spustenia na všetkých serveroch alebo replikách, ktoré majú veľkosť fyzického sektora 512 bajtov a reštartujte ich, aby táto rýchla oprava fungovala správne.
Príznaky
Zvážte nasledujúci scenár:
-
V službe Microsoft SQL Server zapnete funkciu Skupiny dostupnosti AlwaysOn alebo Logshipping.
-
Disky, ktoré ukladajú súbory denníka primárnej a sekundárnej repliky v skupine dostupnosti AlwaysOn (AG) majú rôzne veľkosti sektora. Alebo v prostredí Logshipping, disky, ktoré ukladajú súbory denníka pre logshipping primárne servery a Logshipping sekundárne servery majú rôzne veľkosti sektora. Príklad:
-
Primárny súbor denníka replík sa nachádza na disku s veľkosťou sektora 512 bajtov. Sekundárny súbor denníka replík sa však nachádza na disku s veľkosťou sektora 4 kilobajty (kB).
-
Primárny súbor denníka replík sa nachádza v lokálnom lokálnom systéme, ktorý má veľkosť sektora 512 bajtov. Sekundárna replika sa však nachádza na disku Windows Azure Storage, ktorý má veľkosť sektora 4 kilobajty (kB).
-
V tomto scenári sa v denníku chýb SQL Server zaznamená nasledujúce chybové hlásenie. Chybové hlásenie môže po reštartovaní chvíľu pokračovať, ak sa vyskytli denníky, ktoré neboli použité na sekundárne pred reštartovaním servera.
Tam boli X nesprávne zarovná log IOs, ktoré vyžadujú padajúce späť na synchrónne IO. Aktuálny IO je v súbore ....
Synchronizácia AG alebo Logshipping sa navyše spúšťa veľmi pomaly, pretože synchrónne I/Os. Ak sa sekundárna replika nachádza v úložisku Windows Azure Storage, dokončenie procesu synchronizácie trvá oveľa dlhšie, než sa očakávalo.
Poznámka: Tento problém sa vyskytuje pri použití oboch nových jednotiek, ktoré majú veľkosť sektora 4 KB a staré jednotky, ktoré majú veľkosť sektora 512 bajtov. Ďalšie informácie o nových jednotkách nájdete v téme SQL Server – nové jednotky Používajú veľkosť sektora 4K a SQL Server – ukladacie priestory/ VHDx a veľkosť sektora 4K.
Riešenie
Problém bol najprv opravený v nasledujúcej kumulatívnej aktualizácii SQL Server.
Kumulatívna aktualizácia 5 pre SQL Server 2014 /en-us/help/3011055
Kumulatívna aktualizácia 3 pre SQL Server 2012 SP2 /en-us/help/3002049
Kumulatívna aktualizácia 13 pre SQL Server 2012 SP1 /en-us/help/3002044
Po použití rýchlej opravy a povoliť príznak sledovania 1800 ako parameter spustenia na všetkých replikách serverov spustených na disku, ktorý má veľkosť sektora 512 bajtov, všimnete si malý nárast veľkosti nasledujúcich súborov:
-
Súbor denníka transakcií
-
Zálohy denníka
Okrem toho si všimnete, že v denníku chýb SQL Server primárneho servera sa zaznamenávajú nasledujúce hlásenia:
Chvost denníka databázy "<názov databázy>" sa prepíše tak, aby sa zhodoval s veľkosťou nového sektora 4096 bajtov.
Toto je informačná správa, ktorú možno bezpečne ignorovať.
Každá nová kumulatívna aktualizácia pre SQL Server obsahuje všetky rýchle opravy a všetky opravy zabezpečenia, ktoré boli zahrnuté do predchádzajúcej kumulatívnej aktualizácie. Pozrite si najnovšie kumulatívne aktualizácie pre SQL Server:
Alternatívne riešenie
Ak chcete tento problém obísť, presuňte súbor denníka transakcií v cieli na jednotku, ktorá má bajty na fyzický sektor nastavený ako 512 bajtov.
Stav
Spoločnosť Microsoft potvrdzuje, že ide o problém v produktoch spoločnosti Microsoft, ktoré sú uvedené v tomto článku v časti Informácie v tomto článku sa týkajú nasledujúcich produktov.
Ďalšie informácie
Najvhodnejším postupom je uistiť sa, že všetky disky vo všetkých replikách (aspoň všetky disky, ktoré hosťujú súbory denníka) majú rovnakú veľkosť sektora. V zmiešaných prostrediach, kde sekundárny má fyzický sektor 512 bajtov a primárny má veľkosť sektora 4 kB, TF 1800 by sa mal použiť ako spúšťací príznak na všetkých serveroch alebo replikách, ktoré majú veľkosť 512 bajtov fyzického sektora a reštartujú sa. Tým sa zabezpečí, že formát priebežného vytvárania denníka bude mať veľkosť sektora 4 kB.
Ďalšie informácie o tom, ako SQL Server funguje s väčšími veľkosťami sektorov, nájdete v nasledujúcom príspevku na blogu podpory:
SQL Server–Storage spaces/VHDx and 4K sector size
Pomôcku príkazového riadka Fsutil môžete použiť na určenie hodnoty bajtov na fyzický sektor. Ak sa tento parameter vo výstupe nezobrazuje, musíte použiť rýchlu opravu, ktorá je zadaná v článku databázy KB 982018.
Ak chcete overiť typ jednotky, ktorú máte, postupujte takto:
-
Spustite nasledujúci príkaz v príkazovom riadku bez oprávnení:
Fsutil fsinfo ntfsinfo x: Poznámka: Zástupný objekt x predstavuje jednotku, ktorú kontrolujete.
-
Použite hodnoty pre bajty na sektor a bajty na fyzický sektor na určenie druhu jednotky, ktorú máte. Použite na to nasledujúcu tabuľku:
Hodnota "Bajty na sektor"
Hodnota "Bajty na fyzický sektor"
Typ jednotky
4096
4096
4K natívne
512
4096
Rozšírený formát (známy aj ako 512E)
512
512
512-bajtový natívny