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


     在使用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

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

  • 相关阅读:
    08 字体属性设置-font-family
    函数-函数进阶-生成器调用方法
    函数-函数进阶-斐波那契
    函数-函数进阶-列表生成式
    函数-函数进阶-装饰器带参数2
    函数-函数进阶-装饰带参数的函数
    函数-函数进阶-装饰器流程分析
    函数-函数进阶-装饰器
    函数-函数进阶-闭包
    函数-函数进阶-作用域的查找空间
  • 原文地址:https://www.cnblogs.com/iiwen/p/6269669.html
Copyright © 2020-2023  润新知