SSDT-BI之六:脚本任务

前几篇博客中介绍了‘执行SQL任务’,本次介绍脚本任务:随心所欲的编写C#Code。

1,如下图,从左侧工具箱拖入脚本任务,双击打开脚本任务编辑器:

2,点击ReadOnlyVariables右侧的按钮,如图,可以选择在脚本中可以访问的变量(ReadWriteVariables同样的做法):

3,点击脚本,如图就可以按照示例编写脚本:

4,编写脚本完成,保存之后退出编辑,一个脚本任务就可以正常执行了,另外脚本任务支持调试,就像普通的C#代码在VS中调试一样。

脚本任务可以实现的功能比想象的要多,最起码工具箱中的任务都可以利用脚本任务来实现,当然一般情况下还是使用工具箱中提供的任务更为方便。

我这里举一个我们项目中简单的而且特别的例子。

在我们的项目中。有一些Table是启用了CDC功能的,那这些表的升级改动都需要对CDC进也行相应的升级。CDC的升级分为两个部分,一是数据迁移,而是CDC表升级。升级脚本的结构如下:

1,复制CDC表数据到临时表。

2,禁用CDC

3,启用CDC

4,从临时表复制数据到CDC表

5,删除临时表

在实际测试中发现,如果以上五部操作在一个sql 脚本中执行,将可能导致CDC功能不能正常使用(不能正常的生成数据)。

经过多次测试,我们把以上五个步骤分到了两个脚本文件,如下:

脚本文件1:

1,复制CDC表数据到临时表。

2,禁用CDC

脚本文件2:

3,启用CDC

4,从临时表复制数据到CDC表

5,删除临时表

但是,分成两个脚本文件,并在Pacakge中使用两个执行SQL任务来执行,也是有问题的。再次经过多次惨无人道的测试,我们最终发现如果在执行两个脚本文件的中间能有一个小小的时间间隔,那么最终的效果还是比较理想的,基本上每次都能升级CDC成功。这个时候脚本任务就发挥大作用了,最终的执行路径如下:

执行SQL任务1-》脚本任务(Thread.Sleep(3000))-》执行SQL任务2

至于脚本任务的其他功能和用法,自己参悟吧。另外也可以参考初识情况下,脚本任务中给出的注释。例如,下面的注释就指出了如何使用变量(前提:变量已经在第二步中勾选。):

#region Help:  Using Integration Services variables and parameters in a script
        /* To use a variable in this script, first ensure that the variable has been added to
         * either the list contained in the ReadOnlyVariables property or the list contained in
         * the ReadWriteVariables property of this script task, according to whether or not your
         * code needs to write to the variable.  To add the variable, save this script, close this instance of
         * Visual Studio, and update the ReadOnlyVariables and
         * ReadWriteVariables properties in the Script Transformation Editor window.
         * To use a parameter in this script, follow the same steps. Parameters are always read-only.
         *
         * Example of reading from a variable:
         *  DateTime startTime = (DateTime) Dts.Variables["System::StartTime"].Value;
         *
         * Example of writing to a variable:
         *  Dts.Variables["User::myStringVariable"].Value = "new value";
         *
         * Example of reading from a package parameter:
         *  int batchId = (int) Dts.Variables["$Package::batchId"].Value;
         *
         * Example of reading from a project parameter:
         *  int batchId = (int) Dts.Variables["$Project::batchId"].Value;
         *
         * Example of reading from a sensitive project parameter:
         *  int batchId = (int) Dts.Variables["$Project::batchId"].GetSensitiveValue();
         * */

        #endregion
时间: 2024-12-17 21:55:31

SSDT-BI之六:脚本任务的相关文章

SSDT–BI 系列简介

这个系列主要是介绍SSDT-BI相关知识以及在使用过程中遇到的问题和解决方案. 下载地址 可以访问如下网址: SSDT-BI (SSDT–BI for VS2013). 安装步骤 具体步骤不需多说,一路点击下一步可安装完成. 注意事项 1,由于SSDT–BI是VS的插件,所以如果你已经安装VS,请确保你的VS是已激活的,否则可能导致你的SSDT–BI不能正常使用. 2,也可以不用安装VS,直接安装SSDT-BI 即可.

About SSDT BI

Welcome to Microsoft Marketing Speak hell. With the 2012 release of SQL Server, the BIDS, Business Intelligence Designer Studio, plugin for Visual Studio was renamed to SSDT, SQL Server Data Tools. SSDT is available for 2010 and 2012. The problem is,

