SQL Server 2000中监控长期运行任务的存储过程

日期: 2009-02-15 作者:Michelle Gutzait翻译:曾少宁 来源:TechTarget中国 英文

问题:在SQL Server 2000中监控长期运行的任务是一项复杂的任务。问题在于只有在第一项任务完成之后,才会写入执行历史(日志)。因此,如果第一步( 或者只有一步) 的任务运行了很长的时间,那么将无法查询任何系统表或者方法来得到它的开始时间。   在本文中,我们将探讨用T-SQL修复来检索关于长期运行任务的信息并解决这个问题。

  快速标识长期运行SQL Server任务   一个可以轻松解决这个问题的方法是在任务中添加虚拟的第一步。虚拟的这一步必须完成一项简单而快速的任务,如SELECT GETDATE()。在添加这个步骤之后,当下一步的任务执行时,sysjobhistory表就会被监……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

问题:在SQL Server 2000中监控长期运行的任务是一项复杂的任务。问题在于只有在第一项任务完成之后,才会写入执行历史(日志)。因此,如果第一步( 或者只有一步) 的任务运行了很长的时间,那么将无法查询任何系统表或者方法来得到它的开始时间。

  在本文中,我们将探讨用T-SQL修复来检索关于长期运行任务的信息并解决这个问题。

  快速标识长期运行SQL Server任务

  一个可以轻松解决这个问题的方法是在任务中添加虚拟的第一步。虚拟的这一步必须完成一项简单而快速的任务,如SELECT GETDATE()。在添加这个步骤之后,当下一步的任务执行时,sysjobhistory表就会被监控。Sysjobhistory表中第一步骤的run_date和run_time域将显示这一步完成的日期和时间,因此,它也将显示下一步开始的日期和时间。

  这个例子是在第二个步骤开始两分钟之后显示的运行任务列表:

  SQL Server 2000中监控长期运行任务的存储过程(图一)

  怎样在复杂的环境下监控长期运行的SQL Server任务?

  如果在许多服务器上运行上百个SQL任务,该怎么办呢?如果任务是由外部供应商建立的,你无法在任务之前增加步骤,又该怎么办?

  添加另外一个步骤到所有现有的任务中可能会相当的耗时或者不被允许。

  让我们来讨论另一个检测长期运行SQL任务的方法。

  在此处,我的目标是在一个位置上集中检查长期运行的任务,收集相关的信息并存入中央表中。注意:在我的环境下的长期运行SQL Server 2000任务运行的时间是超过4到4.5个小时。

  在SQL Server 2000 Enterprise Manager中,任务状态显示在任务列表中:

  SQL Server 2000中监控长期运行任务的存储过程(图二)

  如果在任务列表面板打开的时候,你运行SQL Profiler来监控运行的情况时,你将得到以下结果:


exec msdb..sp_help_job

  由于我要将任务结果存储在中央表中,因此,我不能使用sp_help_job存储过程。

  如果你执行INSERT… EXEC msdb..sp_help_job这个命令,将输出结果保存在表中,那么由于存储过程sp_help_job调用了内部存储过程,因此这个命令将失败。

翻译

曾少宁
曾少宁

TechTarget中国特约技术编辑,某高校计算机科学专业教师和网络实验室负责人,曾任职某网络国际厂商,关注数据中心、开发运维、数据库及软件开发技术。有多本关于思科数据中心和虚拟化技术的译著,如《思科绿色数据中心建设与管理》和《基于IP的能源管理》等。

相关推荐