首页 > 数据库技术 > 详细

SQL数据库正在恢复 查看进度

时间:2017-01-10 17:03:54      阅读:686      评论:0      收藏:0      [点我收藏+]

 在使用SQL的过程中..

开启一个事务..进行大计算量..在中间出错或者强制杀死SQL服务进程..总之事务没有提交..

再次开启时sql会进入自动检查的过程..

数据库小的话问题不大..会比较快..

但是如果数据量比较大..或者日志文件比较大..这个恢复的过程会很慢很慢..给人造成假死的假象..

这个时候有性子急的小伙伴可能就另外想办法了..但也可能导致其他更严重的问题..造成损失..

下边的脚本返回一个正在恢复的数据库的进程进度..给一个指示..

 

DECLARE @DBName VARCHAR(64) = DB_Name
 
DECLARE @ErrorLog AS TABLE([LogDate] CHAR(24), [ProcessInfo] VARCHAR(64), [TEXT] VARCHAR(MAX))
 
INSERT INTO @ErrorLog
EXEC sys.xp_readerrorlog 0, 1, Recovery of database, @DBName
 
SELECT TOP 10
     [LogDate]
    ,SUBSTRING([TEXT], CHARINDEX() is , [TEXT]) + 4,CHARINDEX( complete (, [TEXT]) - CHARINDEX() is , [TEXT]) - 4) AS PercentComplete
    ,CAST(SUBSTRING([TEXT], CHARINDEX(approximately, [TEXT]) + 13,CHARINDEX( seconds remain, [TEXT]) - CHARINDEX(approximately, [TEXT]) - 13) AS FLOAT)/60.0 AS MinutesRemaining
    ,CAST(SUBSTRING([TEXT], CHARINDEX(approximately, [TEXT]) + 13,CHARINDEX( seconds remain, [TEXT]) - CHARINDEX(approximately, [TEXT]) - 13) AS FLOAT)/60.0/60.0 AS HoursRemaining
    ,[TEXT]
 
FROM @ErrorLog ORDER BY [LogDate] DESC

 

上边的变量内容换成正在恢复的数据库名称即可

SQL数据库正在恢复 查看进度

原文:http://www.cnblogs.com/iiwen/p/6269669.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!