由于“ XTP_CHECKPOINT”,数据库“ database_name”的事务日志已满


26

我有一个问题XTP_CHECKPOINT

我正在使用SQL Server2014。我有一个处于简单恢复模型模式的数据库。它也在被复制。

没有公开交易。我已经跑了DBCC OPENTRAN,它返回:

“没有活跃的公开交易。”

但是,每当我尝试创建或删除表或删除数据时,我都会不断收到此消息:(
我用单词替换了实际的数据库名称database_name

“由于'XTP_CHECKPOINT',数据库'database_name'的事务日志已满”

有谁知道为什么会发生这种情况,更重要的是,我如何才能阻止这种情况发生?

是的,数据库确实处于SIMPLE恢复模型模式。即,事务日志应自动截断。

顺便说一句,我处于完全恢复模式的另一个数据库做了同样的事情,开始返回同样的错误:

由于“ XTP_CHECKPOINT”,数据库“ database_name”的事务日志已满

我试图将日志增长设置更改为无限制增长,但它不允许我返回相同的错误。

除了文件组之外,我完全不需要任何XTP东西就可以重现该问题。方法如下:http : //pastebin.com/jWSiEU9U

Answers:


8

我有一个类似的问题:我没有复制,但是一旦我使用内存优化表作为测试,数据库就处于简单恢复模式,但是我的事务日志没有被截断。手动截断,即使是在完全备份之后,也会出现错误:

由于正在使用位于文件末尾的逻辑日志文件,因此无法收缩日志文件X。

手动检查点失败:

消息41315,级别16,状态4,行N在数据库X中的检查点操作失败。

手动检查点仅在重新启动SQL Service之后才成功,由于我的Multi Tb数据库大小,这将导致4小时处于恢复状态。我还尝试将自动增长设置为特定的大小,但是最终都做相同的事情:填满事务日志,直到没有剩余空间为止。

最后,经过日复一日的尝试和研究,我通过安装SQL Server 2014 SP1累积更新3找到了解决问题的方法


9

首先,请确保复制不会引起这种情况,如连接项中所述,“ log_wait_reuse_desc = XTP_CHECKPOINT不一定表示XTP检查点工作程序正在阻止日志截断。” 因此sp_repltrans,请先运行并确保已分发所有数据。

然后是这个小片段

“它发生在具有内存优化文件组的数据库上,无论是否具有内存优化表。

当前的解决方法是将“自动增长”设置为固定大小。或者,将恢复模式更改为“简单”,并缩小日志。”

因此,如果清理复制不起作用,请尝试以下操作:

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

没有说明这是用于日志文件还是用于数据库文件,但是让我们先尝试日志文件,如果不是,则尝试将数据库文件设置为固定增长:


3

我可以通过添加另一个日志文件来解决该问题,然后允许我运行完整备份,调整主日志文件的大小和限制增长,同时删除为解决XTP_CHECKPOINT问题而添加的额外日志文件。


1

我已经和一个客户一起经历过。日志和内存FILESTREAM数据文件位于同一驱动器上。他们创建了一个新的日志文件(很少有人建议这样做),但是由于无法创建内存中的检查点文件(* .HKCKP),系统无法对其进行检查。

尝试使用内存中的FILESTREAM数据释放驱动器上的空间。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.