ID Artikel: 317375 - Kajian Terakhir: 24 September 2011 - Revisi: 2.0 Log transaksi mengembang secara tidak terduga atau menjadi penuh di komputer yang menjalankan SQL Server
Pada Halaman iniRINGKASAN Dalam SQL Server 7.0, SQL Server 2000, dan SQL Server
tahun 2005, dengan pengaturan autogrow, file log transaksi dapat memperluas
secara otomatis. Biasanya, ukuran file log transaksi menstabilkan ketika itu dapat memegang maksimum jumlah transaksi yang dapat terjadi antara transaksi log pemenggalan bahwa pos pemeriksaan atau transaksi login Backup memicu. Namun, dalam beberapa situasi mungkin log transaksi menjadi sangat besar dan kehabisan ruang atau menjadi penuh. Biasanya, Anda menerima pesan galat berikut ketika file log transaksi mengambil yang tersedia disk space dan tidak dapat memperluas lagi: Kesalahan: 9002,
Keparahan: 17, negara: 2 File log untuk database ' %. * ls' penuh. Kesalahan: 9002, tingkat keparahan: 17
Negara: 2 Log transaksi untuk database ' %. * ls' penuh. Untuk mencari tahu mengapa ruang dalam log tidak dapat digunakan kembali, melihat kolom log_reuse_wait_desc di sys.databases Selain itu, ekspansi log transaksi dapat mengakibatkan situasi berikut:
PenyebabEkspansi log transaksi mungkin terjadi karena berikut alasan atau skenario:
Transaksi tidak terikatTransaksi eksplisit tetap tidak terikat jika Anda tidak mengeluarkan eksplisit KOMIT atau ROLLBACK perintah. Ini paling sering terjadi ketika aplikasi masalah batal atau melakukan transaksi SQL membunuh perintah tanpa perintah ROLLBACK yang bersangkutan. Pembatalan transaksi terjadi, tetapi tidak mengembalikan; oleh karena itu, SQL Server tidak bisa memotong setiap transaksi yang terjadi setelah ini karena transaksi dibatalkan masih terbuka. Kamu bisa menggunakan DBCC OPENTRAN Transact-SQL referensi untuk memverifikasi apakah ada aktif transaksi dalam database pada waktu tertentu. Untuk informasi lebih lanjut tentang skenario khusus ini, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:295108
(http://support.microsoft.com/kb/295108/
)
Transaksi tidak lengkap dapat memegang sejumlah besar kunci dan memblokir kasus 171224
(http://support.microsoft.com/kb/171224/
)
Memahami bagaimana perintah Transact-SQL membunuh bekerja Selain itu, baca topik "DBCC OPENTRAN" dalam SQL
Server buku secara Online.Skenario yang dapat mengakibatkan tidak terikat transaksi:
Transaksi yang sangat besarDaftar penelepon dalam file log transaksi yang terpotong pada transaksi-transaksi oleh dasar. Jika cakupan transaksi besar, yang transaksi dan transaksi dimulai setelah itu tidak dihapus dari transaksi masuk kecuali jika selesai. Hal ini dapat mengakibatkan file log yang besar. Jika transaksi ini cukup besar, log file mungkin menggunakan ruang disk yang tersedia dan menyebabkan "log transaksi penuh" jenis pesan galat seperti 9002 kesalahan. Untuk informasi tambahan tentang apa yang harus dilakukan ketika Anda menerima kesalahan jenis ini pesan ini disediakan dalam bagian "Informasi lebih lanjut" pada artikel ini. Selain itu, dibutuhkan banyak waktu dan SQL Server overhead untuk roll kembali besar transaksi.Operasi: DBCC DBREINDEX dan membuat indeksKarena dari perubahan dalam model pemulihan dalam SQL Server 2000 Ketika Anda menggunakan modus pemulihan penuh dan Anda menjalankan DBCC DBREINDEX, transaksi log dapat memperluas secara signifikan lebih dibandingkan dengan SQL Server 7.0 di mode pemulihan setara dengan penggunaan pilih ke atau massal salinan dan dengan "Trunc. Logoff di chkpt.".Meskipun ukuran transaksi login Setelah operasi DBREINDEX mungkin menjadi masalah, pendekatan ini menyediakan lebih baik log mengembalikan kinerja. Sementara memulihkan dari transaksi log backupIni dijelaskan dalam berikut Basis Pengetahuan Microsoft Artikel:232196
(http://support.microsoft.com/kb/232196/
)
Log ruang yang digunakan tampaknya tumbuh setelah pemulihan dari cadangan Jika Anda menetapkan SQL Server 2000 menggunakan login massal mode dan Anda mengeluarkan massal salinan atau pilih ke pernyataan, sejauh setiap berubah ditandai dan kemudian membuat cadangan ketika Anda membuat cadangan log transaksi. Meskipun ini memungkinkan Anda untuk membuat cadangan log transaksi dan pulih dari kegagalan bahkan Setelah Anda menjalankan operasi massal, ini menambah ukuran transaksi log. SQL Server 7.0 tidak menyertakan fitur ini. Catatan hanya SQL Server 7.0 extent yang berubah, tapi itu tidak merekam extent sebenarnya. Oleh karena itu, penebangan mengambil secara signifikan lebih banyak ruang di SQL Server 2000 daripada di SQL Server 7.0 dalam massal-Log mode tapi tidak sebanyak itu tidak penuh modus. Aplikasi-aplikasi client tidak memproses semua hasilJika Anda mengeluarkan permintaan untuk SQL Server dan Anda tidak menangani hasil segera, Anda dapat memegang kunci dan mengurangi concurrency pada Anda server.Sebagai contoh, misalkan Anda mengeluarkan permintaan yang memerlukan baris dari dua halaman untuk mengisi Anda hasil. SQL Server mem-parsing, compiles, dan menjalankan query. Ini berarti bahwa bersama kunci ditempatkan pada dua halaman yang berisi baris yang harus Anda miliki untuk memenuhi permintaan Anda. Selain itu, Anggaplah bahwa tidak semua baris cocok ke SQL Server TDS satu paket (metode yang server berkomunikasi dengan klien). TDS paket diisi dan dikirim untuk klien. Jika semua baris dari halaman pertama yang sesuai pada paket TDS, SQL Server melepaskan kunci bersama pada halaman tetapi meninggalkan kunci bersama pada Halaman kedua. SQL Server kemudian menunggu untuk klien untuk meminta lebih banyak data (Anda dapat melakukan ini dengan menggunakan DBNEXTROW/DBRESULTS, SQLNextRow/SQLResults, atau FetchLast/FetchFirst sebagai contoh). Ini berarti bahwa kunci bersama diadakan sampai klien permintaan sisa data. Lain proses yang permintaan data dari halaman kedua mungkin diblokir. Kueri waktu sebelum log transaksi selesai perluasan dan Anda menerima pesan kesalahan 'Log lengkap' palsuDalam situasi ini, meskipun ada cukup ruang disk, Anda masih menerima pesan galat "keluar dari ruang".Situasi ini bervariasi untuk SQL Server 7.0 dan SQL Server 2000. Permintaan dapat menyebabkan transaksi login otomatis memperluas jika log transaksi hampir penuh. Ini dapat mengambil waktu tambahan, dan permintaan mungkin berhenti atau dapat melebihi time-out yang periode karena ini. SQL Server 7.0 kembali kesalahan 9002 dalam situasi ini. Masalah ini tidak berlaku untuk SQL Server 2000. Dalam SQL Server 2000, jika Anda memiliki Auto-menyusut pilihan diaktifkan untuk database, ada waktu yang sangat kecil selama log transaksi mencoba untuk memperluas secara otomatis, tetapi tidak dapat karena Auto-menyusut fungsi berjalan secara bersamaan. Ini juga dapat menyebabkan palsu contoh-contoh kesalahan 9002. Biasanya, perluasan otomatis file log transaksi terjadi dengan cepat. Namun, dalam situasi berikut, itu mungkin memakan waktu lebih lama daripada biasa:
Transaksi unreplicatedUkuran log transaksi penerbit database dapat memperluas jika Anda menggunakan replikasi. Transaksi yang mempengaruhi benda-benda yang direplikasi ditandai sebagai "Untuk replikasi." Transaksi ini, seperti transaksi tidak terikat, tidak dihapus setelah Checkpoint atau setelah Anda kembali ke atas log transaksi sampai tugas log-pembaca salinan transaksi ke database distribusi dan unmarks mereka. Jika masalah dengan log-pembaca tugas untuk mencegah dari membaca ini transaksi di The penerbit database, ukuran log transaksi dapat terus memperluas sebagai jumlah transaksi non-direplikasi meningkat. Anda dapat menggunakan DBCC OPENTRAN Transact-SQL referensi untuk mengidentifikasi tertua non-direplikasi transaksi.Untuk informasi lebih lanjut mengenai pemecahan masalah unreplicated transaksi, lihat topik "sp_replcounters" dan "sp_repldone" dalam SQL Server Buku secara Online. Untuk informasi selengkapnya, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft: 306769
(http://support.microsoft.com/kb/306769/
)
FIX: Log transaksi snapshot diterbitkan database tidak terpotong 240039
(http://support.microsoft.com/kb/240039/
)
FIX: DBCC OPENTRAN tidak melaporkan replikasi informasi 198514
(http://support.microsoft.com/kb/198514/
)
FIX: Restore untuk server baru menyebabkan transaksi untuk tetap dalam log INFORMASI LEBIH LANJUT Log transaksi untuk database dikelola sebagai satu set
Virtual file log (VLFs) berdasarkan ukuran yang menentukan SQL Server internal
ukuran total log file dan kenaikan pertumbuhan digunakan ketika log
memperluas. Log selalu mengembang dalam satuan seluruh VLFs dan itu hanya dapat memampatkan
untuk VLF batas. VLF dapat ada di salah satu dari tiga negara: aktif, RECOVERABLE,
dan dapat digunakan kembali.
Untuk informasi tambahan, lihat topik "Transaksi Log fisik arsitektur" dalam SQL Server buku secara Online. Selain itu, Anda dapat melihat diagram yang sangat baik dan diskusi ini pada halaman 190 "Dalam SQL Server 7.0" (Soukup, Ron. Di dalam Microsoft SQL Server 7.0, Microsoft Press, 1999), dan juga di halaman 182 melalui 186 "Dalam SQL Server 2000" (Delaney, Kalen. Di dalam Microsoft SQL Server 2000, Microsoft Press, 2000). Memiliki database SQL Server 7.0 dan SQL Server 2000 pilihan untuk autogrow dan autoshrink. Anda dapat menggunakan opsi ini untuk membantu Anda untuk mengecilkan atau memperluas log transaksi. Untuk informasi lebih lanjut tentang bagaimana ini pilihan dapat mempengaruhi server Anda, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft: 315512
(http://support.microsoft.com/kb/315512/
)
Pertimbangan untuk Autogrow dan Autoshrink konfigurasi dalam SQL Server Ada perbedaan antara pemotongan versus
kompresi file log transaksi. Ketika memotong SQL Server
file log transaksi, ini berarti bahwa isi file (misalnya,
transaksi berkomitmen) akan dihapus. Namun, ketika Anda melihat ukuran
file dari perspektif ruang disk (misalnya, dalam Windows Explorer atau
dengan menggunakan DIR perintah) ukuran tetap tidak berubah. Namun, ruang di dalam
berkas .ldf sekarang digunakan kembali oleh transaksi yang baru. Hanya ketika SQL Server
menyusut ukuran file log transaksi, apakah Anda benar-benar melihat perubahan dalam
ukuran fisik log file.Untuk informasi lebih lanjut tentang cara untuk mengecilkan transaksi log, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft: 256650
(http://support.microsoft.com/kb/256650/
)
Cara menciutkan log transaksi SQL Server 7.0 272318
(http://support.microsoft.com/kb/272318/
)
Menciutkan log transaksi di SQL Server 2000 dengan DBCC SHRINKFILE Untuk informasi lebih lanjut tentang SQL Server 6,5 log transaksi
penggunaan, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:110139
(http://support.microsoft.com/kb/110139/
)
Penyebab log transaksi SQL mengisi Bagaimana cara menemukan pertanyaan yang mengkonsumsi sejumlah besar ruang log di SQL Server 2005Dalam SQL Server 2005, Anda dapat menggunakan tampilan dinamis manajemen sys.dm_tran_database_transactions (DMV) untuk menemukan pertanyaan yang mengkonsumsi sejumlah besar ruang log. Kolom berikut dalam sys.dm_tran_database_transactions DMV dapat berguna:
Untuk informasi lebih lanjut tentang sys.dm_tran_database_transactions DMV, kunjungi Web site Microsoft Developer Network (MSDN) berikut: http://msdn2.Microsoft.com/en-us/library/ms186957.aspx
(http://msdn2.microsoft.com/en-us/library/ms186957.aspx)
Untuk informasi lebih lanjut tentang sys.dm_tran_session_transactions DMV, kunjungi Website MSDN berikut: http://msdn2.Microsoft.com/en-us/library/ms188739.aspx
(http://msdn2.microsoft.com/en-us/library/ms188739.aspx)
Untuk informasi lebih lanjut tentang sys.dm_exec_requests DMV, kunjungi Website MSDN berikut: http://msdn2.Microsoft.com/en-us/library/ms177648.aspx
(http://msdn2.microsoft.com/en-us/library/ms177648.aspx)
Berlaku bagi:
Penerjemahan MesinPENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah. Klik disini untuk melihat versi Inggris dari artikel ini:317375
(http://support.microsoft.com/kb/317375/en-us/
)
| Sumber Lain Situs Pendukung Lain
KomunitasCari Bantuan SekarangTerjemahan Artikel
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


Kembali ke atas
