Microsoft SQL Server 2005 Integration Services (SSIS) 是生成高性能数据集成解决方案(包括数据仓库的提取、转换和加载 (ETL) 包)的平台。
(1) 是数据导入"导出向导
(2) 是ETL工具
(3) 控制流引擎
(4) 应用程序平台
(5) 高性能的数据转换数据管线
在ETL抽取工具中,SSIS以其成本较低,容易上手,又加之功能强大,而应用广泛。
本文是以前做项目时,针对SSIS学习研究时整理的文章,内容涉及到SSIS高级的一些特性,现在整理出来希望对学习ETL初学者有所帮助。
2. 常用技巧
2.1 配置文件
配置文件为“MsDtsSrvr.ini.xml”,位于“%Program Files%"Microsoft SQL Server"90"DTS"Binn”下。这个文件的位置和名称存储在注册表项“HKEY_LOCAL_MACHINE"SOFTWARE"Microsoft"MSDTS"ServiceConfigFile”的值中。例如值为:
D:"Program Files"Microsoft SQL Server"90"DTS"Binn"MsDtsSrvr.ini.xml
注:修改配置文件后,一定要重新启动Integration Services服务器。
2.2 修改文件系统文件夹位置
<?xml version="1.0" encoding="utf-8"?>
<DtsServiceConfiguration xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<StopExecutingPackagesOnShutdown>true</StopExecutingPackagesOnShutdown>
<TopLevelFolders>
<Folder xsi:type="SqlServerFolder">
<Name>MSDB</Name>
<ServerName>.</ServerName>
</Folder>
<Folder xsi:type="FileSystemFolder">
<Name>File System</Name>
<StorePath>.."Packages</StorePath>
</Folder>
<Folder xsi:type="FileSystemFolder">
<Name>ODSM File System</Name>
<StorePath>D:"ODSM ETL Deployment</StorePath>
</Folder>
</TopLevelFolders>
</DtsServiceConfiguration>
红色字体部分,为新增加的内容。如下图所示:
2.3 修改服务器引用的实例
如果一台计算机上装有多个实例,集成服务并不支持多个实例。因此,可以修改配置文件“MsDtsSrvr.ini.xml”,指定哪个实例。
修改内容如下:
<Folder xsi:type="SqlServerFolder">
<Name>MSDB</Name>
<ServerName>."SQL2K5</ServerName>
</Folder>
2.4 共享的MSDB存储区
把全部的包存储在一个中央服务器上。更改其它所有的SSIS服务器中的服务器配置文件,使他们指向相同的SQL Server计算机。
优点如下:
1 可以便于保障包的安全,对包进行备份和维护;
2 当使用的中央Sql Server发生变化时,人们使用的自动设置不需要更改;
3 隔离权限。可以让最终用户能够运行包,而不需要知道这些包的具体存储位置,包存储位置由管理员负责控制。
2.5 服务器故障诊断
修改配置文件“msdtssrvr.exe.config”与文件“msdtssrvr.ini.xml “在同一个文件夹中。红色字体为修改和增加的内容。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<runtime>
<gcServer enabled="true"/>
</runtime>
<system.diagnostics>
<switches>
<add name="TraceClientConnections" value="4" />
<add name="TraceManagementCalls" value="4" />
<add name="ServerTraceSwitch" value="4" />
</switches>
<trace autoflush="true">
<listeners>
<add name="FileLog" type="System.Diagnostics.TextWriterTraceListener"
initializeData="D:"ODSM ETL Logs"SSIS Server Log"Listener.log"/>
</listeners>
</trace>
</system.diagnostics>
</configuration>
注:跟踪记录类别不同的值。
0:不做日志记录;
1:只将错误消息记录到日志;
2:只将错误消息和警告信息记录到日志;
3:将更详细的错误信息记录到日志;
4:在日志中记录详细的跟踪信息。
Listener.log内容如下:
InitializeComSecurity: Enter
CoInitializeSecurity: 0x0.
InitializeComSecurity: Leave
Reading configuration file D:"Program Files"Microsoft SQL Server"90"DTS"Binn"MsDtsSrvr.ini.xml
Config processed: 3 root folders
RegisterComObject: Enter
DllGetClassObject: 0x0, System.__ComObject
CoRegisterClassObject: 0
DllGetClassObject: 0x0, System.__ComObject
CoRegisterClassObject: 0
RegisterComObject: Leave
Dropped DtsApplication object
Created DtsApplication object
Opening client's process to get Exited event.
Registering package Package1 (b4a1b509-9ad3-4fb5-8e21-58385fc3f92c) for QIANGGUO"guoqiang, assigned ID 7f1f0524-bf78-4e02-b276-eb37474c74d4
Package Package1 (b4a1b509-9ad3-4fb5-8e21-58385fc3f92c) registered by QIANGGUO"guoqiang, assigned ID 7f1f0524-bf78-4e02-b276-eb37474c74d4
Unregister package request: 7f1f0524-bf78-4e02-b276-eb37474c74d4
Package unregistered: 7f1f0524-bf78-4e02-b276-eb37474c74d4