我对SQLServer 2014 (12.0.4439.1) 数据库有一个奇怪的问题。
几个月前,我创建了一个数据文件和表来使用内存中的基本功能,看看是否可以改进我们的一些流程。完成后,我想清理所有内容,但我不知道“一旦创建了内存优化文件组,就只能通过删除数据库来删除它”。
好吧,我不想删除我的数据库(因为它在现实生活中被真实的人使用)也不想重新创建/重新填充它(相当多的工作)。
所以一切都保持这样:一个普通的数据库,有一个空文件用于内存中的东西。一切进展顺利。
但是,有一次,这个数据库的日志文件变得疯狂:它的大小增加了,没有什么可以阻止它。当我尝试缩小它时,我经常(并非总是)得到“由于 XTP_CHECKPOINT 导致日志文件缩小失败”,这看起来与内存中的功能有关。并且在尝试备份/服务重启/检查点和其他深奥的命令后,可以正确操作和缩小日志文件。
这么简单:我不明白发生了什么。
有人经历过吗?和/或知道避免/修复这种奇怪行为的干净方法?
[编辑] :该问题看起来与https://support.microsoft.com/en-us/kb/3090141非常相似,但在我的情况下,已经安装了修补程序并且建议的解决方法(离线/在线)不起作用
通常,在 SQLServer 日志中,每小时都会有一条HkHostLogCheckpointRecord()消息。当此消息停止出现时,日志文件开始增加。是原因还是结果?这就是问题所在....
好的,我没有找到明确的解释,但找到了解决方法。
这是因为用于存储内存对象的文件已满,无法分配更多空间。所以没有更多的检查点,日志和越来越多的增长。即使数据库中没有内存对象(因此数据文件没有增长的原因),这种情况也会发生。
允许文件增长更多是行不通的,您需要将另一个文件添加到您的文件组。
所以,知道了这一点,很容易解决。
故事的结论:仔细监控内存中的数据大小更为重要。