欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    [计算机软件及应用]SSIS Integration Service.doc

    • 资源ID:4561671       资源大小:5MB        全文页数:70页
    • 资源格式: DOC        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    [计算机软件及应用]SSIS Integration Service.doc

    SSIS Integration Service1. 准备 1) SQL Server 2005 和2008提供了很多新的和增强的商务智能功能,包括利用集成服务(SSIS)整合多种数据源;利用分析服务(SSAS)使数据内容更丰富并且建立复杂的商业分析; 以及利用报表服务(SSRS)编辑,管理,和提交丰富的报表. 如果你现在还不清楚这些功能,那么接下来一系列的介绍会让你对SQL Server现在的商务智能支持大吃一惊.不过现在关于SQL Server商务智能(SQL Server Business Intelligence - BI)的中文资料相对较少,很多时间对于一些复杂问题的研究,都需要直接搜索英文资料或者是直接去国外的社区求教.从本文开始,我将以现在掌握的相关知识为基础,介绍SQL Server BI,希望和这方面的朋友一过研究和提高.让我们先做一下前期的准备工作,整个案例都会以AdventureWorks数据库为基础,如果你在安装SQL Server时没有选择安装,也可以单独下载, Server的很多例子,工具和资源,如果你有BI方面的基础,建议直接从上面下载例子进行研究.       AdventureWorks数据库及示例的安装可以参照2) 如果你对AdventureWorks数据库并不熟悉,请先通过以下资源进行了解:  3)     SQL Server 2005  AdventureWorks  数据字典4)    SQL Server 2008  AdventureWorks  数据字典5)    介绍AdventureWorks 数据库的webcast6) 在安装SQL Server时,请选择安装Integration Service,Reporting Service,Analysis Service等服务,并且选中开发工具.安装完成后,就可以用vs .net打开BI项目:7)   SSIS项目:8)      9)        SSAS项目:10)11) SSRS项目:12)13) 可以看到,微软已经给出BI的一整套解决方案,而且他们之间可以互操作,Reporting Service可以根据SSAS生成的多维数据集生成复杂的KPI报表,Integration Service也可以在控制流中调用SSAS进行数据分析,另外Sql Server BI还能够和微软的其它产品整合,比如Reporting Service直接整合到MOSS中,可以安装插件,在Excel中直接操作SSAS分析出来的数据,使客户端更加方便的操作.这些我们在后面都会一一介绍.14) 最后,和大家分享一下我经常去的Sql server 相关的网站:15) http:/www.ssas-      analysis service 的技术网站                 专注于  integration service 的网站           sql server 相关的技术文章和视频   同上       比较多的 sql server相关的视频教程(短教程)         16)    微软社区,当然,你有什么问题都可以在这里提出来,肯定会有人帮你解决17) 另外,还下载到了Server 2008 step by step BI系列课程 手头上还有一些其它的视频以及电子书等资料,有兴趣的朋友可以直接联系我索取,先休息了,接下来我们再循序渐进2. 使用SSIS进行简单的数据导入导出 1) 让我们首先开始学习SSIS吧,利用SSIS把SQL Server中的数据导出.首先,打开V 2005,选择商业智能项目,然后选择模板中的Integration Service项目,输入项目名称:2)        3)  创建好后,我们就在默认的Package包中进行设计(关于一些概念性的就不介绍了,请参照这个文章, 或者是其它的教程或者书籍).首先向控制流中添加一个数据流组件(Data Flow Task),双击进入数据流.从左边的工具箱中选择OLEDB数据源(OLE DB Source),可以看到,添加进去后是红色的.双击设置一下连接,如果没有已经创建的链接,则新建一个连接,选定后设置直接访问Produt表,当然在这里也可以通过sql语句获取数据源,其中可以调用存储过程,另外还可以通过变量设置的方式,可以把表或者视图的名称,或者sql命令直接放在变量中.4)                   5) OK,确认了之后,发现红色的错误提示已经不存在了.接下来,我们直接再添加一个目标数据源,我们将数据导出成Excel数据格式,所以选择Excel Destination,同样,双击对Excel连接管理器进行配置,配置好文件名称和路径以后(此处选择在首行显示列名,这样会从第二行开始才开始显示数据),如果文件不存在,直接选择下面的新建,创建新的Excel工作表.6)7) 然后从左边切换到映射,对数据流中的元数据的列和Excel表中的列进行一一映射,因为刚才是自动创建的Excel工作表,所以默认是根据名称对应的.这样我们就完成了对Product产品表的导出,在右边的解决方案中,右击执行包,可以看到绿色执行成功.    8) 打开刚才指定的路径中的Excel文件,已经包含了导出的数据.是不是比手工写C#代码实现数据库数据导出到Excel文件方便了很多?呵呵,这还只是最基础的功能.我们通过设置sql语句导出所有颜色为黑色的产品,让我们把OLEDB数据源的访问模式改成sql命令,然后输入查询语句:SELECT * FROM Production.ProductWHERE (Color = 'Black')9) 再次执行时就会发现生成的Excel表中已经只包含了Color=Black的数据(注意,如果你刚才所有的数据的Excel文件没有删除,你会发现这次导出的数据是添加到了上次的数据的后面).10) 接下来,我们再将刚才导出的产品数据导入Product表中.再添加Excel Source和OLE DB Destination,其实就是做和导出相反的过程.把Excel Source的OLEDB连接指向Excel连接管理器(刚才导出中Excel Destination中设置的,在下面连接管理器中会列出来),OLE DB Destination的连接设置成OLE DB Source中的数据库连接,同样,设置成以表或视图的方式访问Product表,确定后发现有红色错误提示,这是因为数据库中Product产品是以ProductID作为主键标识的,所以不能够插入,我们从映射中设置将ProdutID字段删除,同样的,我们需要将rowguid字段,这两个字段都是数据库中自动生成的. 11)    12) 再次确认后会发现已经没有错误,只剩下了黄色的警告,我们现在暂时不理会这个警告.我们把刚才生成的Excel文件删除,重新配置Excel连接管理器生成新的空Excel文件(或者把生成的Excel中的数据删除),然后再次运行包,你会发现,刚才的数据导出仍然正常,但是数据导入却显示的是没有导入任何数据,这是因为在数据中刚才的数据导出和导出并没有先后,所以他们是同步执行的,执行导入时发现里面的数据为空,所以没有导入成功任何数据.不过,尝试着把数据导入的操作直接放在Excel Destination后面是失败的,Excel Destination就是数据流目标,意味着整个流程的结束.(此时Excel Destination中只可定义一个错误输出). 我们切换到控制流,再添加一个数据流任务,将第一个数据流任何指向这个(鼠标拖拉绿色箭头):        13) 双击刚添加的数据导入(已经编辑的数据流组件名称),把刚才的数据流中的组件剪切过来.清空Excel数据再次运行包,怎么还是有错误,”这是为什么呢?” ,呵呵,看下面的错误信息:14) An OLE DB record is available. Source: "Microsoft SQL Native Client"  Hresult: 0x80040E2F  Description: "语句已终止。". An OLE DB record is available.  Source: "Microsoft SQL Native Client"  Hresult: 0x80040E2F  Description: "不能在具有唯一索引 'AK_Product_ProductNumber' 的对象 'Production.Product' 中插入重复键的行。".15) 其实产品编号ProductNumber也是主键,呵呵,这个问题是在运行前SSIS没有提示的.怎么办呢?为了达到目的,我们暂时通过添加一次转换,在刚才的数据流源和数据流目标中间再添加一个派生列组件(Derived Column ,Updates column values using expressions).添加一个新列NewProductNumber,在Excel中的产品编号后面加1,组成新的产品编号,同样我们派生出一个新的产品名称Name,因为在数据库中同样也有唯一性约束.       16)          同时,我们还要修改OLE DB目标中的映射,将目标列的ProductNumber对应的输入列ProductNumber改成刚才派生的NewProductNumber.将目标列的Name对应的输入列Name改成刚才派生的NewName.清空Excel数据,再次运行包,都变成了绿色,执行全部成功         17) 通过对比数据库,确实已经成功的添加进了93行新的数据. 细心的可能会发现,控制流中的数据导出和导入两个组件其实是前后约束条件的,也就是必须数据导出必须成功了才会执行导入(后面会介绍).另外,所谓的数据导出并不会局限于数据库的导入和导出,数据流源和数据流目标都可以是Excel,Flat File(txt,csv),XML,DataReader等连接.也就是说同样可以实现txt导入Excel,或者是XML导入数据库等操作. 好了,今天是SSIS的一个入门,我们利用SSIS实现了数据的导入和导出,把Product表中的数据导出成Excel,然后对产品编号和名称两个字段经过派生的功能进行转换再导入到数据库中,这其中我们认识了控制流和数据流,数据流源和数据流目标,并且还引入了派生列组件来实现我们的导入(这里主要是为了实现导入,有可能是正好产品名称相对1这个字符导致错误)3. 批量导入Excel表1) 上一次我们已经介绍了简单的数据导出和导入,但是只是对单一文件进行操作,如果我们想同时对一个目录下面的所有的文件执行数据导入怎么实现呢?相当简单,SSIS在控制流中提供了Foreach循环容器,很容易理解,它和序列容器相比就是能够循环的遍历执行,能够对指定枚举器的每个成员重复执行控制流:2)          可以看到,Foreach循环窗器遍历文件夹可以通过一些设置或者是正则来匹配,使用 Foreach 循环容器,可以枚举:         ADO 记录集行和架构信息         文件和目录结构         系统、包和用户变量         SQL 管理对象 (SMO)3) 首先我们准备一下数据,把上次生成的Excel文件重命名为Product1.xls,新建一个Product2.xls,复制Product1.xls中的ProductID<800的行到新建的Product2.xls中(注意两个Excel的Sheet名字一致),然后在我们的SSIS项目中新建一个ForeachInput包,Foreach 循环容器容器进来,双击进行集合设置,在文件夹处指定我们Excel文件所在的文件路径,比如F: ,文件名处写*.xls,这样就能够匹配出所有的后缀名为xls的文件,然后单独执行容器里面的流程,不过在我们的容器中需要去访问每一个Excel文件,我们必须获得每一个枚举变量也就是文件的名称,可以通过设置变量映射实现.4) 如上图,新建变量后,每次找到一个与条件相匹配的文件时,Foreach 循环容器就会将用该文件名填充用户定义的变量.同理,当我们遍历其它对象时,也可以采用变量的方式进行映射,获得遍历到的单个匹配对象. 然后我们直接把上一次建的包(OutputAndInput.dtsx)中的数据导入这个数据流组件复制到Foreach 循环容器中(就象复制普通文件一样,呵呵),同样也把连接管理器中的Excel文件连接和数据库连接复制过来.这样我们基本上已经完成了,只不过现在的Excel文件连接还是指定文件,我们只需要和我们的变量currentFilePath绑定上就行了.点击我们的Excel文件连接,在右边的属性中点击Expressions.        5) 在属性表达式编辑器里,我们可以对Excel文件连接的所有的属性的值直接用表达式绑定,不仅是Excel文件连接,象普通文件连接,数据库连接,FTP连接同样可以.这无疑提高了灵活性.在这里,我们仅需要绑定其文件路径,在属性里选择ExcelFilePath,然后点击表达式后面的省略号按钮.       6)  这里不仅可以直接绑定系统变量和用户变量,而且可以使用脚本组合成表达式.我们只需要选定用户变量currentFilePath.点击计算表达式,只是一个空的字符串,因为此时并没有进行遍历.所以点击后发现Excel Source数据流源组件显示红色的,提示文件并不存在,我们不需要此时对文件进行检测,所以将Excel文件连接的延迟验证DelayValidation属性值设置成True. 我们为了防止和数据库里面已经有的数据发生冲突,修改派生列组件,因为上一次我们是ProductNumber和Name加了1,这次我们加2.       7)  然后右击包执行,你会发现执行成功,而且是执行了两次数据流(有可能很快看不出来),可以通过对比数据库看出来,已经添加进了两个Excel表里的数据.当然,你可以分成更多个Excel,多少个都没有关系.       8)  此处,你也可以通过添加数据查看器进行查看执行过程中的数据,这样可以很方便的进行SSIS包的简单的调试.右击派生列组件和Product目标表中间的绿色,点击数据查看器,然后点击添加,再选择网络,其它全部默认,确定.       9) 我们把派生列中改成+"3”时再次运行包,你会发现所有的组件都是黄包,这代表正在执行,在弹出来的数据查看器中可以看到所有的数据流的55行数据,点击上面的绿色按钮可以继续运行.通过数据查看器我们可以查看正在数据流中传输的数据.10) 我们在上面的数据查看器中就可以看到新增加的NewProductNumber和NewName两个列是否正确. 到现在我们就已经完成了批量导入Excel,本次我们主要学习了Foreach循环容器,并且配合用户变量的使用,以及在使用连接器中的连接的一些简单设置,比如属性动态绑定表达式等,另外还介绍了数据查看器的用法4. 合并数据11) 我们已经实现了把Excel中的数据导入到数据流目标,也就是数据库中,但是我们只是模拟了不重复的数据,也就是都是数据库中此时不存在的数据.那么如果数据流源Excel中的数据和数据库中的数据的主键相同的情况下,再进行插入操作就会出现异常,怎么才能实现自动的更新操作呢?也就是自动的判断数据源的数据,如果数据库中存在就执行更新,不存在就执行插入呢?     可能叫做合并数据会有些误解,这里的合并数据与数据流中的Merge组件和Merge Join组件直接实现的效果是有差别的,首先我们看看这两个组件.     我们新建一个包,重合名为MergeData,然后在控制流中将上次的ForeachInput包中的组件全部复制过来(包括连接管理器),删除Foreach循环容器,然后修改数据流,添加两个Excel数据流源,分别对其通过Sort进行排序(按照ProductNumber字段),再添加Merge进行数据合并,分别添加三个数据查看器,修改后的数据流图如下:     2)     我们执行一下,三个数据查看器的部分载图如下:3) 可以看到,Merge数据合并了两个数据源的数据,但是并不直接实现我们想达到的目标,不过注意到Merge有以下两个特点:     1.使用Merge转换之前必须对数据进行排序,可能通过象上面那样使用Sort转换,或者直接在源连接中指定ORDER BY直接完成.     2.合并数据的两个路径之间的元数据必须相同.     3.只能应用于两个数据的合并,如要两个以上,可考虑选择Union All转换    Merge Join组件和Merge组件有什么样的区别呢?我们再新建一个包MergeData2来看下Merge Join组件,两个数据流源分别连接到Product表和ProductInventory表,修改数据流如下:4) 两个Sort分别按照ProductID字段进行升序排序,Product路径输入流作为左侧输出,Merge Jogin组件设置成左外部连接(左连接,外部,内部连接和SQL一样),并选择需要输出传递到路径的列:     5)    执行过程的三个数据查看器显示的数据如下6) 可以看到和SQL的连接一下,将产品的基本信息和产品的库存信息连接在一起组合一起,它的作用就是可以合并两个输入的输出并对数据执行INNER或者OUTER连接,当然,如果两路输入位于同一个数据库中,你直接使用OLE DB数据级别的join操作会更快,但是当你希望合并两个不同的数据源时,Merge Join就可以派上用场了.      OK,今天就到这里,我们主要今天主要是熟悉了Merge和Merge Join,但是并没有实现我们上面提出来的直接同步合并数据的需求(不过其实仔细考虑一下,其实再结合其它的组件可以实现).下几次我们将采用几种方式实现.5. 合并数据2    上次我们并没有实现Excel中的数据与数据库中的数据进行整合,存在即更新,不存在即插入.这次主要介绍几种方法来实现:      1.使用Lookup      2.使用execute SQL task调用存储过程      3.使用script component脚本实现      4.使用MERGE 语句(SQL SERVER 2008)      5.使用上次我们用到的Merge来实现      6.使用第三方组件SCD Component    看起来能够实现的方法确实不少,我们来一一介绍,介绍的同时也会介绍一些组件的应用,同理在我们实现其它功能时,也可以同样使用. · Lookup      新建一个包MergeDataLookUp,我们把ForeachInput中的复制过来,我们实现遍历Excel的同时,实现Excel中的数据与数据库中的数据合并,在数据流中,在Excel数据源的下面,删除原来的组件,拖入LookUp组件,选择OLE DB连接后,进行查找的设置:               可以看到,我们是根据Excel数据中的ProductNumber字段去数据库中查找对应的数据(列ProductID),即找到对应的数据时,ProductID会作为新列添加到我们的数据流中,找不到时则会出现错误,点击上面的标出的配置错误输出,           这样对于Lookup的两个输出,正常的输出也就是找到了ProductNumber对应的数据,此时做更新操作.上图中我们已经进行了配置,当某一行没有找到时,我们将这行数据重新定行到错误输出,此时再进行插入操作.我们在正常的输出上添加OLE DB Command,来执行我们的Update语句.              在错误输出上添加我们上次添加过的OLE DB Destination,其中忽略ProductID和rowguid两个字段.整个数据流如下:       到现在我们已经实现了利用Lookup合并数据. 2.使用存储过程       使用存储过程实现这个就相当容易的多,不过并不建议这样做,我们把所有的流程都放在了存储过程里面,而不是SSIS包里面,有一个应该考虑的是,一般我们可以在SSIS包里设置成支持事务(设置包或者组件的TransactionOption属性).在存储过程里,我们可以直接采用存储过程里面的事务机制.       我们新建一个包MergeDataProcedure,完成如上个包的设置, 只需要执行一个OLE DB Command,在这里我们调用存储过程,存储过程里我们只是完成根据ProductNumber判断数据存在不存在,存在即执行更新,不存在插入.在这里就不再对这个方法进行详细介绍了.3.使用Script Component     新建一个包MergeDataScript,复制MergeDataLookUp中的控制流和变量,连接器,将Loopup组件换成Script Component组件(添加时使用方法为转换).首先选择输入列,并设置其使用类型:          然后设置输入输出,在这里,有一个输入,然后设置三个输出,输出的列不需要手动配置的,是自动创建的,注意到输入RecordsInput的ID为2778.三个输出的名称分别为UpdateRecordsOutput,InsertRecordsOutput,IgnoreRecordsOutput,将输出的属性ExclusionGroup设置成1,将属性SyncronousInputID值设置成RecordsInput(ID为2778),每个输入控件的SyncronousInputID都是不一样的.设置这两个属性是我们下面脚本运行的关键,具体将查询官方文档.         最后我们设置一下连接管理器,因为我们在脚本中要获取数据库连接,所以在这里我们添加一个连接的名称,注意这里我并没有连接到原来的OLE DB连接,我在脚本中使用了SqlDataReader,此处需要新建一个ADO.NET连接.           设置完以后,我们再切换到脚本,直接设置脚本,打开脚本编辑器,输入如下脚本,然后关闭.确定.     Imports SystemImports System.DataImports System.MathImports Microsoft.SqlServer.Dts.Pipeline.WrapperImports Microsoft.SqlServer.Dts.Runtime.WrapperImports Microsoft.SqlServer.Dts.RuntimeImports System.Data.SqlClientPublic Class ScriptMain Inherits UserComponent Dim connMgr As IDTSConnectionManager90 Dim sqlConn As SqlConnection Dim sqlCmd As SqlCommand Dim sqlParam As SqlParameter Public Overrides Sub AcquireConnections(ByVal Transaction As Object) connMgr = Me.Connections.DBConnection sqlConn = CType(connMgr.AcquireConnection(Nothing), SqlConnection) End Sub Public Overrides Sub PreExecute()sqlCmd = New SqlCommand("SELECT Name FROM Product WHERE ProductNumber=ProductNumber", sqlConn) sqlParam = New SqlParameter("ProductNumber", SqlDbType.NVarChar, 25) sqlCmd.Parameters.Add(sqlParam) End Sub Public Overrides Sub RecordsInput_ProcessInputRow(ByVal Row As RecordsInputBuffer) Dim reader As SqlDataReader sqlCmd.Parameters("ProductNumber").Value = Row.ProductNumber reader = sqlCmd.ExecuteReader() If reader.Read() Then '此处可以根据需要进行字段的比较 If (reader("Name").ToString() <> Row.Name) Then Row.DirectRowToUpdateRecordsOutput() Else Row.DirectRowToIgnoreRecordsOutput() End If Else Row.DirectRowToInsertRecordsOutput() End If reader.Close() End Sub Public Overrides Sub ReleaseConnections() connMgr.ReleaseConnection(sqlConn) End SubEnd Class   上面的脚本的具体含义也就不再详细介绍,比较容易理解,其实与我们使用LookUp实现的功能相同,使用ProductNumber进行查找Name字段,如果找到Name则跳转到更新输出,否则跳转到忽略输出,如果没有找到,则跳转到添加输出.我们也可以直接把添加,更新这些操作放在脚本里面.不过为了使整个流程更加清晰,我们只是使用脚本进行了一个转换.不过其实脚本实现的会更加灵活,这里其实还可以实现双向查找或者是更加复杂的功能.    我们在Script Component后面添加对应的输出,其中UpdateRecordsOutput,InsertRecordsOutput和使用LookUp一样.不过我们对于IgnoreRecordsOutput输出我们添加一个RowCount进行统计.    执行包,完成了数据的更新和添加. 好吧,有些困了,今天就只介绍这三种方法的实现,下次再简单的介绍另外三种方法. 6. 合并数据31) 我们已经介绍了三种方法来实现数据流源和数据库数据的合并,也就是Excel中的数据和数据库里面的数据进行同步,存在的数据进行更新操作,不存在的添加数据,另外还可以扩展为,如果数据库为的数据在Excel数据源中不存在,则执行删除操作.接下来我们来介绍其它的方法来实现这样的目标.      我们在合并数据1中曾经介绍过,直接通过Merge和Merge Jone是无法直接实现的,不过我们可以通过变通的方法实现.首先我们新建一个包MergeDataMerge,像之前一样,象上次一样,准备控制流,变量和连接管理器.其实前面和合并数据1中的MergeData2一样,将Excel数据源和数据库表数据根据ProductNumber字段进行合并.      2) 这里我们选的是完全外部连接,这样才能完全合并两边的数据.当一方数据没有匹配的数据时,有NULL代替.所以我们直接根据合并后的ProductNumber和NewProductNumber 就可以直接这行数据应该对应的是添加,更新,还是删除.在Merge Join组件下面,我们添加Conditional Split组件,这个组件来判断对于不同的情况的分支:      3) 很简单,当行中对应的ProductNumber为NULL时,说明没有从数据库时面查到匹配的数据,所以这条数据应该进行新增操作,当NewProductNumber为NULL时,说明Excel数据源中不存在数据库中ProductNumber对应的数据,所以此条数据应该进行删除,最后,如果两个ProductNumber相同,则应该进行更新操作.这里需要注意的是,一定要把两个判断ISNULL的条件放在前面,因为我们在第三个里面用到了TRIM,如果为NULL值时,会有错误发生.       4) 接下来我们介绍一下使用SCD Component怎么来实现这个,我们先建一个包MergeDataSCDComponent,同样,准备好其它的资源,然后拖动Slowly Changing Dimension组件进来,双击这个控件进行设置,我们会发现,这类似于一个安装程序,可以一步一步的设置,点击下一步,首先我们需要选择数据连接管理器,然后再设置业务键,在这里我们设置ProductNumber列作为业务键:     5) 再点击下一步,在这里我们可以选择数据源中的列,然后设置此列的更改类型,分为固定,变化还是历史,在左面已经列中不同的类型的详细说明:     6) 可以看到这个组件很强大,可以针对不同的更改类型做出这么多的区分,我们再点击下一步,看到在这里可以设置,如果固定类型的属性更改时是否转换失败,变化的属性更改时,是否更改所有的匹配记录.       我们直接下一步,然后完成整个配置,可以看到,Slowly Changing Dimension下面多出来了三个分支,就象我们前几次实现的一样,只不过这次是全部配置完成的.虽然下面的其中的两个组件名显示的是英文(估计是没有对应的中文翻译),不过还是相应强大的.           我们来看一下插入目标这个组件,自动生成的只是一个OLE DB目标组件,然后已经把字段映射好了,而且对于一些特殊的列已经自动进行了忽略(考虑的还真周到).其它的两个更新的操作,都是生成的OLE DB Command组件,而且自动生成了SQL语句.       7) 我们运行一个这个包,发现能够自动的判断数据是否更新,还是插入:         8) 好了,到现在为止,合并数据就介绍完了.7. 通过Email发送查询结果忙了一段,终于有时间来完成这一系列了。sql server 2008正式版已经发布了,接下来的系列都将基于sql server 2008+ 2008开发。引言     在一个B2B项目中遇到这样的一个情况,每天老板都想看到所有的新的订单信息,而这个老板很懒,不想登录系统后台,而是想通过查看邮件的方式。当然实现方式很多,这里我们介绍一个怎么使用SSIS包来实现这样的一个功能。使用SQL  XML Query查询出XML结果数据,然后使用Xsl模板将xml数据转换成html,再将html内容发送邮件。创建SSIS包    1.和 20005中一样的方式,创建一个Integration Service项目,并且包的名称修改为SendMailPackage    2.在你的本地硬盘上新建一个目录,比如F:SSIS_ExampleSendMail  用来存放查询语句和Xsl文件.    3.在刚才的目录下新建一个QueryOrder.sql文件,填充如下内容,在连接管理器中新建一个文件连接,选择新建的sql文件:隐藏行号 复制代码 ? QueryOrder.sql · /*· 实际使用时将v_CurrentDate换成当时日期· */·· declare v_CurrentDate datetime· · set v_CurrentDate = '2003-07-17'· · /*set v_CurrentDate = GETDATE()*/· ·· · if exists (select 1· · from Sales.SalesOrderHeader· · where OrderDate = v_CurrentDate)· ·· · begin· ·· · select top 10 oh.OrderDate, · · (select round(sum(TotalDue), 2)· · from Sales.SalesOrderHeader· · where OrderDate = v_CurrentDate) as DayTotal,· · p.ProductID, p.Name, · · round(sum(oh.TotalDue), 2) as ProductSubtotal

    注意事项

    本文([计算机软件及应用]SSIS Integration Service.doc)为本站会员(sccc)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开