摘要:
错误输出可以用来提高可靠性,但是它还有一个目的是改善可扩展性。可靠性方面,他们可以用来拷贝出错误数据。通过合适的配置可以将错误的数据从主要数据流中分离出来输出到下游系统中。这些数据将会特别处理或者是被清洗然后返回到主数据流中。他们可以被显示地合并,例如使用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 阅读全文