我们有一个在 SQL Server 2014 Enterprise 实例(评估许可证)上运行的大型数据库。由于成本限制,我们不得不将其移至新的 SQL Server 2017 标准实例(按核心许可证;刚刚更新到 CU6)。编辑:该数据库与 SQL Server 2014 (120) 兼容,并通过恢复完整备份和日志备份进行传输。
除了更改跟踪外,一切正常。我们使用更改跟踪来定位最近的更改并保持非规范化表是最新的;denorm 表用于快速填充 Web 应用程序的网格。
更改跟踪正在工作,但显然自动清理没有。我们收到严重性 016 警报:
更改跟踪自动清理在
tablename
. 如果失败仍然存在,请检查该表tablename
是否被任何进程阻塞。
对于每张抱怨的桌子(大约 4 张不同的桌子),这些大约每半小时出现一次。
我们已经尝试过这里描述的手动清理......它也出现“边桌被阻止”错误。
所以这是我的选择:
- 关闭这个特定的警报,希望没有任何事情发生。
- 关闭自动清理;在日常维护时段内安排手动清理。
- 不知道我还能做什么。
除了“我应该怎么做才能阻止这种情况?”,我的另一个问题是“为什么在 2014 企业版没有发生这种情况时,2017 年标准会发生这种情况?”
这似乎是一个已知问题,并且已被 Microsoft 识别。您可以阅读以下分辨率:
解析度
列出了存在此问题的版本:
请从链接中阅读更多内容。
以上希望有所帮助。
我也在经历这个。这些警报似乎与 SQL 2017 的 CU 2 和 SQL 2016 的 SP2 中的自动清理过程的改进有关:
https://support.microsoft.com/en-us/help/4054842/improvements-to-the-change-tracking-cleanup-process-in-sql-server