LoadRunner脚本实例来验证参数化的取值

LoadRunner脚本实例来验证参数化的取值 SINM {3]!G0问题提出:  主要想试验下,在Controller中,多个用户,多次迭代中参数的取值.51Testing软件测试网(['H5f,d)[jUh :o$F$kY+sO/y"Yr5S0方法:51Testing软件测试网$_v.sR$tS*T)} TJS]#v3u%bi"?!}0脚本:  我把取到的参数值和对应的VuserID记录下来保存到一个文件中,下面是例子的脚本 X-n)SI:J#t:v:YM'v#X0 long fi

SQL Server 2014 SP1 通过补丁KB3058865提供更新,SP1一文便知

Microsoft SQL Server 2014 SP1 更新: SQLServer2014SP1-KB3058865-architecture-language.exe 安装完成后版本 12.0.4100.1. 主要特性包如下: Microsoft® SQL Server® Backup to Windows® Azure® Tool Microsoft SQL Server Backup to Windows Azure Tool 支持备份到 Windows Azure Blob 存储,加

关于Windows 10 初始安装的VS2013 SSDT-BI 的BUG 问题

初始安装,正常安装会出现以下出现信息,随后会被告知未安装成功. 关于SSDT-BI信息可以参见这里 http://jimshu.blog.51cto.com/3171847/1420469 从Windows 8.1 安装升级到Windows 10没有任何问题. 现解决方案有两种, 1.是等待Win10的Bug 修复 2.是可以先预先安装Visual Studio 2013(不可以是Visual Studio 2015),随后安装SSDT-BI for Visual Studio 2013 3.S

gitlab的git命令行操作

[email protected] MINGW64 /f/BI/bi/二期/脚本 (master) $ mkdir ~/.ssh mkdir: cannot create directory ‘/c/Users/Administrator/.ssh’: File exi sts [email protected] MINGW64 /f/BI/bi/二期/脚本 (master) $ cd ~/.ssh [email protected] MINGW64 ~/.ssh $ git config --

[BI项目记]-DB脚本同步

 BI项目中会有很多不同种类的项目,其中比较比较大的一部分就是对DB脚本的处理.然而DB的脚本毕竟无法在项目中进行维护,所以这里介绍如何对DB的脚本进行版本上的维护. 数据库脚本本身没有项目模板支持,很难进行版本管理维护,通常只能通过文件脚本的方式,比如通过Task将DB的定义导出到文件. 这种方法可以将DB里的相关对象,表,视图,存储过程以及函数等导出到文件.缺点是每次导出的时候很难知道每次导出跟上一次的版本变化在哪里. 这里介绍另外一种方法,就是通过Visual Studio里的工具,这

脚本应用之六:字符串判断&处理函数 【 functions_string1 】

测试系统版本:CentOS 6.4 作用:脚本提供判断和处理字符串的函数,可供其他脚本调用.例如:判断字符串是否都是数字\大小写字母.字符串中字母是否为大\小写以及大小写转换和字符串包含关系判断等. 使用:脚本中调用 "./source functions_string1" 代码专区: #/bin/bash #  LY #  ------------------ #  Copyright 2016.4.14, LingYi ([email protected]) QQ:15199525

微软BI 之SSIS 系列 - MVP 们也不解的 Scrip Task 脚本任务中的一个 Bug

开篇介绍 前些天自己在整理 SSIS 2012 资料的时候发现了一个功能设计上的疑似Bug,在 Script Task 中是可以给只读列表中的变量赋值.我记得以前在 2008 的版本中为了弄明白这个配置,还特意测试过这个细节,获取错误并理解了这个功能.但是现在回去再次测试 2008 的版本时,发现这个功能在 2008 中其实也是错误的,把我印象中的测试结果完全给推翻了,所以到现在已经搞不清楚我当时到底是如果得出这个错误的. 疑似功能 Bug 描述 在 SSIS 包中定义了用户自定义变量 - PV

AD 脚本kixtart运用之六(outlook邮件批量生成签名)

基于上一编文章http://windyma.blog.51cto.com/661702/1967071里的设置 我们在Function.kix添加如下内容(备注:此outlook签名function来自网上,经过我比较大的修改): ---------------- Function GenerateOutlookSig($SignatureFileName) $EmailAccountName = @WUSERID ;----获取outlook配置profile名字(如果有多个profile名字