it-swarm-eu.dev

Jak zkrátím protokol transakcí v databázi SQL Server 2008?

Jak zkrátím protokol transakcí v databázi SQL Server 2008?

Jaké jsou možné nejlepší způsoby?

Zkoušel jsem to z blogu takto:

1) Z databáze nastavení po jednoduché zotavení, zmenšení souboru a opětovné nastavení při úplném zotavení ve skutečnosti ztrácíte svá cenná data protokolu a nebudete schopni obnovit bod v čase. Nejen to, že nebudete moci používat následné soubory protokolu.

2) Zmenšující se soubor databáze nebo databáze přidává fragmentaci.

Můžete dělat spoustu věcí. Nejprve začněte s řádným zálohováním protokolu pomocí následujícího příkazu namísto jejich zkrácení a časté ztráty.

BACKUP LOG [TestDb] TO  DISK = N'C:\Backup\TestDb.bak'
GO

Odstraňte kód SHRINKING souboru. Pokud používáte správné zálohy protokolu, váš soubor protokolu obvykle (opět obvykle nejsou vyloučeny zvláštní případy) neroste příliš velký.

9
Neo

Nejbezpečnější a správný způsob, jak zkrátit soubor protokolu, je-li databáze v režimu úplného zotavení, je zálohování transakčního protokolu (bez TRUNCATE_ONLY. Toto bude v budoucích verzích zastaralé a není vhodné).

Zní to, jako byste chtěli svůj soubor protokolu později zmenšit. V takovém případě byste spustili příkaz DBCC SHRINKFILE(yourTLogName). Existuje volitelný druhý parametr pro požadovanou velikost, na kterou se má zmenšit.

4
Thomas Stringer

Protokol můžete zálohovat do nulového zařízení:

backup log [databasename] to disk = 'nul';

Nebo můžete přepnout model obnovy na jednoduchý a pak znovu na plný/hromadný.

8
Luis Gonzalez

Pokud vám záleží na vašich záznamech a chcete se jich jen zbavit:

Změňte model obnovy z plného na jednoduchý a poté zpět na plný. Zmenšete soubor pomocí DBCC SHRINKFILE s argumentem TRUNCATEONLY

Následující příkaz změní model obnovy z úplného na jednoduchý

ALTER DATABASE <databse_name> SET RECOVERY SIMPLE

Následující příkaz změní model obnovy na plnou

ALTER DATABASE <databse_name> SET RECOVERY FULL

Chcete-li najít název souboru protokolu, můžete použít následující dotaz

SELECT name 
FROM sys.master_files
WHERE database_id = DB_ID('<databse_name>')

Zmenšit soubor

DBCC SHRINKFILE (N'<logical_file_name_of_the_log>' , 0, TRUNCATEONLY)

Viz Jaký je příkaz k oříznutí souboru protokolu serveru SQL? , kde najdete další informace

6
Alex