如何查看数据库还原进度,轻松掌握数据库恢复情况 (查看数据库还原进度)

数据库作为一个企业或组织管理数据的重要工具,其安全和稳定性对于企业的正常运营至关重要。当数据库出现故障或误操作等问题时,需要进行数据库恢复。那么,在数据库恢复过程中,如何查看数据库还原进度,以便及时掌握数据库恢复情况呢?本文将介绍一些常见的查看数据库还原进度的方法。

一、通过SS查看还原进度

SQL Server Management Studio(SS)是一款用于管理SQL Server数据库的工具,用户可通过SS连接到SQL Server实例,并进行数据库的管理、备份和还原等操作。在进行恢复数据库操作时,可以通过SS查看还原进度,以便查看还原操作的进展情况。具体方法如下:

1.打开SS,连接到SQL Server实例

2.通过“还原数据库”向导还原数据库,将还原模式设置为“使用的最新备份文件”,并在下一步中选择要恢复的数据库以及还原设备。单击“还原设备”将打开“选择备份设备”对话框。

3.在“选择备份设备”对话框中,选择恢复文件的备份位置,单击“确定”按钮,SS将自动将要还原的备份文件加载到“还原设备”标签页中。在此标签页中,我们可以查看到要还原的备份文件、还原类型、还原文件的大小、还原进度等信息。

4.单击“还原设备”标签页上的“选项”按钮,打开“选项”对话框。在此对话框中,我们可以选择一些选项,以控制恢复操作的行为,例如:是否覆盖现有的数据库、是否将数据文件还原到原始的位置等。

5.单击“确定”按钮,开始进行数据恢复操作。在操作过程中,我们可以通过SS实时查看还原进度情况,以便及时了解恢复操作的进展情况。我们可以在“还原设备”标签页上查看恢复进度,也可以在“执行”标签页上查看完整的还原命令和操作日志。

二、通过T-SQL语句查看还原进度

另一种查看数据库还原进度的方法是使用T-SQL语句。T-SQL是SQL Server的编程语言,在SS中可以通过查询窗口编写和执行T-SQL语句。下面是一个查看还原进度的T-SQL语句示例:

SELECT r.session_id AS [Session ID]

,r.command AS [Command]

,CONVERT(NUMERIC(6,2),r.percent_complete) AS [Percentage Complete]

,CONVERT(VARCHAR(20),DATEADD(ms,r.estimated_time*1000,GETDATE()),20) AS [ETA Completion Time]

,CONVERT(NUMERIC(10,2),r.total_elapsed_time/1000.0/60.0) AS [Elapsed Minutes]

,'[ ‘+CAST(r.database_id AS VARCHAR(3))+’]’ AS [Database]

,CASE r.[command]

WHEN ‘RESTORE HEADERON’ THEN ‘Restoring Header’

WHEN ‘RESTORE VERIFYON’ THEN ‘Verifying Backup’

WHEN ‘RESTORE DATABASE’ THEN ‘Restoring Database’

WHEN ‘RESTORE LOG’ THEN ‘Restoring Log’

WHEN ‘BACKUP DATABASE’ THEN ‘Backup Database’

WHEN ‘BACKUP LOG’ THEN ‘Backup Log’

ELSE r.[command]

END AS [Command Type]

,r.[start_time] AS [Start Time]

FROM sys.dm_exec_requests r

WHERE r.command LIKE ‘%restore%’

GO

执行以上脚本,就可以查看还原操作的进度、剩余时间、数据库名称等信息。

三、通过Powershell查看还原进度

除了以上两种方法之外,还可以使用Powershell脚本来查看数据库恢复的进度。Powershell是一种微软开发的跨平台脚本语言,用于管理操作系统和应用程序,也可用于管理SQL Server数据库。下面是一个查看数据库还原进度的Powershell脚本示例:

$server = “.”

$database = “TestDB”

$backupfile = “C:\TestDB.bak”

$restorefile = “C:\Restore_TestDB”

$recoverytype = “norecovery”

$restore = New-Object Microsoft.SqlServer.Management.Smo.Restore

$restore.Database = $database

$restore.Devices.AddDevice($backupfile, [Microsoft.SqlServer.Management.Smo.DeviceType]::File)

$restoreFileList = ($restore.ReadFileList($server)).Rows

