[SSIS] 之八: SSIS 基礎 - 部署SQL Job



https://www.cnblogs.com/JasonLiao/p/SSISJob.html


簡介

在之前博客中,講述瞭如何實現SSIS的項目部署以及利用SSIS的參數與環境加速部署,參見 微軟 BI 系列隨筆 - SSIS 基礎 - 參數與環境。文章末尾提到了將SSIS部署到SQL Job。本文將講述如何利用SQL Job來規劃SSIS包的運行任務。

關於SQL Job

SQL Server Agent是一個任務規劃器和警報管理器,在實際應用和環境下,可以將那些週期性的活動定義成一個任務,而讓其在SQL Server Agent 的幫助下自動運行。

準備工作

首先來回顧一下,在之前的博文SSIS 項目部署模型微軟 BI 系列隨筆 - SSIS 基礎 - 參數與環境中,我們將一個SSIS項目部署到了SSISDB目錄,並對其進行了環境參數的配置。下圖是完成上述步驟之後的結構圖

 

創建SQL Job

右擊上圖的Jobs,選擇"New Job",系統將打開Job創建窗口。

基本信息

基本信息頁主要是Job的名字,擁有者,類別以及描述。

添加步驟

接下來就是爲Job添加步驟了,這裏我們需要給出步驟的名稱,選擇類型和執行的賬戶。

在上圖的第一步中我們選擇類型爲SQL Server Integration Services Package,表示這個步驟是基於SSIS包的。

第二步中我們選擇執行賬戶,這裏選擇的是SQL Server Agent Account,他是SQL Server的一個內建賬戶,如果你有其他的賬戶的話也可以使用。但是要注意他的權限問題,比如這個SQL Server Agent Account就沒有對一般磁盤文件夾的讀寫權限,如果你的包有文件讀寫的話,就需要在文件夾上給這個賬戶讀寫權限。

第三布是選擇包所在的服務器以及具體的包的位置。

第四步是配置,參數可以使用之前配置的環境變量,這樣就和前面的SSISDB目錄裏面的環境變量對應上了。

點擊OK保存步驟。

設置執行計劃

設置計劃的類型,執行週期以及起始時間。這一步比較簡單。

接下來設置警報,通知以及目標。如果你在包中設置了針對錯誤和警報的處理,創建了郵件通知任務,就不要另外單獨設置了,使用系統默認的就可以了。如果需要這些信息的話,就自己去配置一下。

點擊OK,好了,任務創建完成。可以看到我們的新Job出現在Jobs目錄下面了。

 

腳本研究

生成這個Job的腳本來看看:

/****** Object:  Step [CoposOrderProcessing]    Script Date: 8/28/2015 10:32:02 AM ******/
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'CoposOrderProcessing', 
        @step_id=1, 
        @cmdexec_success_code=0, 
        @on_success_action=1, 
        @on_success_step_id=0, 
        @on_fail_action=2, 
        @on_fail_step_id=0, 
        @retry_attempts=0, 
        @retry_interval=0, 
        @os_run_priority=0, @subsystem=N'SSIS', 
        @command=N'/ISSERVER "\"\SSISDB\EDCSSISProcessing\EDCSSISProcessing\CoposOrderProcessing.dtsx\"" /SERVER "\"PRCSGI12071D\MSSQLSERVER12\"" /ENVREFERENCE 1 /Par "\"$ServerOption::LOGGING_LEVEL(Int16)\"";1 /Par "\"$ServerOption::SYNCHRONIZED(Boolean)\"";True /CALLERINFO SQLAGENT /REPORTING E', 
        @database_name=N'master', 
        @flags=0

在上面的代碼中,重點看@command的內容。

/ISSERVER "\"\SSISDB\EDCSSISProcessing\EDCSSISProcessing\CoposOrderProcessing.dtsx\"" 
--指定執行一個部署在SSIS上的包.
/SERVER "\"PRCSGI12071D\MSSQLSERVER12\"" 
--指定從那個服務器獲取那個包
/ENVREFERENCE 1
--指定包運行時使用的環境變量
/Par "\"$ServerOption::LOGGING_LEVEL(Int16)\"";1
--logging記錄級別
/Par "\"$ServerOption::SYNCHRONIZED(Boolean)\"";True
--同步運行的,意思是如果這個實例在運行,那麼就不能重複執行
/CALLERINFO SQLAGENT 
--這個任務是要SQL Agent來調用的
/REPORTING E
--只有錯誤信息會被報告


看來一切都在這裏了啊。所有的包信息,環境變量,執行參數都在這一句command裏面說的明明白白。

好了,執行一下吧,看看是不是和在SSISDB裏面執行是一個效果,看看我們的[internal].[executable_statistics]表是不是記錄了運行的信息了呢。

總結

本文詳細講解了如何使用SQL Agent規劃SSIS包的執行工作,通過結合SSIS參數和環境變量,實現了他們之間的無縫結合,極大的方便了部署工作。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章