it-swarm-eu.dev

Je možné obnovit bak serveru SQL a zároveň zmenšit protokol?

Máme klientský soubor od klienta, který jsme přenesli do našich vývojových kanceláří za účelem vyšetřování problémů. Záloha je aktuálně 25 GB a obnovená databáze má přibližně stejnou velikost, je však třeba ji obnovit 100 GB. Věřím, že je to proto, že databáze je nastavena tak, aby měla velikost protokolu transakcí 75 GB. Po obnovení databáze můžeme soubor protokolu zmenšit, existuje však způsob, jak to provést při obnovení?

26
Adam Butler

Neexistuje způsob, jak zmenšit zálohu jako součást procesu obnovy. Obnovená databáze musí vypadat přesně jako zdrojová databáze, s jedinou výjimkou je, že můžete měnit písmena a složky jednotek kolem.

16
mrdenny

Existuje do-not-ever-do-this-in-a-live-environment hack, který můžete použít tam, kde je omezený prostor, obnovením souboru protokolu do komprimované složky. Pokus o komprimaci existující složky a její obnovení povede k chybě, takže musíte podvádět pomocí symbolického odkazu.

  1. Vytvořit komprimovanou složku D:\LogCompressed\
  2. Vytvořte symbolický odkaz na komprimovanou složku mklink /D /J D:\Log\ D:\LogCompressed\

  3. Obnovte databázi pomocí souboru ldf směřujícího na D:\Log\

  4. Zmenšit soubor protokolu na odpovídající velikost

  5. Odpojte databázi, přesuňte soubor protokolu do nekomprimované složky, připojte

Je to špinavé, podvádí, NEZDĚLEJTE, ŽE JE ŽIVÉ, ale funguje to. Rychlý test nově vytvořené databáze se souborem protokolu 32 MB ukazuje, že při komprimaci zabírá 330 kB na disku, dekomprimuje složku a velikost disku je zpět na 32 MB.

34

Věřím, že důvodem vaší zálohy je 25 GB a obnovená databáze je 100 GB, není kvůli vašemu protokolu transakcí. Jak myslím, vaše databázové soubory mají 100 GB alokovaného prostoru a v databázi je 25 GB skutečných dat.

Existuje rozdíl mezi přidělený prostor databázového soubor a využívaný datový prostor. V tomto případě je první velikost 100 GB a druhá velikost 25 GB.

9
Thomas Stringer