我正在使用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