09 2011 档案
摘要:控制流可以被设计成并行执行,线性执行或者二者结合。控制流任务本身是线性执行的,这意味着一个任务在切换到另外一个任务之前必须先执行完毕。虽然在一个package中可以设计出相互之间没有依赖性的控制流任务,这些任务在包中仍然是线性执行的,换一种说法就是,当一个任务正在执行的时候,它不会跳到下一个任务中。SSIS执行线程会仍然停留在当前任务,知道成功执行完毕或者失败。注意:控制流同步执行和数据流的异步执行没有冲突。二者之间有一些差别。在数据流任务中主要关注的是如何处理数据,而不是控制流程。在集成服务中还允许设置最大允许的同步执行的任务的个数,通过属性MaxConcurrentExecutables可
阅读全文
摘要:理解控制流和数据流的一个入口是看他们如何运行的。一个控制流任务是一个最小的执行单位,它的运行结果有成功,失败,和完成,在运行它的下一个任务之前必须得到这些结果。在数据流任务中,转换时最基本的元素。一个转换任务和控制任务是有很大的区别的。转换任务之间是可以并行执行的,不必等待上一个转换任务执行完毕。 控制流和数据流之间的比较控制流和数据流之间看上去很相似,但是他们有天壤之别。控制流不会处理组件之间的数据,它负责协调单独的组件单元之间的工作。这里有一些概念: 工作流协调 处理导向 顺序的或平行的任务的执行 异步处理控制流任务可以顺序的执行,大多数时候他们会同时以这两种方式来执行。...
阅读全文
摘要:简介在这一章节中我们可以深入了解SSIS的引擎结构和组成,包含下面的话题。控制流和数据流的对比数据流的类型控制流中的高级话题数据流中的缓冲器和执行树监控数据流的执行这个章节中的内容有些抽象,我们将从一些高级话题开始一步一步地理解SSIS的内部机制。 集成服务引擎:一个比喻在了解缓存器,异步组件和执行树之前,先了解一个现象:假设在一个大城市中开着车的时候你会不会想了解整个城市的交通现状?还有整个城市的红绿灯时怎么协调的。可能你坐出租车从一个闹市区到另外一个临近的闹市区可能要花很长的时间,部分原因是红绿灯是按照一定的时限来变换的。任何一个人都可能在十字路口遇到指示灯变红,称之为锁箱。这.
阅读全文
摘要:你可能对扩展性这个概念非常的熟悉,当然在SSIS中也有这个概念。这里有几个很有特色的属性,这一个小节的内容中将介绍如何在SSIS中使用可扩展性特性。 扩展内存在设计SSIS之初,数据传输的操作都发生在内存中,这样会使数据传输和转换更加的快,一个设计目标是数据传输只有一条路径。这样消除了多次读取或者写入数据造成的时间消耗。这样有一个缺点是你需要大量的数据和复杂的数据转换要吃掉大量的内存,所以需要合适的对内存使用进行调优。默认情况下32位的操作系统的虚拟内存是2GB。当然我们可以修改boot.ini文件把它修改成3GB,不过这样做会导致内存不够的现象。在执行单个的package的时候经常会出现这.
阅读全文
摘要:错误输出可以用来提高可靠性,但是它还有一个目的是改善可扩展性。可靠性方面,他们可以用来拷贝出错误数据。通过合适的配置可以将错误的数据从主要数据流中分离出来输出到下游系统中。这些数据将会特别处理或者是被清洗然后返回到主数据流中。他们可以被显示地合并,例如使用Union转换,或者是隐式地合并数据很少被丢弃,很多时候他们被记入日志中或者在后续步骤中处理。如果一些数据在析取的时候丢失,但是最终还是需要这些数据,错误输出可以用来解决这个问题。如果可以在其他的数据源中获得这些错误数据,可以使用LookUp转换找到这些数据。如果不能再其他的地方获得这些,可以使用默认值选项配置。在另外一些场景中,数据可能超出
阅读全文
摘要:在这一个随笔中将介绍在package中如何使用事务来保证数据的完整性和一致性。在SSIS中有两种事务: 分布式事务处理事务(Distributed Transaction Coordinator Transactions):在task,package中使用单独一个或者多个事务处理 本地事务(Native Transaction):SQL Server引擎级别的事务,在一个连接中使用T-SQL中的事务注意:在SQL Server联机丛书中MSDTC是这样定义的:Microsoft 分布式事务处理协调器 (MS DTC) 允许应用程序跨两个或多个 SQL Server 实例扩展事务。此外,该协..
阅读全文
摘要:在网上看到一篇关于监测表中的插入,更新,删除的方法,使用触发器实现的,很有价值。地址:http://www.dbaunion.com/u/livecoach/Blog.aspx/t-19有时候,我们在某一重要的时间段需要监控某张表的变化情况,包含插入、更新、删除。举例来说,当我们把数据导出到外部的系统时,我们希望导出的是全部的数据,而且最好是导出上次导出之后变动的数据。作为DBA,我们可采传统的触发器操作,来构建一个元数据表或一个时间戳列来监控数据的变化。代码如下:Code Listing 1该代码在 SQL 2005(SP3), SQL 2008 R2 (RTM with cu5)测试通过-
阅读全文
摘要:可靠性和扩展性是所有系统的最终目标之一,他们两个看起来有些对立,不过通常来讲他们又有相互的联系。错误和造成错误的条件是可靠性最明显的威胁。SSIS提供了解决这些情况的优雅的方法。这个章节中要关注的特性是错误输出和检验点,使用他们来实现可靠性,他们也可以保证包的执行性能和扩展性。 重新启动一种经常遇到的情况,一个需要整夜执行的包执行失败了,需要重新执行它。如果其中一个步骤非常的耗费资源和时间,重新执行它是一件痛苦的事情。在DTS中没有类似“断点续传”的功能。重新执行一个失败的包是很容易再次出错的。由不同的策略在解决这些问问题,但是需要清楚DTS模型的工作原理,大多数DBA都没有这样的工作经验。.
阅读全文
摘要:脚本组件提供另外一种在SSIS中使用脚本的方法,它只能在Data Flow中使用,不能在Control Flow中使用,它用来提供数据,接收数据,转换数据。下面是三种类型: 数据源类型:用来提供数据源,可以定义输出类型,使用脚本填充数据。了个典型的例子是使用脚本来读取复杂的文件,XML,或者更加过时的COBOL等等不能产生平面文件的文件 数据目的类型:用来将数据填充到Excel,或者平面文件,或者将文件批处理到大型机上 转换型:用来接收数据,产生新的转换数据,当SSIS提供的组件不能满足需求的时候使用 使用脚本组件这里我们举例说明如何创建和使用脚本组建,我们处理一个文件,按照需求清洗文件中的.
阅读全文
摘要:COM和他的后继.NET有一个特点是可以重复使用其他语言编写的程序集。SQL Server 2005版本中的脚本任务中只能使用VB.NET来实现,在这里我们可以使用任何.NET语言编写的程序集。使用程序集可以重复使用已经写好的代码,可能在你的程序中写好了数据验证的方法,现在可以在package中重用这些代码。再次写已经测试过的正在使用的代码是没有意义的。要在自己的代码中使用程序集,需要首选引用它。我们先要把程序集放在一个可以获得的路径中,并保证所在的机器中安装了.NET Framework。在Visual Studio编辑环境中添加程序集。在项目菜单中选择添加引用,如图1。图1 从列表中选择.
阅读全文
摘要:脚本任务主要用来控制数据流,当现有的控制流 任务不能满足复杂的设计要求的时候,就应该考虑使用脚本任务。这里我们创建第一个脚本任务,和其他的教学例子一样,我们也将创建一个简单的HelloWord程序。新建一个package 命名为ScriptTaskExample在Control Flow内拖放一个Script,如图1图1 双击打开编辑界面如图2图2 点击左边Script标签,打开界面如图3图3 这里有几个属性标签下面做一些说明a. ScriptLanguage:在这里可以设置要使用的语言。SSIS2005版本中只支持Visual Basic.NET,后续版本中添加了C#b. Precom...
阅读全文
摘要:表达式是使用一些元素组合起来产生一个唯一的值。这些元素包括变量,字面值,函数,存储过程和运算符。一个简答的表达式是1<2,它的结果是true。虽然表达式是从C语言中衍生出来,但是他们大小写不明感。SSIS中很多的任务都支持表达式。所有的任务都支持使用表达式来配置属性。例如For Loop和Foreach Loop中可以使用表达式来设置循环条件,Derived Column任务可以使用表达式来定义输出。 动态属性SSIS中通过表达式可以动态的执行转换任务。右击任务选择编辑,打开编辑界面。在左方有一些归类标签,点击这些标签可以打开一类相关的属性。每一种任务都会有一个表达式标签,如图1图1 在
阅读全文
摘要:数据转换服务中有执行客户SQL脚本的转换,在SSIS中这个特性得到加强。在SSIS中可以使用VB.NET这种语言。这个系列中将介绍这些脚本任务,例如控制执行流程,实现自定义转换,并举例说明。在SSIS中有下面几种脚本任务。ActiveX Script Task:这种任务允许执行ActiveX语言脚本,例如VBScript。这种任务是为了和以前版本兼容,在SQL Server 2008版本中已经被去掉,这里我们不会详细介绍。Script Task:这种任务是用来代替ActiveX script Task的,用它来控制包的执行。它允许执行VB.NET语言,很不幸只能使用这一种语言。但是还有一个选择
阅读全文
摘要:在T-SQL中没有除法运算,但是在T-SQL中可以实现类似除法的操作Divide。一般除法操作的结果一个列来自于被除关系表,剩下的来自除关系表。这里举一个例子来说明。假设如下有三个表:客户Customers,销售人员Employees,订单Orders,查询返回一些客户,要求这些客户和所有美国雇员都至少有一次交易记录。来看下面一个语句:select custid from Sales.Customers as Cwhere not exists(select * from HR.Employees as Ewhere country='USA'and not exists(se
阅读全文
浙公网安备 33010602011771号