Bagaimana cara memotong log transaksi di database SQL Server 2008?

9

Bagaimana cara memotong log transaksi di database SQL Server 2008?

Apa cara terbaik yang mungkin?

Saya mencoba ini dari blog sebagai berikut:

1) Dari pengaturan basis data ke pemulihan sederhana, menyusutkan file dan sekali lagi pengaturan dalam pemulihan penuh, Anda sebenarnya kehilangan data log berharga Anda dan tidak akan dapat mengembalikan titik waktu. Tidak hanya itu, Anda juga tidak akan dapat menggunakan file log selanjutnya.

2) Mengecilkan file database atau menambah database fragmentasi.

Ada banyak hal yang dapat Anda lakukan. Pertama, mulailah mengambil cadangan log yang benar menggunakan perintah berikut alih-alih memotongnya dan sering kehilangannya.

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

Hapus kode SHRINKING file. Jika Anda mengambil cadangan log yang benar, file log Anda biasanya (sekali lagi biasanya, kasus khusus dikecualikan) tidak tumbuh sangat besar.

Neo
sumber
2
Oke, dan apa yang terjadi ketika Anda mencobanya?

Jawaban:

4

Cara paling aman dan benar untuk memotong file log jika basis data dalam Mode Pemulihan Penuh adalah dengan melakukan Pencadangan Log Transaksi (tanpa TRUNCATE_ONLY. Ini akan ditinggalkan dalam rilis mendatang dan tidak disarankan).

Sepertinya Anda ingin mengecilkan file log Anda setelahnya, dalam hal ini Anda akan menjalankan DBCC SHRINKFILE(yourTLogName)perintah. Ada parameter kedua opsional untuk ukuran yang diminta untuk menyusutkan.

Thomas Stringer
sumber
8

Anda dapat mencadangkan log ke perangkat null:

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

Atau Anda bisa mengganti model pemulihan menjadi sederhana dan kemudian kembali ke full / bulk lagi.

Max Vernon
sumber
Saya melakukan +1 pada ini karena ini adalah alat di dbas toolbox dan jawaban Anda tidak layak untuk suara negatif saya pikir. Saya setuju dengan sentimen bahwa cara terbaik adalah mengambil backup log transaksi tapi hei semua alat yang baik dapat digunakan dengan cara yang benar atau dengan cara yang buruk.
Martin Sjöberg
6

Jika Anda tidak peduli dengan data log Anda dan hanya ingin menyingkirkannya:

Ubah model pemulihan dari penuh menjadi sederhana, lalu kembali ke penuh. Kecilkan file menggunakan DBCC SHRINKFILE dengan argumen TRUNCATEONLY

Perintah berikut akan mengubah model pemulihan dari penuh menjadi sederhana

ALTER DATABASE <databse_name> SET RECOVERY SIMPLE

Perintah berikut akan mengubah model pemulihan menjadi penuh

ALTER DATABASE <databse_name> SET RECOVERY FULL

Untuk menemukan nama file log Anda dapat menggunakan kueri berikut

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

Kecilkan file

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

Lihat Apa perintah untuk memotong file log SQL Server? untuk informasi lebih lanjut tentang ini

Alex
sumber