Cara memangkas log transaksi di SQL Server 2012

Log transaksional dalam SQL Server 2012 mau tidak mau tumbuh dari waktu ke waktu, dan pada titik tertentu dapat mengambil semua ruang disk yang tersedia. Untuk menghindari situasi ini, SQL Server memiliki alat untuk memotong log transaksi untuk membebaskan ruang untuk digunakan kembali. Log dipangkas secara otomatis tergantung pada model pemulihan yang digunakan:

  • Sederhana (model sederhana) - log dipotong setelah mencapai tonggak sejarah
  • Penuh (model pemulihan penuh) - setelah melakukan pencadangan log, jika pos pemeriksaan tercapai setelah pencadangan terakhir

Namun, ada beberapa situasi ketika pemangkasan log secara otomatis tidak berfungsi sebagaimana mestinya, dan file log mengambil semua ruang disk. Sebagai aturan, ini terjadi secara tak terduga, dan administrator harus segera menyelesaikan masalah membebaskan ruang disk.

Dalam hal ini, saat menghubungkan ke database MS SQL, kesalahan berikut muncul:

Penyedia OLE Microsoft untuk SQL Server: Log transaksi untuk database "DBName" penuh. Untuk mengetahui mengapa ruang dalam log tidak dapat digunakan kembali, lihat kolom log_reuse_wait_desc adalah sys.database
HRESULT = 80040E14, SQLSTATE = 4 2000, asli = 9002

Ini berarti bahwa log transaksi telah mengambil semua ruang kosong dan SQL tidak lagi dapat menulis file log. Dalam situasi ini, Anda dapat memotong log transaksi secara manual.

Biasanya, situasi ini dapat terjadi ketika menggunakan model pemulihan penuh (Penuh). Dalam model ini, file log tidak terpotong sampai semua log transaksional masuk ke cadangan. Ini untuk memastikan urutan nomor catatan (LSN) yang terus-menerus dalam log. Dengan demikian, untuk membuat log terpotong, Anda perlu melakukan backup penuh dari database, atau (lebih cepat) sementara mengubah model pemulihan ke Simple.

Jadi, untuk memangkas log transaksi, mulai konsol SQL Server Management Studio (SSMS), pilih database yang Anda butuhkan, dan buka propertinya di menu konteks. Lalu buka tab Opsi dan ubah model pemulihan dari basis data (Model pemulihan) ke Sederhana.

Kemudian, di menu konteks database, pilih Tugas -> Kecilkan -> Files. Di lapangan Jenis file pilih Log, dan di bidang Nama file - nama file log. Di lapangan Shrink action perlu ditentukan Atur ulang halaman sebelum melepaskan ruang yang tidak digunakan, dan tentukan ukuran untuk mengecilkan file dan klik Ok.

Setelah memotong log, sekali lagi beralih ke model pemulihan basis data penuh (Penuh).

Semua operasi yang dijelaskan di atas dapat dilakukan dengan skrip sederhana dari Query Analizer (skrip telah berjalan di SQL Server sejak versi 2008).
GUNAKAN "DBName"
ALTER DATABASE "DBName" SET RECOVERY SIMPLE
DBCC SHRINKFILE ("DBName", "Ukuran untuk memotong log");
ALTER DATABASE "DBName" SET RECOVERY FULL

Kiat. Setelah memangkas log transaksi di SQL Server, sangat disarankan agar Anda membuat cadangan penuh dari database, seperti jika terjadi kerusakan pada file log, Anda tidak akan dapat memulihkan database menggunakan file transaksi.