• 用于确定 SQL Server recovery何时完成的脚本


    概述

    无论是硬件故障、损坏、错误查询还是良性迁移,在BI/DBA 职业生涯中,您肯定会多次遇到数据库恢复问题。通常,很难为最终用户和主管准确估计数据库何时恢复运行。一般的 DBA 可能会觉得他们好像在盯着一个黑匣子,只是等待和刷新,直到数据库完成恢复。下面分享一个更简单的方法!

    解决方案

    您知道 SQL Server 的 ERRORLOG 实际上会计算自己的估计值吗?日志条目有时可能会让人不知所措且过于详细,因此我们将使用一个简单的 SQL 查询来生成易于阅读且令人惊讶的准确估计结果。

    我们将从以下查询开始。请务必将数据库设置为“master”,并将第一行中的变量“@DBName”替换为您要调查的数据库。如果需要,您还可以修改此查询以包含更多的结果(例如“SELECT TOP 10”)

    DECLARE @DBName VARCHAR(64) = 'Warehouse'
    
    DECLARE @ErrorLog AS TABLE([LogDate] CHAR(24), [ProcessInfo] VARCHAR(64), [TEXT] VARCHAR(MAX))
    
    INSERT INTO @ErrorLog
    EXEC master..sp_readerrorlog 0, 1, 'Recovery of database', @DBName
    
    INSERT INTO @ErrorLog
    EXEC master..sp_readerrorlog 0, 1, 'Recovery completed', @DBName
    
    SELECT TOP 1
        @DBName AS [DBName]
       ,[LogDate]
       ,CASE
          WHEN SUBSTRING([TEXT],10,1) = 'c'
          THEN '100%'
          ELSE SUBSTRING([TEXT], CHARINDEX(') is ', [TEXT]) + 4,CHARINDEX(' complete (', [TEXT]) - CHARINDEX(') is ', [TEXT]) - 4)
          END AS PercentComplete
       ,CASE
          WHEN SUBSTRING([TEXT],10,1) = 'c'
          THEN 0
          ELSE CAST(SUBSTRING([TEXT], CHARINDEX('approximately', [TEXT]) + 13,CHARINDEX(' seconds remain', [TEXT]) - CHARINDEX('approximately', [TEXT]) - 13) AS FLOAT)/60.0
          END AS MinutesRemaining
       ,CASE
          WHEN SUBSTRING([TEXT],10,1) = 'c'
          THEN 0
          ELSE CAST(SUBSTRING([TEXT], CHARINDEX('approximately', [TEXT]) + 13,CHARINDEX(' seconds remain', [TEXT]) - CHARINDEX('approximately', [TEXT]) - 13) AS FLOAT)/60.0/60.0
          END AS HoursRemaining
       ,[TEXT]
    FROM @ErrorLog ORDER BY CAST([LogDate] as datetime) DESC, [MinutesRemaining]

    运行此查询后,您看到的结果集将与下面的类似:

    此查询可以根据需要经常刷新,并将返回恢复中数据库的最新日志条目。

    请注意,“MinutesRemaining”和“HoursRemaining”列代表不同度量中的相同估计值——它们不能相加。

    现在,您已经在 SQL 工具库中添加了一种直接估计数据库恢复时间的方法!

  • 相关阅读:
    python实现求解列表中元素的排列和组合
    python3.7 安装dlib和face_recognition
    Python 魔法函数
    python的68个内置函数
    生成器和生成器函数,推倒式
    函数名的应用,闭包,迭代器
    函数的进阶(动态参数,命名空间和作用域,函数的嵌套,gloabal和nonlocal关键字)
    python 函数
    文件操作
    字典和列表的删除问题, 深浅拷贝
  • 原文地址:https://www.cnblogs.com/lkj371/p/16698347.html
Copyright © 2020-2023  润新知