我正在使用SQL Server 2008.使用代理,我创建了一个作业并安排它每分钟执行一次。 作业执行一个存储过程,该过程将数据从表XXX移动到临时表,然后最终到表YYY。在SQL Server中执行长时间运行的作业
作业的执行可能需要一分多钟 - 因为数据相当大。
即使第一个实例仍在运行,该作业的第二个实例是否会启动?
如果是这样,我是否应该将临时表(status = 1)中的记录标记为表明这些记录正在被前一个作业实例处理?
有没有办法让我检查一个工作实例当前正在运行,以便我不启动第二个工作实例?
有没有另一种解决方案,我不知道? (吞吐量很重要)
是的,你可以只有一个实例,MS建议使用MSX/TSX来提供此功能 - http://connect.microsoft.com/SQLServer/feedback/details/633140/sql-server-agent-allow-多个单一作业实例您可以考虑在每个作业中都有该作业的副本,然后将此ID放入状态列以标记数据继续执行 – Silx 2011-03-30 09:43:32