1

我不确定发生了什么。
但是,
当我跑步时

alter database myDatabase set emergency  
ALTER DATABASE myDatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE  
dbcc checktable ('myTable', repair_allow_data_loss)  
alter database myDatabase set multi_user    

它需要这么多时间。
(运行了最后 30 分钟并且仍在运行)
谁能告诉我,是出了什么问题,或者这是检查表的正常行为。

我正在使用 sql server 2012。

谢谢。

4

1 回答 1

1

这是正常行为。请检查 SQL 服务器日志。应该记录完成百分比。

请运行它。

SELECT r.session_id,r.command,CONVERT(NUMERIC(6,2),r.percent_complete)
AS [Percent Complete],CONVERT(VARCHAR(20),DATEADD(ms,r.estimated_completion_time,GetDate()),20) AS [ETA Completion Time],
CONVERT(NUMERIC(10,2),r.total_elapsed_time/1000.0/60.0) AS [Elapsed Min],
CONVERT(NUMERIC(10,2),r.estimated_completion_time/1000.0/60.0) AS [ETA Min],
CONVERT(NUMERIC(10,2),r.estimated_completion_time/1000.0/60.0/60.0) AS [ETA Hours],
CONVERT(VARCHAR(1000),(SELECT SUBSTRING(text,r.statement_start_offset/2,
CASE WHEN r.statement_end_offset = -1 THEN 1000 ELSE (r.statement_end_offset-r.statement_start_offset)/2 END)
FROM sys.dm_exec_sql_text(sql_handle)))
FROM sys.dm_exec_requests r WHERE command = ('DBCC TABLE CHECK')

您可以检查它此时正在做什么。请输入 DBCC 语句的 session_id。

SELECT session_id,command,(SELECT text
FROM sys.dm_exec_sql_text(sql_handle))
FROM sys.dm_exec_requests 
WHERE session_id = 
于 2013-09-20T21:11:08.440 回答