微软 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目录,并对其进行了环境参数的配置。下图是完成上述步骤之后的结构图

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

SSIS 部署到SQL Job的更多相关文章

  1. SSIS中执行SQL任务组件参数传递的问题

    原文:SSIS中执行SQL任务组件参数传递的问题 症状: 执行SQL任务,传递参数到子查询中,执行报错. 错误: 失败,错误如下:"无法从使用 sub-select 查询的 SQL 语句中派 ...

  2. c#直接调用ssis包实现Sql Server的数据导入功能

    调用ssis包实现Sql Server的数据导入功能网上已经有很多人讨论过,自己参考后也动手实现了一下,上一次笔者的项目中还用了一下这个功能.思前想后,决定还是贴一下增强记忆,高手请54. 1.直接调 ...

  3. 介绍几种SSIS部署方式

    介绍 如果你已经开发完一个不错的SSIS包并且能够在你的本地完美的运行,每个任务都亮起绿色的通过标志.这时为了能够让这个包处理能够在指定时间运行,你需要将其发布到一个服务器上,并做好相关配置.作为开发 ...

  4. SSIS 实例——将SQL获取的信息传递到Email中

    最近在为公司财务开发一个邮件通知时遇到了一个技术问题.原来我设计SSIS的是每天将ERP系统支付数据导出到财务支付平台后 Email 通知财务,然后财务到支付平台上进行支付操作.由于那个时候开发时间很 ...

  5. 微软BI 之SSIS 系列 - 使用 SQL Profilling Task (数据探测) 检测数据源数据

    开篇介绍 SQL Profilling Task 可能我们很多人都没有在 SSIS 中真正使用过,所以对于这个控件的用法可能也不太了解.那我们换一个讲法,假设我们有这样的一个需求 - 需要对数据库表中 ...

  6. 微软BI 之SSIS 系列 - 在 SQL 和 SSIS 中实现行转列的 PIVOT 透视操作

    开篇介绍 记得笔者在 2006年左右刚开始学习 SQL Server 2000 的时候,遇到一个面试题就是行转列,列转行的操作,当时写了很长时间的 SQL 语句最终还是以失败而告终.后来即使能写出来, ...

  7. 微软BI 之SSIS 系列 - Execute SQL Task 中的 Single Row 与 Full Result Set 的处理技巧

    开篇介绍 Execute SQL Task 这个控件在微软BI ETL 项目中使用的频率还是非常高的,也是大部分入门 SSIS 初学者最早接触到的几个控制流控件. 我们通常使用 Execute SQL ...

  8. SSIS部署后执行失败,无法将保护的XML节点解密

    将包属性中的 protectionLevel 设置成DontSaveSensitive 即可.

  9. SSIS 参数与环境

    微软 BI 系列随笔 - SSIS 基础 - 参数与环境 简介 在上一篇博客中,主要讲述了如何实现SSIS的项目部署,参见 微软 BI 系列随笔 - SSIS 2012 基础 - SSIS 项目部署模 ...

随机推荐

  1. android应用锁之监听应用前后台切换方式

    今天在做技术总结,顺便就把知识共享,个人崇尚分享. 通过以下方式来监听是不是发生了应用的前后台切换: 1. android api 10 – 15 通过ActivityManager register ...

  2. Caché数据库学习笔记(3)

    目录 Query函数及其测试 重建索引表 Management portal简介 远程访问Ensemble ============================================== ...

  3. uva 1660 & poj 1966(点连通度)

    Cable TV Network Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 4267   Accepted: 2003 ...

  4. sphinx 源码阅读之分词,压缩索引,倒排——单词对应的文档ID列表本质和lucene无异 也是外部排序再压缩 解压的时候需要全部扫描doc_ids列表偏移量相加获得最终的文档ID

    转自:http://github.tiankonguse.com/blog/2014/12/03/sphinx-token-inverted-sort.html 外部排序 现在我们的背景是有16个已经 ...

  5. js实现继承

    js是门灵活的语言,实现一种功能往往有多种做法,ECMAScript没有明确的继承机制,而是通过模仿实现的,根据js语言的本身的特性,js实现继承有以下通用的几种方式1.使用对象冒充实现继承(该种实现 ...

  6. iOS开发UI篇—使用UItableview完成一个简单的QQ好友列表(一)

    iOS开发UI篇—使用UItableview完成一个简单的QQ好友列表(一) 一.项目结构和plist文件 二.实现代码 1.说明: 主控制器直接继承UITableViewController // ...

  7. Cisco防火墙配置

    帮朋友调试一台ASA,做一下记录(很久没动手了) 三个区: vlan10: inside: 192.168.1.1 vlan20: outside: 202.102.1.1 vlan30: dmz: ...

  8. java 构造方法

    class MyTestClass { public int Value; public boolean equals(MyTestClass obj){ return obj.Value ==thi ...

  9. [转]HttpURLConnection的使用

    /* * URL请求的类别分为二类,GET与POST请求.二者的区别在于: * a:) get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet, * b:) post与get ...

  10. Android Listview & Adapter

    Listview主要有两个职责: 将数据填充到布局 处理用户的选择点击等操作 列表的显示需要三个元素: ListVeiw 用来展示列表的View 适配器(Adapter) 用来把数据映射到ListVi ...