Tag Archives: Agent

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

查詢 SQL Job 執行的狀況

exec sp_configure ‘show advanced options’,1
reconfigure

exec sp_configure ‘Ad Hoc Distributed Queries’,1

reconfigure

go

SELECT * INTO #job

FROM OPENROWSET(‘sqloledb’, ‘server=(local);trusted_connection=yes’

, ‘set fmtonly off exec msdb.dbo.sp_help_job’)

SELECT * FROM #job where current_execution_status <> 4

drop table #job

 

sp_help_job 的回傳內容如線上說明,可以透過 where 條件查詢所需的 Job 資訊

http://msdn.microsoft.com/zh-tw/library/ms186722.aspx