标签: dbcc

为什么“DbccFilesCompact”状态为“暂停”?

我在 600G 数据文件上运行 SHRINK 文件。

目前,状态报告为“暂停”,并sys.dm_exec_requests.percent_completeDbccFilesCompact命令会报告它正在运行(但很慢)

有没有办法检查它为什么被暂停以及如何使它运行更顺畅?


仅供参考- 检查状态的 SQL 查询

select T.text, R.Status, R.Command, DatabaseName = db_name(R.database_id)
       , R.cpu_time, R.total_elapsed_time, R.percent_complete
from   sys.dm_exec_requests R
       cross apply sys.dm_exec_sql_text(R.sql_handle) T
order by Command
Run Code Online (Sandbox Code Playgroud)

maintenance dbcc sql-server sql-server-2005

12
推荐指数
2
解决办法
4万
查看次数

修复数据库中不一致的页面

我们有一个 SQL 2000 DB。由于 Raid 阵列故障,服务器崩溃。现在,当我们运行 DBCC CHECKDB 时,我们得到一个错误,即 9 个页面中有 27 个一致性错误。

当我们在这些页面上运行 DBCC PAGE 时,我们得到:

Msg 8939, Level 16, State 106, Line 1
Table error: Object ID 1397580017, index ID 2, page (1:8404521). Test (m_freeCnt == freeCnt) failed. Values are 2 and 19.
Msg 8939, Level 16, State 108, Line 1
Table error: Object ID 1397580017, index ID 2, page (1:8404521). Test (emptySlotCnt == 0) failed. Values are 1 and 0.
Run Code Online (Sandbox Code Playgroud)

由于指示的索引是非聚集的,并且是由包含 2 列的唯一 constarint 创建的,因此我们尝试删除并重新创建索引。这导致了以下错误:

CREATE UNIQUE …
Run Code Online (Sandbox Code Playgroud)

dbcc sql-server

8
推荐指数
1
解决办法
972
查看次数

我应该在完整备份之前运行 DBCC checkdb 吗?还是之后?

我们混合使用 SQL 2000、2005 和 2008 服务器,并且我们总是在完全备份之前每晚运行一次 DBCC CHECKDB,理论上您希望在备份之前确保数据库处于良好状态. (显然,备份的完整验证只能通过测试还原来完成,但这是一个稍微不同的主题。)

假设我无法将 DBCC 卸载到备份服务器或其他东西(这将是理想的),那么 DBCC CHECKDB 后跟 FULL BACKUP 是最佳顺序吗?

我发现讨论此问题的唯一“最佳实践”文档是我在 TechNet 上找到的 2006 年SAP SQL Server 维护最佳实践

理想情况下,应该在执行联机数据库备份之前运行使用 DBCC CHECKDB 的一致性检查。

这个建议正确吗?它是否适用于所有版本的 SQL?

(如果这有帮助,提出这个问题的部分动机是 DBCC 运行时似乎每晚都有相当大的变化,所以我们不能确切地依赖备份何时完成,这使得我们的磁带存档计划工作困难。另外,如果维护时间很长并且由于任何原因必须取消,我宁愿备份可靠地完成而不是 DBCC。)

backup checkdb dbcc sql-server

6
推荐指数
1
解决办法
8782
查看次数