📜  检查恢复百分比 tsql - TypeScript (1)

📅  最后修改于: 2023-12-03 14:55:46.290000             🧑  作者: Mango

检查恢复百分比 TSQL - TypeScript

如果你是一个TSQL (Transact-SQL) 开发者,你可能会遇到需要检查数据库恢复进度的情况。在某些情况下,数据库的恢复需要一些时间。在这种情况下,你需要知道恢复进度,以确定剩余时间和恢复状态。本文将向您展示如何使用 TypeScript 和 TSQL 来检查数据库的恢复百分比。

先决条件

在尝试检查数据库恢复百分比之前,你需要安装以下软件:

步骤
  1. 打开 SQL Server Management Studio,并连接到要检查恢复进度的数据库实例。

  2. 打开新的查询窗口,并输入以下 TSQL 代码:

SELECT command,
       s.text,
       start_time,
       percent_complete, 
       CAST(((DATEDIFF(s,start_time,GetDate()))/3600) as varchar) + ' hour(s), '
         + CAST((DATEDIFF(s,start_time,GetDate())%3600)/60 as varchar) + 'min, '
         + CAST((DATEDIFF(s,start_time,GetDate())%60) as varchar) + ' sec' as running_time,
       CAST((estimated_completion_time/3600000) as varchar) + ' hour(s), '
         + CAST((estimated_completion_time %3600000)/60000 as varchar) + 'min, '
         + CAST((estimated_completion_time %60000)/1000 as varchar) + ' sec' as est_time_to_go,
       dateadd(second,estimated_completion_time/1000, getdate()) as estimated_completion_time
FROM sys.dm_exec_requests r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) s
WHERE r.command in ('RESTORE DATABASE','BACKUP DATABASE','RESTORE LOG','BACKUP LOG')

以上代码将获取正在进行的数据库备份或还原操作的相关信息,并将结果作为表返回。其中,percent_complete 表示恢复进度百分比。

  1. 在查询窗口顶部的工具栏上选择“执行”,或者单击工具栏上的“执行”按钮。

  2. 此时,你会看到查询结果被显示在新的结果窗口中。你可以在适当的列中找到数据库的恢复进度百分比。

  3. 如果你想将查询的结果作为 TypeScript 代码段返回,可以复制以下代码并将其粘贴到 TypeScript 文件中:

import * as mssql from 'mssql'

const config: mssql.config = {
    user: 'YOUR_USERNAME',
    password: 'YOUR_PASSWORD',
    server: 'YOUR_SERVER',
    database: 'YOUR_DATABASE',
}

async function getRecoveryPercentage(): Promise<number> {
    const queryResult = await new mssql.ConnectionPool(config)
        .request()
        .query(
            `SELECT percent_complete 
            FROM sys.dm_exec_requests 
            WHERE command IN ('RESTORE DATABASE', 'BACKUP DATABASE', 'RESTORE LOG', 'BACKUP LOG')`
        )

    if (queryResult.recordset.length !== 1) {
        throw new Error('Unexpected query result')
    }

    const percentage = queryResult.recordset[0].percent_complete

    return Number.parseFloat(percentage) / 100
}

以上代码导入 mssql 模块,并带有一个 getRecoveryPercentage 函数,该函数将在已连接到的数据库上查询正在进行的恢复操作的恢复百分比,并将其作为 JavaScript 数字返回。请注意,你需要在 config 对象中设置正确的用户名、密码、服务器和数据库。

  1. 保存 TypeScript 文件并在命令行中执行 npm install mssql 安装 mssql 模块以及其对应的依赖项。

  2. 现在,你可以在 TypeScript 应用程序的适当位置调用 getRecoveryPercentage 函数,并检索正在进行的恢复操作的恢复百分比。

结论

在本文中,我们向您展示了如何在 TSQL 和 TypeScript 中检查正在进行的数据库恢复操作的恢复百分比。你可以使用提供的 TSQL 代码来获得这些信息,并且我们也提供了一个 TypeScript 片段,它会将恢复百分比作为数字返回。理解这些代码可能需要一些时间和经验,但它们可以帮助您更好地了解正在进行的操作,并确定剩余时间和恢复状态。