SQL*_*DBA 6 sql-server dbcc-checkdb
是否建议在 tempdb 上运行 DBCC CheckDB?如果是,有人可以列出这样做的原因吗?这可以在任何 SQL Server 版本上。我拥有的是 SQL Server 2017。
不,不推荐这样做,因为这在很大程度上是在浪费时间。当 SQL Server 重新启动时,将从头开始创建 tempdb。此外,那里的数据还不够长,无法很好地表明它是否存在问题,或者底层存储是否存在问题。
当您设置 CHECKDB 例程时,Ola 的脚本和维护计划都将跳过 tempdb。
它在很大程度上无用的另一个原因是,如果 tempdb 确实被损坏,您会很快知道。在这里查看我的博客文章,其中我故意损坏了 tempdb:DBA Days: Killing TempDB softly
在 SQL Server 2019 中,我们将能够对tempdb 中的系统表使用“内存中”技术。虽然这解决了相当大的争用问题,但您不能针对内存表运行 CHECKDB。您可以检查这些的唯一方法是您是否备份了 tempdb,这不是您可以做的。
BACKUP DATABASE tempdb TO DISK = 'D:\Backups\t.bak'
Run Code Online (Sandbox Code Playgroud)
消息 3147,级别 16,状态 3,第 27 行不允许对数据库 tempdb 进行备份和还原操作。消息 3013,级别 16,状态 1,第 27 行 BACKUP DATABASE 异常终止。
如果您真的认为值得对 SQL Server 不允许您备份的数据库运行 checkdb,那么,我想这是您的维护窗口。
补充埃里克的回答
针对 tempdb 运行 DBCC CHECKDB 不会执行任何分配或目录检查,并且必须获取共享表锁才能执行表检查。这是因为出于性能原因,数据库快照在 tempdb 上不可用。这意味着无法获得所需的事务一致性。
我能想到对 tempdb 运行 checkdb 的唯一原因是当 tempdb 严重损坏时,使用它的会话开始出现错误。
此外,当 tempdb 损坏时,您的用户数据库也可能损坏。
我个人没有在 tempdb 上做过 checkdb。
| 归档时间: |
|
| 查看次数: |
2161 次 |
| 最近记录: |