第1章 欢迎使用SQL Server IntegrationServices 1
1.1 SQL Server SSIS历史概述 2
1.2 SSIS中的新内容 2
1.3商业工具 2
1.3.1导入和导出向导 2
1.3.2 SQL Server Data Tools体验 3
1.4 SSIS体系结构 4
1.4.1包 4
1.4.2控制流 5
1.4.3数据流 8
1.4.4变量 12
1.4.5参数 12
1.4.6错误处理和日志记录 12
1.5 SQL Server版本 12
1.6小结 13
第2章 SSIS工具 15
2.1导入和导出向导 15
2.1 SQL Server Data Tools 21
2.3创建第一个包 23
2.4解决方案资源管理器窗口 24
2.4.1工具箱 25
2.4.2属性窗口 25
2.5 SSIS包设计器 25
2.5.1控制流 26
2.5.2连接管理器 30
2.5.3变量 30
2.5.4数据流 31
2.5.5参数 32
2.5.6事件处理程序 32
2.5.7包资源管理器 33
2.5.8执行包 33
2.6 Management Studio 34
2.7小结 34
第3章 SSIS任务 35
3.1 SSIS任务对象 35
3.1.1使用任务编辑器 36
3.1.2任务编辑器的“表达式”选项卡 36
3.1.3 SDDTCommon属性 37
3.2循环和序列任务 38
3.3脚本任(.NET) 39
3.4 Analysis Services任务 41
3.4.1 Analysis Services执行DDL任务 41
3.4.2 Analysis Services处理任务 42
3.4.3数据挖掘查询任务 42
3.5数据流任务 43
3.6数据准备任务 44
3.6.1数据事件探查器 44
3.6.2文件系统任务 46
3.6.3对文件进行归档 47
3.6.4 FTP任务 48
3.6.5使用FTP获取文件 49
3.6.6 Web服务任务 50
3.6.7使用Web服务任务和XML源组件来获取数据 52
3.6.8 XML任务 55
3.6.9验证XML文件 56
3.7 RDBMS服务器任务 59
3.7.1大容量插入任务 59
3.7.2使用大容量插入任务 61
3.7.3执行SQL任务 62
3.8工作流任务 72
3.8.1执行包任务 72
3.8.2执行进程任务 73
3.8.3消息队列任务 74
3.8.4发送邮件任务 75
3.8.5 WMI数据读取器任务 76
3.8.6 WMI事件观察器任务 79
3.8.7为了文件传输而轮询目录 79
3.9 SMO管理任务 80
3.9.1传输数据库任务 80
3.9.2传输错误消息任务 81
3.9.3传输登录名任务 82
3.9.4传输主存储过程任务 82
3.9.5传输作业任务 83
3.9.6传输SQL Server对象任务 83
3.10小结 84
第4章 容器 85
4.1任务宿主容器 85
4.2序列容器 85
4.3组 86
4.4 For循环容器 87
4.5 Foreach循环容器 89
4.5.1 Foreach文件枚举器示例 90
4.5.2 Foreach ADO枚举器示例 92
4.6小结 95
第5章 数据流 97
5.1理解数据流 97
5.2数据查看器 98
5.3源 98
5.3.1 OLE DB源 99
5.3.2 Excel源 101
5.3.3平面文件源 102
5.3.4 原始文件源 106
5.3.5 XML源 107
5.3.6 ADO.NET源 107
5.4目标 107
5.4.1 Excel目标 108
5.4.2平面文件目标 108
5.4.3 OLE DB目标 108
5.4.4原始文件目标 109
5.4.5记录集目标 109
5.4.6 SQL Server和移动目标 109
5.4.7数据挖掘模型定型目标 110
5.4.8 DataReader目标 110
5.4.9处理维度目标和处理分区目标 110
5.5常用转换 110
5.5.1同步转换和异步转换 111
5.5.2聚合转换 111
5.5.3有条件拆分转换 112
5.5.4数据转换 113
5.5.5派生列转换 114
5.5.6查找转换 115
5.5.7缓存转换 116
5.5.8行计数转换 116
5.5.9脚本组件 117
5.5.10渐变维度转换 117
5.5.11排序转换 118
5.5.12 Union All转换 119
5.6其他转换 120
5.6.1审核转换 120
5.6.2字符映射表转换 121
5.6.3复制列转换 122
5.6.4数据挖掘查询转换 122
5.6.5 DQs清除转换 123
5.6.6导出列转换 123
5.6.7模糊查找转换 124
5.6.8模糊分组转换 130
5.6.9导入列转换 133
5.6.10合并转换 135
5.6.11合并联接转换 136
5.6.12多播转换 137
5.6.13 OLE DB命令转换 137
5.6.14百分比抽样转换和行抽样转换 138
5.6.15 透视转换 138
5.6.16逆透视转换 141
5.6.17字词提取转换 142
5.6.18字词查找转换 146
5.7数据流示例 147
5.8小结 150
第6章 使用变量、参数和表达式 151
6.1动态包对象 151
6.1.1变量概述 152
6.1.2参数概述 152
6.1.3表达式概述 153
6.2理解数据类型 153
6.2.1 SSIS数据类型 153
6.2.2日期和时间类型支持 155
6.2.3错误的数据类型和大小如何影响性能 155
6.2.4 Unicode和非Unicode转换问题 156
6.2.5 SSIS表达式中的强制转换 158
6.3使用变量和参数 159
6.3.1定义变量 159
6.3.2定义参数 160
6.3.3变量和参数数据类型 161
6.4使用表达式 162
6.4.1像CC#吗?接近但不完全是 162
6.4.2表达式生成器 163
6.4.3基本语法 164
6.4.4在SSIS包中使用表达式 176
6.5小结 184
第7章 联接数据 185
7.1查找转换 186
7.2使用合并联接转换 186
7.3对比SSIS以及关系联接 187
7.4查找功能 189
7.5生成基本包 190
7.5.1在源中使用关系联接 192
7.5.2使用合并联接转换 194
7.6使用查找转换 198
7.6.1完全缓存模式 199
7.6.2无缓存模式 201
7.6.3部分缓存模式 202
7.6.4多个输出 204
7.6.5表示式属性 207
7.6.6级联查找操作 208
7.7缓存连接管理器和缓存转换 210
7.8小结 212
第8章 创建端到端的包 213
8.1基本转换教程 213
8.1.1创建连接 214
8.1.2创建控制流 216
8.1.3创建数据流 217
8.1.4完成包 218
8.1.5保存包 219
8.1.6执行包 219
8.2典型的带有数据清理的大型机ETL 220
8.2.1创建数据流 221
8.2.2处理脏数据 222
8.2.3最终敲定 225
8.2.4处理更多的不良数据 226
8.2.5循环和动态任务 228
8.2.6循环 228
8.2.7使包具有动态性 229
8.3小结 232
第9章 在SSIS中编写脚本 233
9.1 SSIS脚本介绍 233
9.2 SSIS脚本使用入门 234
9.2.1选择脚本语言 235
9.2.2使用VSTA Scripting IDE 236
9.2.3示例:Hello World 237
9.2.4添加代码和类 238
9.2.5使用托管程序集 240
9.2.6示例:使用自定义.NET程序集 241
9.3使用脚本任务 243
9.3.1配置脚本任务编辑器 244
9.3.2脚本任务Dts对象 245
9.3.3在脚本任务中访问变量 245
9.3.4在脚本任务中连接数据源 251
9.3.5在脚本任务中触发事件 259
9.3.6在脚本任务中写入日志条目 264
9.4使用脚本组件 266
9.4.1与脚本任务的区别 266
9.4.2配置脚本组件编辑器 266
9.4.3在脚本组件中访问变量 269
9.4.4在脚本组件中连接数据源 270
9.4.5触发事件 270
9.4.6日志记录 271
9.4.7同步与异步 280
9.5基本代码、调试和故障诊断技术 282
9.5.1结构化异常处理 282
9.5.2脚本调试和故障诊断 285
9.6小结 288
第10章 加载数据仓库 289
10.1数据分析 290
10.1.1初次执行数据事件探查任务 291
10.1.2检查数据事件探查任务的结果 293
10.1.3将数据分析的结果转化为可操作的ETL步骤 296
10.2数据提取和清洗 296
10.3维度表加载 297
10.3.1加载简单的维度表 298
10.3.2加载复杂维度表 302
10.3.3 SCD转换的注意事项和替代方案 311
10.4事实表加载 312
10.5 SSAS处理 322
10.6 使用主ELT包 327
10.7小结 328
第11章 SSIS中高级的数据清洗 329
11.1高级派生列的使用 330
11.2高级模糊查找和模糊分组 333
11.2.1模糊查找转换 333
10.2.2模糊分组转换 339
11.3 DQS清除 342
11.3.1数据质量服务 343
11.3.2 DQS清除转换 346
11.4小结 349
第12章 使用关系引擎 351
12.1数据提取 351
12.1.1 SELECT*的缺点 352
12.1.2最佳方法是什么呢? 353
12.1.3提取期间的转换 354
12.1.4许多AND使工作更加轻松 357
12.1.5数据库中的排序 357
12.1.6模块化 359
12.1.7 SQL Server也处理文本 360
12.1.8使用基于集的逻辑 364
12.2 SQL Sercer变更数据捕获 365
12.2.1 SQL Server CDC的好处 366
12.2.2准备CDC 367
12.2.3捕获实例表 369
12.2.4 CDC API 370
12.2.5使用新的 SSIS CDC工具 372
12.2.6在SSIS中查询CDC 376
12.3数据加载 379
12.3.1数据库快照 379
12.3.2 MERGE运算符 381
12.4小结 384
第13章 访问异构数据 385
13.1 Excel和Access 386
13.1.1 64位支持 387
13.1.2使用Excel文件 388
13.1.3使用Access 392
13.2从Oracle中导入数据 399
13.2.1 Oralce客户端设置 399
13.2.2导入Oracle数据 400
13.3使用XML和Web服务 402
13.3.1配置Web服务任务 402
13.3.2使用XML数据作为源 411
13.4平面文件 414
13.4.1加载平面文件 414
13.4.2从平面文件中提取数据 416
13.5 ODBC 418
13.6其他的异构源 420
13.7小结 421
第14章 可靠性和可扩展性 423
14.1重新启动包 423
14.1.1简单的控制流 424
14.1.2容器内的容器和检查点 427
14.1.3关于主题的变化 429
14.2包事务 433
14.2.1单个包,单个事务 433
14.2.2单个包,多个事务 435
14.2.3两个包,单个事务 437
14.2.4 使用SQL Server中本机事务的单一包 438
14.3错误输出 439
14.4向外扩展 442
14.4.1体系结构功能 442
14.4.2向外扩展内存压力 443
14.4.3通过暂存数据向外扩展 443
14.4.4使用并行加载来向外扩展 447
14.5小结 454
第15章 理解和优化数据流引擎 455
15.1 SSIS引擎 456
15.1.1理解SSIS数据流和控制流 456
15.1.2使用控制流来处理工作流 458
15.1.3数据流中的数据处理 459
15.1.4内存缓冲区结构 459
15.1.5转换类型 460
15.1.6高级数据流执行概念 468
15.2 SSIS数据流设计和优化 474
15.2.1数据流设计实践 474
15.2.2优化包处理 479
15.2.3排除数据流性能瓶颈 481
15.3管道性能监视 483
15.4小结 485
第16章 SSIS软件开发生命周期 487
16.1软件开发声明周期简介 489
16.1.1 SDLC的简要历史 489
16.1.2 SDLC的类型 489
16.2版本和源代码控制 490
16.2.1 SVN 491
16.2.2 Team Fundation Server、 Team System和SSIS 496
16.3小结 511
第17章 错误和事件处理 513
17.1使用优先约束 513
17.1.1优先约束基础知识 514
17.1.2高级优先约束和表达式 515
17.2事件处理 521
17.2.1事件 522
17.2.2使用事件处理程序 523
17.2.3事件处理程序继承 530
17.3断点 531
17.4错误行 534
17.5日志记录 538
17.5.1日志记录提供程序 538
17.5.2日志事件 539
17.5.3目录日志记录 542
17.6小结 544
第18章 编程和扩展SSIS 545
18.1示例组件 546
18.1.1组件1:源适配器 546
18.1.2组件2:转换 547
18.1.3组件3:目标适配器 547
18.2管道组件方法 547
18.2.1设计时功能 548
18.2.2运行时 551
18.2.3连接时间 553
18.3构建组件 554
18.3.1准备 554
18.3.2构建源组件 559
18.3.3构建转换组件 570
18.3.4构建目标适配器 580
18.4使用组件 587
18.4.1安装组件 587
18.4.2调试组件 588
18.4.3设计时 588
18.4.4构建完整的包 589
18.4.5运行时调试 590
18.5升级到SQL Server 2012 593
18.6小结 593
第19章 向组件添加用户界面 595
19.1设计UI的三个关键步骤:概述 595
19.2构建UI 596
19.2.1添加项目 596
19.2.2实现IDtsComponentUI 599
19.2.3设置UITypename 602
19.2.4构建窗体 604
19.3扩展UI 608
19.3.1运行时连接 609
19.3.2组件属性 611
19.3.3处理错误和警告 613
19.3.4列属性 615
19.4其他UI的注意事项 616
19.5小结 616
第20章 外部管理和WMI任务实现 619
20.1使用托管代码进行SSIS的外部管理 619
20.1.1设置一个用来演示的测试SSIS包 620
20.1.2托管对象模型代码库 620
20.1.3目录管理 622
20.1.4文件夹管理 622
20.1.5环境 624
20.1.6 DTS运行时托管代码库 625
20.1.7 SSIS部署项目 626
20.1.8参数对象 627
20.1.9服务器部署 628
20.1.10执行SSIS包部署到SSIS目录 629
20.1.11 EnvironmentReferences 630
20.2包操作 631
20.3应用程序对象维护操作 631
20.3.1包操作 631
20.3.2包监视 634
20.3.3项目、文件夹和报列表 636
20.3.4包管理示例 637
20.4包日志提供程序 645
20.4.1指定需要记录的事件 647
20.4.2对日志提供程序进行编程 647
20.4.3 SQL Server 2012操作日志 649
20.5包配置 651
20.5.1创建配置 651
20.5.2对配置对象进行编程 653
20.5.3配置对象 653
20.6 WMI 654
20.6.1 WMI数据读取器任务说明 654
20.6.2 WMI数据阅读器示例 655
20.6.3 WMI事件观察器任务 660
20.6.4 WMI事件观察器任务示例 661
20.7小结 663
第21章 通过外部应用程序使用SSIS 665
21.1 InfoPath文档 666
21.2 ASP.NET应用程序 671
21.3 WinForm.NET应用程序 676
21.4小结 684
第22章 管理SSIS 685
22.1使用SSIS目录 685
22.1.1设置SSIS目录属性 686
22.1.2 SSISDB 689
22.2部署模型 689
22.2.1项目部署模型 690
22.2.2包部署模型 692
22.3在SSIS中使用T-SQL 698
22.3.1执行包 698
22.3.2使用参数 700
22.3.3查询表以获取参数值 700
22.3.4使用环境 701
22.3.5使用数据分流 706
22.4创建中央SSIS服务器 707
22.5聚类SSIS 708
22.6包配置 710
22.7命令行实用工具 714
22.7.1 DTExec 714
22.7.2 DTExecUI 715
22.7.3 DTUtil 719
22.8 安全性 720
22.8.1保护ssIs目录 720
22.8.2旧的安全性 723
22.9调度包 724
22.9.1 SQL Server代理 724
22.9.2代理账户 725
22.10 64位问题 727
22.11监视包的执行 728
22.11.1内置报告 728
22.11.2自定义报告 731
22.12性能计数器 731
22.13小结 731
第23章 案例研究:一个编程示例 733
23.1您将学到的内容 733
23.2基本情况 734
23.3业务问题 734
23.4解决方案概述 735
23.5解决方案的体系结构 736
23.5.1为约定和提示命名 738
23.5.2在开始项目之前提供一些额外的SSIS技巧 739
23.6数据体系结构 739
23.6.1文件存储器位置设置 739
23.6.2银行ACH付款 740
23.6.3密码箱文件 740
23.6.4 PayPal或者直接存入公司账户 741
23.6.5案例研究数据库模型 742
23.6.6数据库设置 743
23.7案例研究加载包 752
23.7.1银行文件加载包 752
23.7.2 ACH加载包 776
23.7.3 E-mail加载包 792
23.7.4测试 796
23.8案例研究发票匹配过程 797
23.8.1匹配过程控制流 797
23.8.2匹配过程高可信度数据流 799
23.8.3匹配过程中等可信度数据流 804
23.8.4解释结果 807
23.9创建父驱动程序包 808
23.10小结 808