计算SQL Server备份一次所花的时间

原创|其它|编辑:郝浩|2009-05-14 11:41:03.000|阅读 491 次

概述:很多小企业在SQL代理工具内把数据库的全备份当作日常任务的一部分来进行,通常是作为维护计划的一部分来进行。这个任务通常分开进行所有的数据库备份。因此,虽然你可能知道这个任务所花的时间,但是你可能不知道任何一个特定的数据库进行全备份所花的时间。当你部署更改时,建议你在配置更改前先做一个数据库的全备份,这时我们面临的共同问题是“这个过程要花多长时间呢?”。

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

  在msdb数据库内这些资料是现成的,从而使这个解决方案和几行T-SQL代码一样简单。

  下面提供的T-SQL允许你输入想要的数据库名称。我也添加了一行来过滤结果,从而限制你只能看到当前master.dbo.sysdatabases表中列出的数据库。如果你注释掉这行代码,你将在数据库的最后一次备份实例时所返回的信息,不管这个数据库当前是否列在master.dbo.sysdatabases表中。

  返回详细信息

  这是上面提到的T-SQL代码 :

  DECLARE @dbname sysname

  SET @dbname = NULL --set this to be whatever dbname you want

  SELECT bup.user_name AS [User],

  bup.database_name AS [Database],

  bup.server_name AS [Server],

  bup.backup_start_date AS [Backup Started],

  bup.backup_finish_date AS [Backup Finished]

  ,CAST((CAST(DATEDIFF(s, bup.backup_start_date, bup.backup_finish_date) AS int))/3600 AS varchar) + ' hours, '

  + CAST((CAST(DATEDIFF(s, bup.backup_start_date, bup.backup_finish_date) AS int))/60 AS varchar)+ ' minutes, '

  + CAST((CAST(DATEDIFF(s, bup.backup_start_date, bup.backup_finish_date) AS int))%60 AS varchar)+ ' seconds'

  AS [Total Time]

  FROM msdb.dbo.backupset bup

  WHERE bup.backup_set_id IN

  (SELECT MAX(backup_set_id) FROM msdb.dbo.backupset

  WHERE database_name = ISNULL(@dbname, database_name) --if no dbname, then return all

  AND type = 'D' --only interested in the time of last full backup

  GROUP BY database_name)

  /* COMMENT THE NEXT LINE IF YOU WANT ALL BACKUP HISTORY */

  AND bup.database_name IN (SELECT name FROM master.dbo.sysdatabases)

  ORDER BY bup.database_name

  这些脚本将返回下面的结果集:

  图像

  这是上面脚本返回的示例结果集的截图: 

  如果你想得到所有备份的一个列表,而不只是最近的备份列表,那么你可以执行下面的代码:

  DECLARE @dbname sysname

  SET @dbname = NULL --set this to be whatever dbname you want

  SELECT bup.user_name AS [User],

  bup.database_name AS [Database],

  bup.server_name AS [Server],

  bup.backup_start_date AS [Backup Started],

  bup.backup_finish_date AS [Backup Finished]

  ,CAST((CAST(DATEDIFF(s, bup.backup_start_date, bup.backup_finish_date) AS int))/3600 AS varchar) + ' hours, '

  + CAST((CAST(DATEDIFF(s, bup.backup_start_date, bup.backup_finish_date) AS int))/60 AS varchar)+ ' minutes, '

  + CAST((CAST(DATEDIFF(s, bup.backup_start_date, bup.backup_finish_date) AS int))%60 AS varchar)+ ' seconds'

  AS [Total Time]

  FROM msdb.dbo.backupset bup

  /* COMMENT THE NEXT LINE IF YOU WANT ALL BACKUP HISTORY */

  WHERE bup.database_name IN (SELECT name FROM master.dbo.sysdatabases)

  ORDER BY bup.database_name


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:IT专家网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP