Pendahuluan Di Microsoft SQL Server 2005, Anda bisa mengecilkan file log transaksi dalam database untuk menghapus halaman yang tidak digunakan. Mesin database akan menggunakan kembali ruang secara efisien. Namun, ketika file log transaksi tumbuh secara tidak terduga, mungkin perlu mengecilkan file log transaksi secara manual.
Artikel ini menjelaskan cara menggunakan pernyataan DBCC SHRINKFILE untuk secara manual mengecilkan berkas log transaksi di database SQL Server 2005 dalam model pemulihan penuh. Metode yang Anda gunakan untuk mengecilkan file log transaksi di SQL Server 2005 mungkin berbeda dari metode yang Anda gunakan untuk mengecilkan file log transaksi di SQL Server 2000. Untuk informasi selengkapnya tentang cara mengecilkan berkas log transaksi di SQL Server 2000, klik nomor artikel di bawah ini untuk melihat artikel terkait di Pangkalan Pengetahuan Microsoft:
272318 ( http://support.microsoft.com/kb/272318/ ) INF: Menyusut log transaksi di SQL Server 2000 menggunakan DBCC SHRINKFILE
Kembali ke atas
Informasi lebih lanjut Di SQL Server 2005, operasi penyusutan (DBCC SHRINKFILE) segera berupaya mengecilkan berkas log transaksi tertentu ke ukuran yang diperlukan. Untuk mengecilkan file log transaksi secara manual dalam model pemulihan penuh, pertama-tama buat cadangan file log transaksi. Kemudian, gunakan pernyataan DBCC SHRINKFILE untuk mengecilkan file log transaksi.
Secara umum, mengecilkan file log transaksi di SQL Server 2005 lebih cepat daripada mengecilkan file log transaksi di SQL Server 2000. Alasannya adalah SQL Server 2005 Log Manager membuat atau menggunakan kembali file log virtual yang tidak aktif berdasarkan urutan penyimpanan disk fisik. Oleh karena itu, bagian file log transaksi yang tidak aktif biasanya terletak di akhir file.
Misalnya, file log transaksi mungkin berisi 100 file log virtual, namun hanya menggunakan 2 file log virtual. SQL Server 2000 menyimpan file log virtual pertama yang digunakan di awal file log transaksi dan file log virtual kedua yang digunakan di tengah file log transaksi. Untuk mengecilkan file log transaksi menjadi hanya 2 file log virtual, SQL Server akan mengisi sisa file log virtual kedua dengan entri log virtual. SQL Server memindahkan awal log logis ke file log virtual berikutnya yang tersedia dan ditentukan oleh manajer log. Manajer log dapat membuat file log virtual di tengah file log transaksi, sebelum file log virtual terakhir yang aktif. Dalam hal ini, beberapa operasi pencadangan log dan beberapa operasi penyusutan harus digunakan agar berhasil mengecilkan file log transaksi menjadi 2 file log virtual. Skenario terburuk, Anda mungkin harus menggunakan 50 operasi pencadangan log dan 50 operasi penyusutan agar berhasil mengecilkan file log transaksi menjadi 2 file log virtual.
Namun, di SQL Server 2005, Anda dapat segera mengecilkan file log transaksi menjadi 2 file log virtual dengan menjalankan pernyataan DBCC SHRINKFILE. Hal ini karena Manajer Log SQL Server 2005 membuat 2 berkas log virtual sesuai urutan penyimpanannya pada disk fisik. Kedua file log virtual terletak di awal file log transaksi.
Ketika Anda mencoba mengecilkan berkas log transaksi yang memiliki sedikit ruang kosong di SQL Server 2005, Anda harus melakukan operasi pencadangan log lainnya. Operasi pencadangan log tambahan ini memotong file log transaksi ke ukuran yang lebih kecil. Saat mengecilkan file log transaksi di SQL Server 2000, selain melakukan tiga langkah di atas, Anda juga harus melakukan operasi pencadangan log ini. Untuk informasi selengkapnya, lihat artikel Pangkalan Pengetahuan Microsoft yang disebutkan di bagian "Pendahuluan". Untuk mengecilkan file log transaksi dengan ruang kosong yang sangat sedikit di SQL Server 2005, ikuti langkah-langkah berikut: 1. Cadangkan file log transaksi sehingga sebagian besar file log virtual aktif tidak aktif. Oleh karena itu, file log virtual yang tidak aktif dapat dihapus pada langkah selanjutnya. Untuk melakukannya, jalankan pernyataan Transact-SQL yang serupa dengan pernyataan Transact-SQL berikut. LOG CADANGAN <NamaDatabase> KE DISK = '<File Cadangan>'
Catatan: Dalam pernyataan ini, <DatabaseName> adalah pengganti nama database yang akan dicadangkan. Dalam pernyataan ini, <BackupFile> adalah pengganti path lengkap ke file cadangan.
Misalnya, jalankan pernyataan Transact-SQL berikut. LOG CADANGAN TestDB KE DISK='C:TestDB1.bak'
2. Kecilkan file log transaksi. Untuk melakukannya, jalankan pernyataan Transact-SQL yang mirip dengan pernyataan Transact-SQL berikut. DBCC SHRINKFILE (<NamaFile>, <TargetSize>) DENGAN NO_INFOMSGS
Catatan: Dalam pernyataan ini, <FileName> adalah pengganti nama file log transaksi. Dalam pernyataan ini, <TargetSize> adalah pengganti untuk ukuran target file log transaksi. Besaran target harus masuk akal. Misalnya, Anda tidak dapat mengecilkan file log transaksi menjadi kurang dari 2 file log virtual.
3. Jika pernyataan DBCC SHRINKFILE tidak mengecilkan file log transaksi ke ukuran target, jalankan pernyataan BACKUP LOG yang disebutkan di langkah 1 untuk membuat lebih banyak file log virtual tidak aktif.
4. Jalankan pernyataan DBCC SHRINKFILE yang disebutkan pada langkah 2. Setelah melakukan ini, file log transaksi harus mendekati ukuran target.
Singkatnya, algoritma yang digunakan Manajer Log untuk memilih berkas log virtual berikutnya telah berubah di SQL Server 2005. Oleh karena itu, mengecilkan file log transaksi di SQL Server 2005 berbeda dengan mengecilkan file log transaksi di SQL Server 2000 dengan cara berikut: • Jika file log memiliki banyak ruang kosong, mengecilkan file log transaksi di SQL Server 2005 lebih cepat daripada mengecilkan file log transaksi di SQL Server 2000 Menyusut file log transaksi lebih cepat.
• Menyusut file log transaksi di SQL Server 2005 sama dengan mengecilkan file log transaksi di SQL Server 2000 jika file log tidak memiliki ruang kosong.
• Menyusut file log transaksi di SQL Server 2005 memerlukan satu operasi pencadangan log lagi dibandingkan melakukan operasi ini di SQL Server 2000 jika file log memiliki ruang kosong yang sangat sedikit.