您好我正在使用以下代码恢复程序中的数据库。
sqlcmd =新的SqlCommand(“从磁盘恢复数据库db1 ='”& txtFileName.Text&“'with replace”) sqlcmd.Connection = con sqlcmd.ExecuteNonQuery()
此代码工作正常但我想根据恢复过程的进度显示进度条。我怎么能这样做?
答案 0 :(得分:2)
如果您针对SQL 2005或更高版本运行此操作,则可以使用以下查询来监视还原操作的状态。
SELECT
command, 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 est_completion_time, s.text
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', 'DBCC TABLE CHECK')
您可以调整WHERE子句中的值以控制将返回状态的操作。
答案 1 :(得分:0)
无法准确了解备份文件的大小。您可以做的是在运行备份命令之前,找出数据库的大小,您可以大约猜测1GB可能需要1秒备份并相应地显示进度条