问题:在SQL Server 2000中监控长期运行的任务是一项复杂的任务。问题在于只有在第一项任务完成之后,才会写入执行历史(日志)。因此,如果第一步( 或者只有一步) 的任务运行了很长的时间,那么将无法查询任何系统表或者方法来得到它的开始时间。 在本文中,我们将探讨用T-SQL修复来检索关于长期运行任务的信息并解决这个问题。
快速标识长期运行SQL Server任务 一个可以轻松解决这个问题的方法是在任务中添加虚拟的第一步。虚拟的这一步必须完成一项简单而快速的任务,如SELECT GETDATE()。在添加这个步骤之后,当下一步的任务执行时,sysjobhistory表就会被监……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
问题:在SQL Server 2000中监控长期运行的任务是一项复杂的任务。问题在于只有在第一项任务完成之后,才会写入执行历史(日志)。因此,如果第一步( 或者只有一步) 的任务运行了很长的时间,那么将无法查询任何系统表或者方法来得到它的开始时间。
在本文中,我们将探讨用T-SQL修复来检索关于长期运行任务的信息并解决这个问题。
快速标识长期运行SQL Server任务
一个可以轻松解决这个问题的方法是在任务中添加虚拟的第一步。虚拟的这一步必须完成一项简单而快速的任务,如SELECT GETDATE()。在添加这个步骤之后,当下一步的任务执行时,sysjobhistory表就会被监控。Sysjobhistory表中第一步骤的run_date和run_time域将显示这一步完成的日期和时间,因此,它也将显示下一步开始的日期和时间。
这个例子是在第二个步骤开始两分钟之后显示的运行任务列表:
怎样在复杂的环境下监控长期运行的SQL Server任务?
如果在许多服务器上运行上百个SQL任务,该怎么办呢?如果任务是由外部供应商建立的,你无法在任务之前增加步骤,又该怎么办?
添加另外一个步骤到所有现有的任务中可能会相当的耗时或者不被允许。
让我们来讨论另一个检测长期运行SQL任务的方法。
在此处,我的目标是在一个位置上集中检查长期运行的任务,收集相关的信息并存入中央表中。注意:在我的环境下的长期运行SQL Server 2000任务运行的时间是超过4到4.5个小时。
在SQL Server 2000 Enterprise Manager中,任务状态显示在任务列表中:
如果在任务列表面板打开的时候,你运行SQL Profiler来监控运行的情况时,你将得到以下结果:
exec msdb..sp_help_job |
由于我要将任务结果存储在中央表中,因此,我不能使用sp_help_job存储过程。
如果你执行INSERT… EXEC msdb..sp_help_job这个命令,将输出结果保存在表中,那么由于存储过程sp_help_job调用了内部存储过程,因此这个命令将失败。
翻译
TechTarget中国特约技术编辑,某高校计算机科学专业教师和网络实验室负责人,曾任职某网络国际厂商,关注数据中心、开发运维、数据库及软件开发技术。有多本关于思科数据中心和虚拟化技术的译著,如《思科绿色数据中心建设与管理》和《基于IP的能源管理》等。
相关推荐
-
TT百科:存储过程
存储的过程可以访问或修改数据库中的数据,但并不绑定到特定的数据库或对象,这提供了许多优点。
-
在Oracle数据库的自定义函数中调用存储过程
在Oracle数据库的自定义函数中调用存储过程是否可行,Oracle专家Brian Peasland给出了具体的解答。
-
数据库工程师2012年3月刊:数据库2012
数据库的2012,不是末日而是新生。传统厂商纷纷发布大版本更新的数据库产品,开源技术更加强势,2012的精彩始于《数据库工程师》……
-
解读SQL Server数据库存储过程发展历史
SQL Server存储过程可以是Transact-SQL(T-SQL)语句,或者是.NET框架的公共语言运行时(CLR),它是专为方便数据库查询而设计的。