转载

SSIS 部署到SQL Job

微软 BI 系列随笔 - SSIS 基础 - 部署SQL Job

简介

在之前博客中,讲述了如何实现SSIS的项目部署以及利用SSIS的参数与环境加速部署,参见  微软 BI 系列随笔 - SSIS 基础 - 参数与环境 。文章末尾提到了将SSIS部署到SQL Job。本文将讲述如何利用SQL Job来规划SSIS包的运行任务。

关于SQL Job

SQL Server Agent是一个任务规划器和警报管理器,在实际应用和环境下,可以将那些周期性的活动定义成一个任务,而让其在SQL Server Agent 的帮助下自动运行。

准备工作

首先来回顾一下,在之前的博文SSIS 项目部署模型和 微软 BI 系列随笔 - SSIS 基础 - 参数与环境 中,我们将一个SSIS项目部署到了SSISDB目录,并对其进行了环境参数的配置。下图是完成上述步骤之后的结构图

SSIS 部署到SQL Job

创建SQL Job

右击上图的Jobs,选择"New Job",系统将打开Job创建窗口。

基本信息

基本信息页主要是Job的名字,拥有者,类别以及描述。

SSIS 部署到SQL Job

添加步骤

接下来就是为Job添加步骤了,这里我们需要给出步骤的名称,选择类型和执行的账户。

SSIS 部署到SQL Job

在上图的第一步中我们选择类型为SQL Server Integration Services Package,表示这个步骤是基于SSIS包的。

第二步中我们选择执行账户,这里选择的是SQL Server Agent Account,他是SQL Server的一个内建账户,如果你有其他的账户的话也可以使用。但是要注意他的权限问题,比如这个SQL Server Agent Account就没有对一般磁盘文件夹的读写权限,如果你的包有文件读写的话,就需要在文件夹上给这个账户读写权限。

第三布是选择包所在的服务器以及具体的包的位置。

第四步是配置,参数可以使用之前配置的环境变量,这样就和前面的SSISDB目录里面的环境变量对应上了。

点击OK保存步骤。

设置执行计划

设置计划的类型,执行周期以及起始时间。这一步比较简单。

SSIS 部署到SQL Job

接下来设置警报,通知以及目标。如果你在包中设置了针对错误和警报的处理,创建了邮件通知任务,就不要另外单独设置了,使用系统默认的就可以了。如果需要这些信息的话,就自己去配置一下。

点击OK,好了,任务创建完成。可以看到我们的新Job出现在Jobs目录下面了。

SSIS 部署到SQL Job

脚本研究

生成这个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参数和环境变量,实现了他们之间的无缝结合,极大的方便了部署工作。

正文到此结束
Loading...