升级自定义对象至 SQL Server 2008 Integration Services

SQL Server 2008 中有一些新的 Integration Services 功能,它们产生的重大变化会影响在 SQL Server 2005Integration Services 中生成的自定义对象。如果要在 SQL Server 2008Integration Services 包中使用这些自定义对象,您必须升级这些对象。

本主题介绍如何确定自定义对象的最佳升级选择,以及如何将这些对象从 SQL Server 2005Integration Services 升级并部署到 SQL Server 2008Integration Services。本主题还介绍如何确保在包的自动升级期间能够找到您的已升级自定义对象。

确定如何升级自定义对象

您可以选择只是升级自定义对象,还是升级自定义对象并重新确定其版本:

  • 仅升级。 在此选择下,您将更改自定义对象,以使它们与 SQL Server 2008Integration Services 兼容。

  • 升级并重新确定版本。 在此选择下,您首先升级自定义对象。然后,向升级后的对象分配一个新的程序集版本,并创建一个标识这些新对象的位置的映射文件。

无论选择哪种升级方案,您都必须在您或您对象的用户尝试升级包含这些对象的包之前升级您的自定义对象。当包升级引擎尝试升级包时,它会尝试实例化这些包中的自定义对象。如果计算机中没有这些自定义对象的已升级版本,则包升级引擎将无法实例化这些对象。由于无法实例化这些对象,包升级引擎将无法升级包。

注意注意

当您打开单个 SQL Server 2005 包时,SQL Server 2008 版本的 BI Development Studio 会自动启动包升级引擎。当您升级一批包时,包升级向导也会使用同一包升级引擎。

为了帮助您确定是仅升级,还是升级并重新确定版本,下表给出了要考虑的各项因素。

选项

对包升级的影响

对并行存在的影响

仅升级自定义对象

您无需完成任何其他操作步骤。包升级引擎可成功升级包含自定义对象的包。

您在特定计算机上仅可使用自定义对象的 SQL Server 2008 版本或 SQL Server 2005 版本之一。您不能在同一台计算机上同时使用自定义对象的 SQL Server 2005 版本和 SQL Server 2008 版本。

升级自定义对象并重新确定其版本

您必须创建一个映射文件与升级后的对象一起分发。否则,包升级引擎无法成功升级包含自定义对象的包。

您可以在同一台计算机上,在 SQL Server 2005 包中使用自定义对象的 SQL Server 2005 版本,同时在 SQL Server 2008 包中使用自定义对象的 SQL Server 2008 版本。

升级自定义对象

下面的过程概述了如何升级自定义对象,以使它们与 SQL Server 2008Integration Services 兼容。

升级自定义对象

  1. 删除对 9.0 版 Integration Services 程序集的引用,替换为对相同程序集的 10.0 版的引用。

  2. 将代码中的 IDTSxxx90 对象重命名为等价的 IDTSxxx100 对象。

  3. 查找有关已过时或不推荐使用的代码成员的警告,将它们替换为等价的新成员。

自定义对象升级完毕后,您可以选择是否还要重新确定这些对象的版本。不要求必须重新确定已升级自定义对象的版本。如果您决定不重新确定自定义对象的版本,则接下来您需要按照本主题中后面部分所述,部署已升级的自定义对象。

但是,如果您希望在 SQL Server 2005Integration Services 包和 SQL Server 2008Integration Services 包中并行使用自定义对象的不同版本,则需要按照下一部分中所述,重新确定已升级对象的版本。

重新确定自定义对象的版本

重新确定自定义对象版本的方式取决于您是以托管代码还是以本机代码编写这些对象的。

  • 托管代码。对于以托管代码编写的自定义对象,重新确定版本意味着递增程序集版本号。

  • 本机代码。对于以本机代码编写的自定义对象,重新确定版本意味着更改 ProgID 和 CLSID。

重新确定自定义对象的版本后,您还必须提供这些对象的升级映射文件。在包升级的过程中,这些映射文件会告知包升级引擎如何用新版本替换自定义对象的先前版本。

映射自定义对象的版本以进行升级

