在SQL Server中执行长时间运行的作业

时间:2011-03-30 09:33:12

标签: sql-server tsql stored-procedures sql-agent-job

我正在使用SQL Server 2008.使用代理,我创建了一个作业并安排它每分钟执行一次。 该作业执行一个存储过程,将数据从表XXX移动到临时表,最后移动到表YYY。

执行作业可能需要一分多钟 - 因为数据相当大。

  1. 即使第一个实例仍在运行,是否会启动第二个作业实例?

  2. 如果是这样,我应该在临时表(状态= 1)中标记记录,以表明这些记录是由上一个作业实例处理的吗?

  3. 我有办法检查当前正在运行的作业实例,以便我不会启动该作业的第二个实例吗?

  4. 还有其他解决方法我不知道吗? (吞吐量很重要)

2 个答案:

答案 0 :(得分:3)

任何时候只能运行一个特定作业的一个实例。

因此,在第一个工作停止之前,不需要采取任何特别的预防措施来防止同一工作的另一次执行。

答案 1 :(得分:0)

查看此帖子 如何防止SQL Server作业同时运行

How to Prevent Sql Server Jobs to Run simultaneously

以及这里 运行工作
http://technet.microsoft.com/en-us/library/aa213815(v=sql.80).aspx

如果作业已根据其计划启动,则在计划作业完成之前,您无法在同一服务器上启动该作业的另一个实例。在多服务器环境中,每个目标服务器可以同时运行同一作业的一个实例。