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 2008 バージョンのカスタム オブジェクトを使用するコンピュータ上で、SQL Server 2005 バージョンのカスタム オブジェクトを使用することはできません。 |
カスタム オブジェクトのアップグレードおよびバージョン再設定 |
アップグレードされたオブジェクトと共に配布するマッピング ファイルを作成する必要があります。マッピング ファイルがないと、パッケージ アップグレード エンジンによって、カスタム オブジェクトを含むパッケージが正常にアップグレードされません。 |
同一のコンピュータにおいて、SQL Server 2005 パッケージで SQL Server 2005 バージョンのカスタム オブジェクトを使用し、同時に SQL Server 2008 パッケージで SQL Server 2008 バージョンのカスタム オブジェクトを使用することができます。 |
カスタム オブジェクトのアップグレード
次に、カスタム オブジェクトをアップグレードして、SQL Server 2008Integration Services との互換性を持つようにする方法の手順を示します。
カスタム オブジェクトを更新するには
バージョン 9.0 の Integration Services アセンブリへの参照を削除して、同じアセンブリのバージョン 10.0 への参照で置き換えます。
コード内の IDTSxxx90 オブジェクトの名前を、対応する IDTSxxx100 オブジェクトに変更します。
互換性のために残されているコード メンバや非推奨のコード メンバについての警告を検索して、それらを対応する新しいメンバに置き換えます。
カスタム オブジェクトをアップグレードした後、これらのオブジェクトのバージョンを再設定することもできます。アップグレードされたカスタム オブジェクトのバージョンを再設定することは必須ではありません。カスタム オブジェクトのバージョンを再設定しない場合、このトピックの後の方で説明する方法に従って、アップグレードされたカスタム オブジェクトを配置する必要があります。
ただし、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> 要素の作成
上記のサンプルのマッピング ファイルに示されているように、<ExtensionMapping> 要素を使用して、SQL Server 2005Integration Services オブジェクトを対応する新しい SQL Server 2008Integration Services オブジェクトにマッピングします。新しく <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\90\DTS フォルダの下ではなく、%ProgramFiles%\Microsoft SQL Server\100\DTS フォルダの下のサブフォルダにコピーすることだけです。
カスタム オブジェクトのバージョンを再設定する場合は、UpgradeMappings フォルダにマッピング ファイルを配置して、バージョンが再設定されたこれらのオブジェクトを使用するパッケージの自動アップグレードがサポートされるようにしてください。
|