SQL Server 2008Integration Services 在 %ProgramFiles%\Microsoft SQL Server\100\DTS 文件夹下增加了一个新的子文件夹:UpgradeMappings。此子文件夹是您部署可告知包升级引擎如何将 SQL Server 2005Integration Services 对象映射到其新 SQL Server 2008 等价对象的映射文件的位置。

将映射文件部署到 UpgradeMappings 子文件夹后,Integration Services 就可以升级包含自定义对象的包了。映射文件仅在包升级期间是必需的。升级完所有包后,您可以删除映射文件。有关详细信息,请参阅升级 Integration Services 包

所有映射文件都必须为 XML 格式,如下面的示例映射文件中所示。

注意注意

映射文件的文件扩展名必须为“.xml”,否则,包升级引擎将无法发现这些文件。

示例映射文件

<?xml version="1.0" encoding="utf-8"?>
<Mappings xmlns="https://www.microsoft.com/SqlServer/Dts/UpgradeMapping.xsd">
  <!-- Connection Managers -->
  <ConnectionManagerMapping tag="MSOLAP - Analysis Services connections" 
                            oldValue="MSOLAP90"
                            newValue="MSOLAP100" />
  
  <!-- Extensions -->
  <ExtensionMapping tag="my custom object"
      oldAssemblyStrongName="MyCustomAssembly.MyCustomTask, MyCustomAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"
      newAssemblyStrongName="MyCustomAssembly.MyCustomTask, MyCustomAssembly, Version=2.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />

  <!-- Providers -->
  <ProviderMapping tag="SQL Server Native Client - Version dependent" 
                   oldValue="sqlncli.1"
                   newValue="sqlncli10.1" />
  <ProviderMapping tag="SQL Server Native Client - Version independent"
                   oldValue="sqlncli"
                   newValue="sqlncli10" />
  <ProviderMapping tag="MSOLAP - Analysis Services connections"
                   oldValue="msolap.3"
                   newValue="msolap.4" />
</Mappings>

创建您自己的 <ExtensionMapping> 元素

如上面的示例映射文件中所示,将 SQL Server 2005Integration Services 对象映射到其新的 SQL Server 2008Integration Services 等价对象的元素是 <ExtensionMapping> 元素。创建新的 <ExtensionMapping> 元素后,还必须为下表中的属性提供值。

属性

说明

tag

描述您的自定义对象的文本。(此描述用于日志记录。)

oldAssemblyStrongName

自定义对象的程序集在 SQL Server 2005Integration Services 中的强名称。

newAssemblyStrongName

自定义对象的程序集在 SQL Server 2008Integration Services 中的强名称。

映射程序集时,您有下列选择:

  • 您可以使用完全限定的类名:<程序集名称>.<类名>, <程序集名称>, Version=<版本>, Culture=<区域性>, PublicKeyToken=<密钥>。本主题前面的示例映射文件中使用的就是这种格式。

  • 您可以提供程序集自身的强名称,而不提供类名,如下面的示例中所示:

    <ExtensionMapping tag="my custom object"
        oldAssemblyStrongName="MyCustomAssembly, 
    Version=1.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"
        newAssemblyStrongName="MyCustomAssembly,
    Version=2.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    

    如果您提供程序集自身的强名称,则旧程序集的所有类都会映射到新程序集。

部署已升级的自定义对象

部署已升级的自定义对象的步骤与部署 SQL Server 2005 的自定义对象的步骤类似。唯一的区别是,您现在要将自定义程序集复制到 %ProgramFiles%\Microsoft SQL Server\100\DTS 文件夹下的一个子文件夹,而不是 %ProgramFiles%\Microsoft SQL Server\90\DTS 文件夹。

如果您重新确定了自定义对象的版本,请务必将其映射文件部署到 UpgradeMappings 文件夹,以支持自动升级使用了这些重新确定了版本的对象的包。

Integration Services 图标(小) 使 Integration Services 保持最新

若要从 Microsoft 获得最新的下载内容、文章、示例和视频,以及从社区获得所选解决方案,请访问 MSDN 或 TechNet 上的 Integration Services 页:

若要获得有关这些更新的自动通知,请订阅该页上提供的 RSS 源。