SQL Agent Job 暫停(Suspend)

因為從原來全部安裝在 C:\ 的 SQL Server 備份 msdb 後,restore 到安裝在 D:\ 的 SQL Server,除要注意 SQL Server 的 Build No 外,若有  Job 呼叫到外部子系統(例如 SSIS、Replication…等),也要一併注意 msdb.dbo.syssubsystems 的設定

select * from msdb.dbo.syssubsystems

image

–故意設定錯誤,將 DLL 與 EXE 都指定到錯誤的位置

update msdb.dbo.syssubsystems set subsystem_dll=’d:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\binn\SQLDTSSS.DLL’
where subsystem_dll=’c:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\binn\SQLDTSSS.DLL’

update msdb.dbo.syssubsystems set agent_exe=’d:\Program Files\Microsoft SQL Server\100\DTS\Binn\DTExec.exe’
where agent_exe=’c:\Program Files\Microsoft SQL Server\100\DTS\Binn\DTExec.exe’

之後透過 Agent 執行 SSIS 封裝都會錯誤:

image

image

錯誤訊息:

無法啟動步驟 1 的執行 (原因: SSIS 子系統無法載入 [see the SQLAGENT.OUT file for details]; 已暫停作業

該 Job 會被暫停

image

一旦 Job 暫停,再執行都會直接放棄

image

解法是執行以下語法:

delete from msdb.dbo.syssubsystems

exec msdb.dbo.sp_verify_subsystems 1

再重新啟動 Agent 服務即可

參閱:http://www.sqlservercentral.com/Forums/Topic8379-7-1.aspx

發表留言