foreach ($restorefileitem in $restoreFileList) {

$restore.RelocateFiles.Add(

($restorefileitem[0]), ($restorefile + “\” + $restorefileitem[1]))

}

$restore.ReplaceDatabase = $True

$restore.SqlRestore($server)

Start-Sleep -Seconds 5

While ($restore.PercentComplete -ne 100) {

$msg = “”

$msg += “Percent Complete: ” + $restore.PercentComplete + `

” Stage: ” + $restore.ExecutionStatus

Write-Host $msg

Start-Sleep -Seconds 10

}

以上脚本的作用是将名为“TestDB”的数据库还原到指定位置,并实时输出还原进度。执行以上脚本,就可以轻松掌握数据库恢复情况。

本文介绍了三种查看数据库还原进度的方法,即通过SS、T-SQL和Powershell。在数据库恢复过程中,查看还原进度是非常必要的,可以及时了解恢复操作的进展情况,以便做出相应的决策。针对不同的具体情况,用户可以选择不同的方法来查看数据库还原进度。不论使用哪种方法,都应该根据实际情况进行必要的调整和优化,以便更好地掌握数据库恢复情况,确保数据库的安全和稳定性。

相关问题拓展阅读:

如何查看mysql执行进度

有时候我们会不小心对一个大表进行了 update,比如说写错了 where 条件……

此时,如果 kill 掉 update

线程

,那回滚 undo log 需要不少时间。如果放置不管,也不知道 update 会持续多久。

那我们能知道 update 的进度么?

实验

我们先创建一个测试数据塌笑烂库:

快速创建一些数据:

连续执行同样的 SQL 数次,就可以快速构造千万级别的数据升局:

查看一下总的行数:

我们来释放一个大的 update:

然后另起一个 session,观察 performance_schema 中的信息:

可以看到,performance_schema 会列出当前 SQL 从引擎获取的行数。

等 SQL 结束后,我们看一下 update 从引擎总共获取了多少行:

可以看到该 update 从引擎总共获取的行数是表大小的两倍,那我们可以估算:update 的进度 = (rows_examined) / (2 * 表行数)

?小贴士

information_schema.tables 中,提供了对表行数的估算,比起使用 select count(1) 的成本低很多,几乎可以忽略不计。

那么是不是所有的 update,从引擎中获取的行数都会是表大小的两倍呢?这个还是要分情况讨论的,上面的 SQL 更新了

主键

,如果只团漏更新内容而不更新主键呢?我们来试验一下:

等待 update 结束,查看 row_examined,发现其刚好是表大小:

那我们怎么准确的这个倍数呢?

一种方法是靠经验:update 语句的 where 中会扫描多少行,是否修改主键,是否修改唯一键,以这些条件来估算系数。

另一种方法就是在同样结构的较小的表上试验一下,获取倍数。

这样,我们就能准确估算一个“不小心”执行的大型 update 的进度了。

mysql系统变量分为

全局变量

和会话变量,全局变量的修改影响到整个服务器,会话变量修改只影响当前的会话。

查看log日志是否开启

show variables like ‘general_log’

set GLOBAL general_log=’ON’;

SET GLOBAL general_log_file = ‘/tmp/mysql.log’

不使用的时候记得关掉,否则会大量占用磁盘空间。

show processlist命令查看了当前正在执行的裂敏

sql语句

,同时可以查看用户的当前连接

查看慢日志

show variables like ‘%slow_query_log%’;

show variables like ‘long_query_time%’;设置慢日志记录什么样的SQL,默认10s

log-queries-not-using-indexes:未困核使用索引的查询也被记录到慢查询日志中,一般也开启这个变量

show status查看mysql运肆尺枝行状态(to learn)

比如查看mysql中有多少条慢查询记录: show global status like ‘%Slow_queries%’;

sql2023 怎么去查看 数据库的备份进度??

这个真的看不到。。。。。应为你用的是手动操作,如果自己写备份乎世脚本的话,里面加个告顷郑日志,可以稍微可视化。。。。袜颂。

查看数据库还原进度的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于查看数据库还原进度,如何查看数据库还原进度,轻松掌握数据库恢复情况,如何查看mysql执行进度,sql2023 怎么去查看 数据库的备份进度??的信息别忘了在本站进行查找喔。


数据运维技术 » 如何查看数据库还原进度,轻松掌握数据库恢复情况 (查看数据库还原进度)