locked
SSIS パッケージファイルを開くと暗黙的に SSDT の既定のTargetServerVersion へアップグレードされる現象について RRS feed

  • Question

  • 今回は、SSIS パッケージの開発ツール (SQL Server Data Tools、以降 SSDT) で、SSIS パッケージ(*.dtsx)を単体で開くと SSDT の既定の TargetServerVersion へ暗黙的にアップグレードされる現象を紹介します。

    SSIS パッケージの移行(アップグレード)を実施する際に遭遇する可能性がありますので、このような現象に遭遇した場合には、後に紹介する手順をご確認ください。

    ====================================

    1. 現象

    ====================================

    ここでは SSIS パッケージをSQL Server 2012環境からSQL Server 2017 環境へ移行(アップグレード)するケースを想定しています。

    この場合、SQL Server 2012 で動作していた SSIS パッケージを SSDT にて開き、TargetServerVersionを移行先となる SQL Server 2017 へ設定することで、SQL Server 2017 環境で動作するSSIS パッケージへアップグレードできます。

    しかしながら、下記のように SSIS パッケージファイルを開くと、異なる TargetServerVersion としてSSIS パッケージが更新される場合があります。

    ■現象の再現

    1)移行先環境にて SSDT を起動します。

    2)ファイル – 開く – ファイル にて、対象の SSIS パッケージ(*.dtsx)を選択します。

    3)パッケージがアップグレードされた旨のメッセージが表示されます。

    4)SSIS パッケージを保存します。

    5)dtexec.exe コマンドで SSIS パッケージを実行するとエラーが発生します。

    実行コマンド:Dtexec /f Package.dtsx


    ■原因

    SSDTではバージョンによって既定の TargetServerVersion が異なり、例えば、SSDT for Visual Studio 2017 15.8.2 以降では既定の TargetServerVersion SQL Server 2019 となります。

    今回の例では、SSDT for Visual Studio 2017 15.8.2 以降を使用しているため、上述のように SSIS パッケージをファイル単体で開くと、SQL Server 2019 TargetServerVersion としてアップグレードされています。

    このため、SQL Server 2019 より下位のバージョンの dtexec にてパッケージを実行すると、SQL Server 2019 にて読み込み可能な形式のパッケージを、下位のバージョンの dtexec で読み込むことになり、互換性の無いコンポーネントがある場合には読み込むことができず、パッケージの実行に失敗します。

    Dtexec コマンドのパスを確認する場合、「where dtexec」を実行することで確認できます。

    下記の場合、最上位に表示されている「C:\Program Files (x86)\Microsoft SQL Server\130\DTS\Binn\DTExec.exe」のパスとなるため、SQL Server 2016 dtexec が実行されます。


    ====================================

    2. SSIS パッケージの移行(アップグレード)手順

    ====================================

    SSIS パッケージを移行(アップグレード) する手順をご紹介します。

    ASSIS パッケージが含まれるSSIS プロジェクトを開き、TargetServerVersion を変更する

    BTargetServerVersion を設定したSSIS プロジェクトを新規に作成し、対象のSSIS パッケージファイルをインポートする

    詳細な手順は次の通りです。

    //// ASSIS パッケージが含まれるSSIS プロジェクトを開き、TargetServerVersion を変更する ////

    1)SSDT にて、ファイル – 開く – プロジェクト/ソリューション を選択し、SSIS パッケージが含まれるソリューションファイル(*.sln) を選択します。

    2)ソリューションエクスプローラーにて、プロジェクト名 右クリック – プロパティ を選択します。

    3)構成プロパティ - 配置ターゲットバージョン – TargetServerVersion を、対象のバージョンに設定し、OK を選択します。

    4)SSIS パッケージを保存します。

    //// BTargetServerVersion を設定したSSIS プロジェクトを新規に作成し、対象のSSIS パッケージファイルをインポートする ////

    1)SSDT にて、新規作成 – プロジェクト を選択し、新しいプロジェクトにて Integration Services Project を選択し、SSIS プロジェクトを作成します。

    2)ソリューションエクスプローラーにて、プロジェクト名 右クリック – プロパティ - 構成プロパティ - 配置ターゲットバージョン – TargetServerVersion を、対象のバージョンに設定し、OK を選択します。

    3)ソリューションエクスプローラーにて、SSIS パッケージ 右クリック - 既存のパッケージを追加 を選択し、対象のSSIS パッケージファイル(*.dtsx)を選択します。

    4)パッケージがアップグレードされた旨のメッセージが出力されます。

    5)SSIS パッケージを保存します。


    <参考情報>

    SQL Server Data Tools

    https://docs.microsoft.com/ja-jp/sql/ssdt/sql-server-data-tools?view=sql-server-ver15

    Integration Services パッケージのアップグレード

    https://docs.microsoft.com/ja-jp/sql/integration-services/install-windows/upgrade-integration-services-packages?view=sql-server-ver15#selecting-an-upgrade-method







    Wednesday, February 5, 2020 5:36 AM
    Owner