我有一个 2Tb+ SAP 数据库,其中包含 8 个数据文件,第一个文件已经增长到填满我们 HP EVA5000 上的可用磁盘空间,现在增长发生在新文件上。我们将 SQL 从 SQL Server 2000 升级到 2005,Checkdb 的工作方式不同,现在失败,没有空间创建快照。我们在准备新的 I/O 子系统时,为每个文件添加了 50Gb 作为临时措施。问题是:我们如何监控快照使用情况?如果 Checkdb 现在启动,它有更多空间,然后填满,会发生什么?如果您发现它即将用完空间,您可以取消 CheckDb 吗?
答案1
哦,我昨晚在 SQL Server 2008 Internals 一书中读到了这个(感谢 Paul Randal)。如果空间不足,快照将被删除。我的意思是,在 SQL 2005+ 中,内部引擎实际上是在后台创建快照并针对该快照运行 checkdb。您无法访问此快照,因为它对您不可见,但它仍占用文件所在的文件系统的空间。如果没有足够的空间来创建此系统快照,它将抛出错误并回滚该快照。
您可以做的是手动在另一个具有足够空间的卷上创建数据库快照,然后针对该快照运行 checkdb。您的结果应该仍然有效,因为快照只是针对基础数据的页面更改差异的集合。我相信 Paul 可以更雄辩地回答这个问题,但这是它的基本要点。
是的,您可以取消正在运行的 checkdb 查询。
答案2
请查看 Paul 博客上的这篇文章,它能回答您的问题: