积极答复者
怎么得知当前数据备份要花多少时间?

问题
答案
-
数据库备份时间取决于硬件的配置和性能,如下所示:
- IO - Disks - IO的性能.
- CPU – CPU的数量
- Network – 是否备份是异地的
- Memory等.
如果用户想了解多少百分比的备份已完成,有两种方法:方法1:用户可以在backup命令中加入 Stats变量STATS [ = percentage ]例子:BACKUP DATABASE <dbname> to disk = 'M:\DBNAME_DDMMYY.BAK' WITH STATS = 10已10%的递增显示备份进度,执行效果如下:10 percent of database backup completed20 percent of database backup completed30 percent of database backup completed…….方法2:利用sys.dm_exec_request 来查看预期的备份执行情况,具体查询语句如下:SELECT r.session_id,r.command,CONVERT(NUMERIC(6,2),r.percent_complete)AS [PERCENT Complete],CONVERT(VARCHAR(20),DATEADD(ms,r.estimated_completion_time,GETDATE()),20) AS [ETA COMPLETION TIME],CONVERT(NUMERIC(6,2),r.total_elapsed_time/1000.0/60.0) AS [Elapsed MIN],CONVERT(NUMERIC(6,2),r.estimated_completion_time/1000.0/60.0) AS [ETA MIN],CONVERT(NUMERIC(6,2),r.estimated_completion_time/1000.0/60.0/60.0) AS [ETA Hours],CONVERT(VARCHAR(100),(SELECT SUBSTRING(TEXT,r.statement_start_offset/2,CASE WHEN r.statement_end_offset = -1 THEN 1000 ELSE (r.statement_end_offset-r.statement_start_offset)/2 END)FROM sys.dm_exec_sql_text(sql_handle)))FROM sys.dm_exec_requests r WHERE command IN ('RESTORE DATABASE','BACKUP DATABASE')注:只有SQL Server 2005和以上的版本才支持此方法。- 已标记为答案 ForumFAQModerator 2011年7月25日 3:17
全部回复
-
数据库备份时间取决于硬件的配置和性能,如下所示:
- IO - Disks - IO的性能.
- CPU – CPU的数量
- Network – 是否备份是异地的
- Memory等.
如果用户想了解多少百分比的备份已完成,有两种方法:方法1:用户可以在backup命令中加入 Stats变量STATS [ = percentage ]例子:BACKUP DATABASE <dbname> to disk = 'M:\DBNAME_DDMMYY.BAK' WITH STATS = 10已10%的递增显示备份进度,执行效果如下:10 percent of database backup completed20 percent of database backup completed30 percent of database backup completed…….方法2:利用sys.dm_exec_request 来查看预期的备份执行情况,具体查询语句如下:SELECT r.session_id,r.command,CONVERT(NUMERIC(6,2),r.percent_complete)AS [PERCENT Complete],CONVERT(VARCHAR(20),DATEADD(ms,r.estimated_completion_time,GETDATE()),20) AS [ETA COMPLETION TIME],CONVERT(NUMERIC(6,2),r.total_elapsed_time/1000.0/60.0) AS [Elapsed MIN],CONVERT(NUMERIC(6,2),r.estimated_completion_time/1000.0/60.0) AS [ETA MIN],CONVERT(NUMERIC(6,2),r.estimated_completion_time/1000.0/60.0/60.0) AS [ETA Hours],CONVERT(VARCHAR(100),(SELECT SUBSTRING(TEXT,r.statement_start_offset/2,CASE WHEN r.statement_end_offset = -1 THEN 1000 ELSE (r.statement_end_offset-r.statement_start_offset)/2 END)FROM sys.dm_exec_sql_text(sql_handle)))FROM sys.dm_exec_requests r WHERE command IN ('RESTORE DATABASE','BACKUP DATABASE')注:只有SQL Server 2005和以上的版本才支持此方法。- 已标记为答案 ForumFAQModerator 2011年7月25日 3:17