Zdravím, jmenuji se Curt. Pracuji jako hlavní technik v týmu GSE.
Toto video ukazuje, jak zmenšit soubor protokolu transakcí databáze Microsoft SQL Server. Podíváme se na různé způsoby, jak zmenšit transakční protokol, a co dělat, když se operace zmenšení protokolu nespustí podle očekávání.
Máme tedy několik různých způsobů, jak soubor protokolu zmenšit. Můžeme přejít do SQL Server Management Studio. Přejděte do vlastností databáze a proveďte operaci zmenšení, kterou si ukážeme jako první.
Pak také provedeme příkaz TSQL ShrinkFile. Další věc, kterou chceme v tomto konkrétním videu probrat, je, co se stane, když operace zmenšení souboru neproběhne podle očekávání, a probereme možnosti, které budete chtít v takovém případě použít.
Budeme pracovat s databází "AdventureWorks2017", a pokud přejdeme do nabídky "Tasks" v nabídce databáze a přejdeme na "Zmenšit", máme dvě různé možnosti.
Mohli bychom pracovat na úrovni databáze, pracovat se všemi soubory v databázi nebo pracovat s konkrétními soubory, a v tomto případě rozhodně chceme jít s konkrétními soubory. Pokud se podíváte na naši paletu, ve výchozím nastavení zde vidíte možnost "Data", která se zobrazují v části "Typ souboru".
S databázovým souborem nebudeme nic dělat, místo toho se snažíme zmenšit protokol transakcí, takže protokol transakcí je doslova "Log" v části "Typ souboru". Nyní máme nějaké informace o databázi.
Protokol databáze je poměrně malý, jedná se o novou databázi a vidíme velikost, která je přidělena tomuto transakčnímu protokolu, a vidíme volné místo. Volné místo může být důležité, protože bez volného místa nemůžeme v databázi provést operaci zmenšení souboru.
K dispozici je několik různých možností. Nebudeme zde zacházet do přílišných podrobností, ale máme možnost uvolnit nevyužité místo, což v podstatě zkracuje transakční protokol. To bychom mohli spustit kliknutím na OK. Databáze by se zmenšila nebo pokusila o zmenšení. Místo toho se podíváme na možnost TSQL pro zmenšení databáze.
Dnes jsem trochu líný, takže přejdu na 'Script Action to Clipboard', která stáhne transakci, příkaz TSQL, který by byl spuštěn, kdybychom zde klikli na OK.
Kliknu na tlačítko Cancel a vložím příkaz TSQL pro zmenšení databáze AdventureWorks2017. Teď si zopakujte příkaz, jedná se o příkaz pro zmenšení souboru. Zabýváme se protokolem AdventureWorks2017 a můžeme určit, jak malý má být.
V tomto případě ji ponecháme na výchozí hodnotě nula. Pokud zde nic nedefinujete nebo ponecháte hodnotu jako nulu, pokusí se soubor zmenšit na původní velikost souboru. Máme možnost 'truncateonly', která uvolňuje volné místo v transakčním protokolu zpět do operačního systému.
Takže když to teď spouštíme, máme sestavu o tom, co to udělalo, a aktuální velikost. Tak jsme to zredukovali na zhruba jeden meg, což je pro nás skvělé. Tam nám bylo vráceno mnohem více místa na disku. Jednou z věcí, které chceme v tomto videu probrat, je to, co se stane, když spustíme zmenšovací soubor a ten se úspěšně nezdaří.
Hlavním důvodem, proč by operace zmenšeného souboru selhala, je to, že v databázi není dostatek volného místa pro spuštění příkazu zmenšeného souboru. Jako první budeme chtít zjistit množství volného místa v souboru.
Viděli jsme to v nabídce grafického uživatelského rozhraní, kde můžeme také spustit tento konkrétní příkaz – nyní jsme změnili zaměření, pracujeme s databází AdventureWorks2019. Spuštěním tohoto konkrétního příkazu, příkazu select, získáme množství volného místa, které je vidět v dané databázi.
V současné době vidíme v databázi tři megabajty volného místa. Existují dvě různé možnosti, které bychom mohli použít, abychom se pokusili zmenšit databázi v případě, že nám v této konkrétní databázi dojde volné místo. U databáze Adventure Works 2019 můžeme změnit možnost obnovení.
Pokud změníme možnost obnovení na "simple" a spustíme příkaz dbcc shrink file, měl by se soubor zmenšit na mnohem menší velikost, než je původní velikost. Kdykoli přepneme naši databázi do jednoduchého režimu, transakční protokol se zabývá aktivními transakcemi a vše, co není aktivní, je vyprázdněno z protokolu.
Můžeme spustit tento konkrétní příkaz. Většina produkčních databází bude v plném obnovení, takže přechod na simple nám umožní nebo nám alespoň umožní úspěšně spustit příkaz zmenšení souboru. Nacházíme se tedy v jednoduchém režimu a náš scénář je opět takový, že se nám to nepodařilo úspěšně spustit.
Po přechodu do jednoduchého režimu úspěšně spustíme operaci synchronizace zmenšeného souboru, poskytne nám informace o nové velikosti souboru a poslední věc, kterou bychom v tomto konkrétním případě chtěli udělat, je vrátit jej zpět do režimu úplného obnovení.
V tomto okamžiku jsme vzali nespravovatelný soubor transakčního protokolu ve smyslu příkazu zmenšit soubor a ve skutečnosti jsme jej převedli do stavu, kdy jsme schopni tento soubor zmenšit, a přepnuli jsme jej zpět do režimu, kdy jej nyní lze zálohovat, abychom měli jistotu, že získáme nejnovější informace o transakci.
Tím končí naše ukázka zmenšení protokolu transakcí databáze Microsoft SQL Server.
Děkujeme za zhlédnutí.