it-swarm.it

È possibile ripristinare bak sql-server e ridurre contemporaneamente il registro?

Abbiamo un file bak di un cliente che abbiamo trasferito ai nostri uffici di sviluppo per l'indagine sui problemi. Il backup è attualmente di 25 GB e il database ripristinato ha circa le stesse dimensioni, tuttavia è necessario ripristinarlo. Credo che ciò sia dovuto al fatto che il database è impostato per avere una dimensione del registro delle transazioni di 75 GB. Dopo aver ripristinato il database, possiamo ridurre il file di registro, ma c'è un modo per farlo nel ripristino?

26
Adam Butler

Non è possibile ridurre il backup come parte del processo di ripristino. Il database ripristinato deve apparire esattamente come il database di origine, con l'unica eccezione che è possibile modificare le lettere e le cartelle dell'unità.

16
mrdenny

Esiste un hack non-non-mai-fare-questo-in-un-ambiente-live che puoi usare dove lo spazio è limitato, ripristinando il file di registro in una cartella compressa. Tentare questo comprimendo una cartella esistente e ripristinandola, si verificherà un errore, quindi è necessario imbrogliare con un collegamento simbolico.

  1. Crea una cartella compressa D:\LogCompressed\
  2. Crea un collegamento simbolico alla cartella compressa mklink /D /J D:\Log\ D:\LogCompressed\

  3. Ripristina il tuo database con il file ldf che punta a D:\Log\

  4. Riduci il file di registro a una dimensione appropriata

  5. Scollegare il database, spostare il file di registro in una cartella non compressa, allegare

È sporco, imbroglia, NON FARLO MAI IN DIRETTA, ma funziona. Il test rapido di un database appena creato con un file di registro da 32 MB mostra che occupa 330 KB sul disco quando viene compresso, decomprime la cartella e sulla dimensione del disco torna a 32 MB.

34

Credo che il motivo per cui il backup è di 25 GB e il database ripristinato sia di 100 GB sia non a causa del registro delle transazioni. Qual è la mia ipotesi, i tuoi file di database hanno 100 GB di spazio allocato e ci sono 25 GB di dati effettivi nel database.

C'è una differenza tra spazio file del database allocato e spazio dati utilizzato. In questo caso, il primo è di 100 GB e il secondo è di 25 GB.

9
Thomas Stringer