从c#内部查找SQL Server的恢复进度

Sco*_*ain 3 c# sql-server backup progress database-restore

我知道这很可能是一个简单的问题,但是当您从 SQL Management Studio 内部恢复数据库时,您可以使用统计信息设置更新间隔

RESTORE DATABASE [test] FROM  DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\test.bak' WITH  FILE = 1,  NOUNLOAD,  STATS = 10
Run Code Online (Sandbox Code Playgroud)

如果我想从 c# 内部执行该行代码,我将如何获得进度?目前我只是使用System.Data.SqlClient.SqlCommand.ExecuteNonQuery(),但我不知道如何获得进度。

另外,如果速度更快,使用 Microsoft.SQLServer 命名空间也是可以接受的。

Rem*_*anu 5

在开始操作之前获取连接会话 ID:

SELECT @@SPID;
Run Code Online (Sandbox Code Playgroud)

然后开始您的备份请求。从不同的连接,查询sys.dm_exec_requests并查看执行恢复语句的会话的percent_complete:

以下命令的已完成工作百分比:

  • 改变索引重组
  • 带有 ALTER DATABASE 的 AUTO_SHRINK 选项
  • 备份数据库
  • 创建索引
  • DBCC检查数据库
  • DBCC 检查文件组
  • DBCC 检查表
  • DBCC 索引碎片整理
  • DBCC 收缩数据库
  • DBCC 收缩文件
  • 终止 (Transact-SQL)
  • 恢复数据库
  • 更新统计数据。