SSIS 包配置
SQL Server Integration Services 提供可用于在运行时更新属性值的包配置。配置是添加到已完成包中的属性/值对。通常,在包开发期间您在包对象上创建包设置属性,然后将配置添加到包中。当包运行时,它从配置中获取新的属性值。例如,通过使用配置,您可以更改连接管理器的连接字符串,或者更新变量的值。
包配置具有下列优点:
使用配置可以更轻松地将包从开发环境转移到生产环境中。例如,配置可以更新源文件的路径,或者更改数据库或服务器的名称。
将包部署到多台不同的服务器时,配置非常有用。例如,用于每个已部署包的配置中的变量可以包含不同的磁盘空间,并且如果可用磁盘空间不满足此值,包将不会运行。
配置可以使包更加灵活。例如,配置可以更新在属性表达式中使用的变量的值。
Integration Services 支持几种不同的存储包配置(例如 XML 文件、SQL Server 数据库中的表以及环境变量和包变量)的方法。
每个配置都是一个属性/值对。XML 配置文件和 SQL Server 配置类型可以包括多个配置。
在创建用于安装包的包部署实用工具时将会包括这些配置。在安装包时,可以在安装包的过程中更新配置。
注意 |
---|
若要更好地熟悉本部分介绍的概念,请参阅教程:部署包和SSIS 教程:创建简单的 ETL 包的第 3 课:添加包配置。 |
了解在运行时如何应用 SSIS 包配置
使用 dtexec 命令提示符实用工具 (dtexec.exe) 运行部署的包时,该实用工具将应用两次包配置。该实用工具将在它应用在命令行上指定的选项之前和之后各应用一次包配置。
在实用工具加载和运行包时,事件的发生顺序如下:
dtexec 实用工具加载包。
该实用工具应用设计时在包中指定的配置,并根据在包中指定的顺序应用。(唯一的例外是父包变量配置。该实用工具仅应用一次这些配置,并且是在过程的后面应用。)
该实用工具随后应用在命令行上指定的任何选项。
该实用工具随后重新加载设计时在包中指定的配置,并根据在包中指定的顺序重新加载。(同样,此规则唯一的例外是父包变量配置)。该实用工具使用指定的任何命令行选项来重新加载配置。因此,可能从不同位置重新加载不同值。
该实用程序应用父包变量配置。
该实用工具运行包。
dtexec 实用工具应用配置的方式影响以下命令行选项:
在运行时,可以使用 /Connection 或 /Set 选项从在设计时指定的位置之外的某个位置加载包配置。
可以使用 /ConfigFile 选项加载在设计时未指定的其他配置。
但是,这些命令行选项确实存在一些限制:
不能使用 /Set 或 /Connection 选项覆盖在配置中也同样设置的单个值。
不能使用 /ConfigFile 选项加载用来替换在设计时指定的配置的配置。
有关这些选项以及在 SQL Server 2005 Integration Services 和 SQL Server 2008 Integration Services 中这些选项的行为有何异同的详细信息,请参阅SQL Server 2008 R2 中 Integration Services 功能的行为更改。
SSIS 包配置类型
下表介绍了包配置的类型。
类型 |
说明 |
---|---|
XML 配置文件 |
XML 文件包含配置。XML 文件可以包括多个配置。 |
环境变量 |
环境变量包含配置。 |
注册表项 |
注册表项包含配置。 |
父包变量 |
包中的变量包含配置。此配置类型通常用于更新子包中的属性。 |
SQL Server 表 |
SQL Server 数据库中的表包含配置。表可以包括多个配置。 |
SSS 中的 XML 配置文件
如果选择**“XML 配置文件”**配置类型,您可以创建一个新的配置文件;重用现有文件并添加新的配置;也可以重用现有文件但覆盖现有文件的内容。
XML 配置文件包括两部分:
包含有关配置文件信息的标题。此元素包括的属性有该文件的创建时间和该文件的创建者的姓名等。
包含有关每个配置的信息的配置元素。此元素包括的特性有属性路径和属性的配置值等。
下列 XML 代码说明了 XML 配置文件的语法。此示例显示了一个名为 MyVar 的整数变量的 Value 属性配置。
<?xml version="1.0"?>
<DTSConfiguration>
<DTSConfigurationHeading>
<DTSConfigurationFileInfo
GeneratedBy="DomainName\UserName"
GeneratedFromPackageName="Package"
GeneratedFromPackageID="{2AF06766-817A-4E28-9878-0DE37A150648}"
GeneratedDate="2/01/2005 5:58:09 PM"/>
</DTSConfigurationHeading>
<Configuration ConfiguredType="Property" Path="\Package.Variables[User::MyVar].Value" ValueType="Int32">
<ConfiguredValue>0</ConfiguredValue>
</Configuration>
</DTSConfiguration>
用于存储 SSIS 包配置的注册表项
如果要使用注册表项存储配置,可以使用已有项或在 HKEY_CURRENT_USER 中创建新项。使用的注册表项必须具有名为 Value 的值。该值可以是 DWORD 或一个字符串。
如果选择**“注册表项”**配置类型,请在“注册表项”框中键入注册表项的名称。格式为 <注册表项>。如果要使用不在 HKEY_CURRENT_USER 根目录下的注册表项,请使用 <注册表项\注册表项\...> 格式来标识该项。例如,若要使用 SSISPackages 中的 MyPackage 项,请键入 SSISPackages\MyPackage。
SQL Server SSIS 配置类型
如果选择 SQL Server 配置类型,则需指定到要存储这些配置的 SQL Server 数据库的连接。可以将配置保存到现有表,也可以在指定数据库中新建表。
下面的 SQL 语句说明了包配置向导提供的默认 CREATE TABLE 语句。
CREATE TABLE [dbo].[SSIS Configurations]
(
ConfigurationFilter NVARCHAR(255) NOT NULL,
ConfiguredValue NVARCHAR(255) NULL,
PackagePath NVARCHAR(255) NOT NULL,
ConfiguredValueType NVARCHAR(20) NOT NULL
)
您为配置提供的名称就是在 ConfigurationFilter 列中存储的值。
直接配置和间接配置
Integration Services 提供了直接配置和间接配置。如果直接指定配置,Integration Services 会在配置项和包对象属性之间创建直接链接。如果源的位置不更改,则直接配置是较好的选择。例如,如果确定包中的所有部署都使用相同的文件路径,则可以指定一个 XML 配置文件。
间接配置使用环境变量。配置不直接指定配置设置,而是指向环境变量,环境变量又包含配置值。如果对于包的每个部署,配置的位置都可以更改,则使用间接配置是较好的选择。
外部资源
msdn.microsoft.com 上的技术文章了解 Integration Services 包配置
www.sqlis.com 上的博客文章使用代码创建包 – 包配置。
blogs.msdn.com 上的博客文章 API 示例 - 以编程方式将配置文件添加到包。
codeplex.com 上的工具包配置文件编辑器。
|
更改历史记录
更新的内容 |
---|
添加了与 /Connection 命令行选项和应用配置有关的信息。 |