Log transaksi untuk database 'database_name' penuh karena 'XTP_CHECKPOINT'

26

Saya punya pertanyaan tentang XTP_CHECKPOINT.

Saya menggunakan SQL Server 2014. Saya memiliki database yang dalam mode model pemulihan SEDERHANA. Ini juga direplikasi.

Tidak ada transaksi terbuka. Saya telah menjalankan DBCC OPENTRANdan mengembalikan:

"Tidak ada transaksi terbuka yang aktif."

Tapi saya terus mendapatkan pesan ini setiap kali saya mencoba membuat atau menjatuhkan tabel atau menghapus data:
(Saya telah mengganti nama database saya yang sebenarnya dengan kata database_name)

"Log transaksi untuk database 'database_name' penuh karena 'XTP_CHECKPOINT'"

Adakah yang tahu mengapa ini mungkin terjadi, dan, yang lebih penting, bagaimana saya bisa menghentikannya?

Dan ya, database benar-benar dalam mode model pemulihan SEDERHANA. yaitu log transaksi harus terpotong secara otomatis.

Kebetulan, database lain yang saya miliki dalam mode pemulihan penuh melakukan hal yang sama, mulai mengembalikan kesalahan yang sama:

Log transaksi untuk database 'database_name' penuh karena 'XTP_CHECKPOINT'

Saya mencoba mengubah pengaturan pertumbuhan log ke pertumbuhan tidak terbatas, tetapi tidak membiarkan saya, mengembalikan kesalahan yang sama.

Saya dapat mereproduksi masalah tanpa hal-hal XTP sama sekali, kecuali hanya filegroup. Begini caranya: http://pastebin.com/jWSiEU9U

pengguna3469285
sumber

Jawaban:

8

Saya memiliki masalah yang sama: Saya tidak memiliki replikasi tetapi begitu saya menggunakan tabel Memory Optimized sebagai tes, database dalam mode pemulihan sederhana, tetapi log transaksi saya tidak terpotong. Pemotongan manual, bahkan setelah pencadangan penuh, memberikan kesalahan:

Tidak dapat mengecilkan file log X karena file log logis yang terletak di akhir file sedang digunakan.

Pos pemeriksaan manual gagal:

Msg 41315, Level 16, Negara 4, Jalur N operasi Checkpoint gagal dalam database X.

Sebuah pos pemeriksaan manual hanya berhasil tepat setelah me-restart Layanan SQL, yang akan menyebabkan keadaan Pemulihan 4 jam karena ukuran basis data Multi Tb saya. Saya juga mencoba mengatur autogrowth ke ukuran tertentu, tetapi semuanya akhirnya melakukan hal yang sama: mengisi log transaksi sampai tidak ada ruang yang tersisa.

Akhirnya, setelah berhari-hari mencoba dan meneliti, saya menemukan solusi untuk masalah saya dengan menginstal Pembaruan Kumulatif 3 untuk SQL Server 2014 SP1

Gregory Liénard
sumber
9

Pertama-tama pastikan replikasi tidak menyebabkan hal ini, seperti yang dinyatakan dalam item sambungkan "log_wait_reuse_desc = XTP_CHECKPOINT tidak selalu berarti bahwa pekerja pos pemeriksaan XTP menahan pemotongan log." jadi mulailah dengan berlarisp_repltrans dan memastikan bahwa semua data telah didistribusikan.

Lalu ada potongan kecil ini di sini:

"Itu terjadi pada database, yang memiliki grup file memori dioptimalkan, tidak peduli ada tabel dioptimalkan memori atau tidak.

Solusi saat ini adalah mengatur AutoGrown menjadi ukuran tetap. Atau, mengubah mode pemulihan menjadi Sederhana, dan menyusutkan log. "

Jadi, jika membersihkan replikasi tidak berhasil coba yang berikut ini:

checkpoint;
dbcc shrinkfile (Logfile, truncateonly)
alter database [database] modify file (filename = 'TRANSACTIONLOG', FILEGROWTH = 5MB)

Tidak disebutkan apakah ini untuk file log atau file database tetapi mari kita mulai dengan mencoba file log dan jika tidak maka cobalah mengatur file database untuk memperbaiki pertumbuhan:

Spörri
sumber
3

Saya dapat mengatasi masalah ini dengan menambahkan file log lain, yang kemudian memungkinkan saya untuk menjalankan pencadangan penuh, menyesuaikan ukuran file log primer dan membatasi pertumbuhan bersamaan dengan menghapus file log tambahan yang ditambahkan untuk menyelesaikan masalah XTP_CHECKPOINT.

pengguna78285
sumber
1

Saya sudah mengalami ini dengan pelanggan. File data FILESTREAM log dan dalam memori berada di drive yang sama. Mereka membuat file log baru (beberapa menyarankan ini) tetapi sistem tidak dapat CHECKPOINT karena gagal membuat file pos pemeriksaan di memori (* .HKCKP).

Coba kosongkan ruang pada drive dengan data FILESTREAM dalam memori.

Phil Grayson
sumber