2010-04-20 90 views
1

我注意到你可以使用下面的存儲過程(按順序)來安排SSIS包:運行SSIS包從T-SQL

msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'[Uncategorized (Local)]' 
msdb.dbo.sp_add_job ... 
msdb.dbo.sp_add_jobstep ... 
msdb.dbo.sp_update_job ... 
msdb.dbo.sp_add_jobschedule ... 
msdb.dbo.sp_add_jobserver ... 

(您可以通過右鍵單擊某個預定作業,選擇看一個例子「腳本作業 - >創建到」)。

並且您可以使用sp_start_job立即執行作業,並根據需要有效地運行SSIS包。

問題:是否有人知道任何msdb.dbo存儲過程,它們只是簡單地允許您直接運行SSIS包,而無需直接使用sp_cmdshell,或者使用一些更簡單的方法?

回答

3

那麼,你不需要嚴格的調用sp_add_category,sp_update_jobsp_add_jobschedule。我們做我們的應用程序中使用SQL代理與以下調用序列按需包執行:

- sp_add_job 
- sp_add_jobstep 
- sp_add_jobserver 
- sp_start_job 

獲取作業狀態是有點棘手,如果你不能訪問msdb..sysjobXXX表,但我們作業開始&運行得很好。

編輯::除了xp_cmdshell,我不知道從SQL Server內部啓動SSIS處理程序的另一種方法。任何在服務器上具有權限的人都可以啓動dtexec或dtutil可執行文件;那麼你可以使用批處理文件,作業調度等。

2

不是真的......你可以嘗試sp_OACreate,但它更復雜,可能不會這樣做。

你需要從SQL運行它們嗎?它們可以從命令行,.net應用程序等運行。

+1

我們寧願從SQL執行它,而不是向我們的Web服務器提供手段。我們的Web服務器與SQL服務器不在同一個ms域中(甚至不在同一個網絡上)。 – 2010-04-22 15:34:11