Visual Studio 2022でSSISターゲットサーバーバージョンにSQL Server 2016が表示されない場合の対処法

Visual Studio 2022 に乗り換えた途端、SSIS プロジェクトの「ターゲット サーバー バージョン」から SQL Server 2016 が消えてしまい、2017 / 2019 / 2022 しか選べない──そんな状況で止まってしまった方向けに、原因の整理から VS2022 の設定変更、VS2019 併用パターンまでをまとめて解説します。

目次

VS2022でSSISターゲットに「SQL Server 2016」が出ない理由

まず現象を整理します。

  • Visual Studio 2022 に「SQL Server Integration Services Projects 2022」拡張を入れた
  • 既存の SSIS プロジェクトを開いたら、プロジェクトのプロパティで選べるターゲットが
    • SQL Server 2017
    • SQL Server 2019
    • SQL Server 2022
    のみで、SQL Server 2016 が表示されない

これは珍しいトラブルではなく、主に次の要因が絡んでいます。

  • VS2022 用 SSIS 拡張のバージョン差
    • 初期の 0.x ~ 1.1 までは、2016 がサポートされておらず 2017 以降のみ
    • バージョン 1.2(2023/9/12 リリース)以降で SQL Server 2016 をターゲットとしてサポート
    • 2025 年時点では 1.6 系や 2.0 Preview など複数系統が並存し、
      Preview 2.0 では逆に「2017~2025 のみ」という制限もある
  • Microsoft の公式スタンスが世代ごとに変遷している
    • 元々は「SQL Server 2016 をターゲットにするなら SSDT for VS2015 を使う」とされていた
    • 後に VS2019 の SSIS 拡張で 2012~2022 までを広くカバー
    • VS2022 の SSIS 拡張は後追いで実装され、2016 サポートが途中から追加された

このため、

  • VS2022 の SSIS 拡張が「古すぎる」または「2.0 Preview など別系統」である
  • そもそも 2016 をサポートしない版を使っている

といった状況だと、プロパティ画面に「SQL Server 2016」が出てきません。

結論:方針のざっくり整理

先に、最終的な選択肢を整理しておきます。

やりたいことおすすめ環境ポイント
SQL Server 2016 互換の SSIS パッケージを VS2022 で編集したいVS2022 + SSIS 拡張 1.2〜1.6 系プロジェクトプロパティの「Deployment Target Version」で 2016 を選択
確実に 2016 をターゲットにして開発・ビルドしたいVS2019 + SSIS Projects 拡張2012~2022 まで対応、2016 含めバリエーションが安定
古い運用環境にきっちり合わせたいSSDT for VS2015Microsoft 公式が「2016 ターゲットなら VS2015 SSDT」と明記していた世代
すでに VS2022 と VS2019 を混在させているVS2022:他開発 / VS2019:SSIS 2016 用Visual Studio は複数バージョン共存がサポートされており、コミュニティでも一般的

最も安全で現実的な選択肢は「VS2019 で SSIS 2016 を扱う」ことです。そのうえで、環境によっては VS2022 のみで完結できるケースもある、という位置付けで考えると整理しやすくなります。

前提知識:ターゲットサーバーバージョンと互換レベル

次に、そもそも「ターゲット サーバー バージョン」とは何か、ざっくり整理しておきます。

  • SSIS プロジェクトには TargetServerVersion / Deployment Target Version というプロパティがある
  • ここで指定したバージョンに合わせて、
    • 利用できるコンポーネント
    • パッケージファイルのフォーマット
    • サーバー側 SSIS カタログの互換レベル
    が決まる
  • TargetServerVersion が 実際の SSIS サーバーより新しいと、基本的にはデプロイできない / サポート外になる
  • 逆に、古いターゲットのパッケージを新しい SQL Server で動かすのは公式にも想定されている(SQL Server 2019 の dtexec で旧バージョンのパッケージを実行するなど)

よく使うバージョンを表にしておきます。

SQL Server バージョンSSIS 互換レベルTargetServerVersion の例開発用 VS / SSDT の代表例
SQL Server 2012110SQL Server 2012SSDT for VS2015 / VS2012 世代
SQL Server 2014120SQL Server 2014SSDT for VS2015
SQL Server 2016130SQL Server 2016SSDT for VS2015 / VS2019 SSIS Projects / VS2022 SSIS Projects (一部バージョン)
SQL Server 2017140SQL Server 2017VS2017 / VS2019 / VS2022 の SSIS 拡張
SQL Server 2019150SQL Server 2019VS2019 / VS2022 の SSIS 拡張
SQL Server 2022160SQL Server 2022VS2019 / VS2022 の SSIS 拡張

大事なのは、SQL Server 2016 サーバーにデプロイするなら TargetServerVersion は必ず「SQL Server 2016」に揃える、という点です。2017 以上を選んだまま 2016 環境にデプロイするのはサポートされず、エラーになる可能性が高いです。

VS2022で「2016が出る環境」と「出ない環境」

2016が出るパターン:SSIS Projects 2022 バージョン 1.2〜1.6 系

VS2022 にインストールされる拡張「SQL Server Integration Services Projects 2022」は、バージョンによって対応ターゲットが変わります。

  • バージョン 1.2(2023/9/12 リリース) で「SQL Server 2016 がターゲットサーバーバージョンとしてサポートされた」
  • 以降の 1.3~1.6.2 でもこのサポートは継続しています

この系統の拡張が入っていれば、プロジェクトのプロパティ画面の「Deployment Target Version」または「TargetServerVersion」で SQL Server 2016 を選択できるはずです。

2016が出ないパターン:古い版または 2.0 Preview

次のようなケースでは「SQL Server 2016」が一覧に出ません。

  • 0.1~1.1 など古い版
    • この頃は「2019 / 2022 だけ」「2017 / 2019 / 2022 だけ」といったサポート状況でした
    • そのため、ターゲットに 2016 は選べません
  • 2.0 Preview 系列
    • 2025 年時点の 2.0 Preview では、「ターゲットサーバーバージョンは 2017~2025 をサポート」と記載されており 2016 は含まれていません
    • 最新機能や SQL Server 2025 を使いたい方向けの Preview なので、2016 向けには不向きです

つまり、

  • VS2022 で 2016 をターゲットにしたい → 1.2~1.6 系を使う
  • Preview 2.0 などに上げてしまった → 2016 のサポートが外れている可能性がある

という構図になっています。

まず確認すべきこと:SSIS拡張のバージョンチェック

最初に、今入っている VS2022 の SSIS 拡張バージョンを確認しましょう。

  1. Visual Studio 2022 を起動
  2. メニューから [拡張機能]→[拡張機能の管理] を開く
  3. インストール済みタブで 「SQL Server Integration Services Projects 2022」 を探す
  4. 選択すると、右ペインにバージョン(例:1.6.2 など)が表示される

ここで、

  • バージョン 1.2 以上かどうか
  • 2.0 Preview ではないか

を確認し、必要に応じて以下のいずれかを行います。

  • 古い版(1.1 以下)の場合: Marketplace から最新版 1.x 系に更新する
  • 2.0 Preview の場合: 2016 をターゲットにしたい間は、安定版 1.x 系に戻すことを検討する

SSIS 用拡張は公式 Marketplace からダウンロード可能で、Release Notes には各バージョンの対応ターゲットが明記されています。

SQL Server 2016が選べる場合:VS2022での具体的な設定手順

拡張のバージョンを確認し、2016 をサポートする版(1.2〜1.6 系)であれば、以下の手順でプロジェクトを 2016 ターゲットに変更できます。

  1. Visual Studio 2022 で SSIS ソリューションを開く
  2. 右側の [ソリューション エクスプローラー] で対象のSSIS プロジェクト(最上位のノード)を右クリック
  3. [プロパティ] を選択
  4. 左ペインで [構成プロパティ]→[全般] を選択
  5. 右側の [Deployment Target Version](または[TargetServerVersion]) を開き、「SQL Server 2016」 を選択
  6. [OK]で保存
  7. プロジェクトをビルドして、.ispac を生成し、SQL Server 2016 の SSIS カタログにデプロイ

これは Microsoft Q&A の回答でも案内されている手順と同じで、プロジェクト単位でターゲットを明示的に切り替えるのがポイントです。

注意したい点:

  • プロジェクト単位の設定であり、パッケージ単位ではありません
    • 同一プロジェクト内のすべての .dtsx が同じターゲットを共有します
  • すでに 2017/2019 向けのコンポーネントを使っている場合、それらが 2016 ターゲットに対応していなければエラーになることがあります
  • 2016 ターゲットに下げたあとに保存すると、2017 以上でしか使えない機能は失われる可能性があります(元に戻せないケースもある)

SQL Server 2016が表示されない場合:VS2019併用戦略

どう頑張っても VS2022 のプロジェクトプロパティに 2016 が出てこない場合、あるいは 2.0 Preview を使いたいなどの事情で 2016 サポートが外れている場合は、VS2019 の併用を検討します。

なぜVS2019なのか

VS2019 用の「SQL Server Integration Services Projects」拡張は、次のように案内されています。

  • 現在サポートされるターゲットサーバーバージョンは SQL Server 2012~2022 と説明されており、2016 を含む広いバージョンをカバーしています

つまり、

  • SQL Server 2016 をターゲットにしたい場合
  • 安定したツールチェーンで運用したい場合

には VS2019 が最も扱いやすい選択肢になります。

VS2019併用の基本パターン

現場でよく使われる運用パターンは次のような形です。

  • VS2022:C# / Web アプリ / その他最新プロジェクトのメイン開発
  • VS2019:SSIS(特に SQL Server 2016 向け)の専用 IDE

Visual Studio は複数バージョンを同じマシンに共存させることが公式にサポートされており、コミュニティでも「古い SSIS 用に VS2019 を一緒に入れる」という運用は一般的です。

VS2019でSSIS 2016プロジェクトを開く手順

  1. VS2019 と「SQL Server Integration Services Projects」拡張をインストール
  2. VS2019 を起動し、[ファイル]→[開く]→[プロジェクト/ソリューション] から SSIS ソリューション(.sln)を開く
  3. ソリューションエクスプローラーで SSIS プロジェクトを右クリック→[プロパティ]
  4. [構成プロパティ]→[全般]の TargetServerVersion で SQL Server 2016 を選択
  5. ビルドし、生成された .ispac を SQL Server 2016 の SSISDB にデプロイ

このように、ビルドとデプロイは VS2019 側で完結させることで、VS2022 の制約に引きずられずに 2016 向けパッケージを安全に運用できます。

「VS2022だけで何とかしたい」場合の現実的な線引き

とはいえ、開発ルール上 VS2019 を追加しづらいケースもあります。その場合に VS2022 だけでどこまでやれるか、現実的なラインを整理しておきます。

VS2022で2017ターゲットのまま2016サーバーにデプロイしてよい?

結論から言うと、おすすめできません。

  • ターゲットサーバーバージョンは「プロジェクトが想定する最低サーバーバージョン」を意味します
  • 2017 ターゲットのパッケージを 2016 サーバーに持っていくと、
    • デプロイ時にバージョン不一致エラー
    • 運よくデプロイできても、実行時に予期せぬ不具合
    を招く可能性があります
  • Azure-SSIS IR などでも「ターゲットバージョンが IR の対応バージョンより新しいとデプロイが拒否される」例があり、基本思想は同じです

SSIS はフル互換の保証が強いとは言い難いため、サーバーバージョンと TargetServerVersion は必ず一致させるのが無難です。

VS2022で2016ターゲットを維持するためのチェックリスト

VS2022 だけで運用したい場合は、次のポイントを意識するとトラブルを減らせます。

  • SSIS 拡張の系統を 1.x 系に固定する
    • Preview 2.0 系は 2016 をサポートしないため、SQL Server 2016 が残っている間は採用しない
  • Solution 単位で「2016 専用」「2019/2022 専用」を分ける
    • 誤って 2016 向けプロジェクトのターゲットを上げてしまう事故を防ぐ
  • 新しいコンポーネントや機能を導入するときは、
    • それが「2016 ターゲットでもサポートされているか」を必ず確認する

開発・運用のベストプラクティス

ここまでの話を踏まえつつ、SQL Server 2016 向け SSIS プロジェクトを長期運用する際のコツをいくつか挙げておきます。

1. プロジェクト命名でターゲットを明示する

プロジェクト名やソリューション名に _SQL2016 / _SQL2019 などのサフィックスを付けるだけでも、ターゲットの取り違えを防ぎやすくなります。

  • 例:DataWarehouse_ETL_SQL2016
  • 例:BatchJobs_SQL2019

VS 上でプロジェクトを右クリックしたときにも名前が目に入るので、誤操作防止に案外効きます。

2. 「古いターゲット専用」のブランチを分ける

Git 等を使っている場合、

  • main:最新環境(SQL Server 2019/2022)向け
  • maintenance/sql2016:SQL Server 2016 向け保守ブランチ

のように分けておくと、

  • main 側で新機能を試す
  • 古いバージョンのバグ対応は maintenance ブランチで行う

といった運用がしやすくなります。ブランチ間でのマージ時には、ターゲットサーバーバージョンの差分に注意しましょう。

3. 複数環境にデプロイする場合は「最小公倍数」を意識する

同じ SSIS プロジェクトを複数バージョンの SQL Server にデプロイしたい場合、

  • 最も古いバージョン(例:SQL Server 2016)に合わせてターゲットを 2016 に固定
  • 新しいサーバー(2019/2022)側では「旧バージョンパッケージを動かす」前提で運用

とするのが基本です。SQL Server 2019 は旧バージョンで作られたパッケージを実行できるよう設計されていますが、逆方向(新しいターゲットを古いサーバーで動かす)はサポートされません。

4. コネクタやカスタムコンポーネントの対応バージョンに注意

Oracle / Teradata などのコネクタは、ターゲット SQL Server に応じたバージョンを選ぶ必要があります。

  • Attunity ベースのコネクタは、SQL Server 2012/2014/2016/2017 用に別々のパッケージが存在します
  • ターゲットサーバーバージョンと異なるコネクタを混在させないよう注意します

SSIS プロジェクトのターゲットを 2016 にするなら、コネクタ側も 2016 向けのバージョンを使う必要があります。

よくある質問と落とし穴

Q. VS2022 で既存プロジェクトを開いたら自動アップグレードされそうで怖い

VS2022 で旧バージョンの SSIS プロジェクトを開くとき、アップグレードダイアログが出ることがあります。

  • SQL Server 2016 向けのプロジェクトを維持したい場合は、
    • VS2022 ではなるべく開かず、VS2019 で作業する
    • どうしても開く必要があるなら、事前にソース管理でブランチを切っておく

一度新しいターゲットにアップグレードして保存してしまうと、完全には元に戻せないケースもあるので注意が必要です。

Q. VS2015 SSDT を使うべき場面はまだある?

公式ドキュメントでは、「SQL Server 2016 / 2014 / 2012 をターゲットにするには SSDT for VS2015 を使う」と記載されていました。ただし現在は、

  • 古い環境で VS2015 が既に標準ツールになっている
  • VS2019 や VS2022 への移行が組織的に制限されている

といったケースを除き、新しく VS2015 を導入するメリットはあまり大きくありません

  • 現在の主流は VS2019 + SSIS Projects 拡張
  • VS2022 で 2016 ターゲットを扱う場合は、拡張バージョンの見極めがポイント

Q. VS2022/VS2019/VS2015 を全部入れても大丈夫?

マシンパワーさえ許せば、複数の Visual Studio バージョンを同居させても問題ありません。

  • IDE ごとに別ディレクトリにインストールされます
  • それぞれに対応する SSIS 拡張を入れれば、プロジェクトを用途に応じて開き分けできます

ただし、

  • 「どの .sln をどの IDE で開くか」をチーム内でルール化しておく
  • 誤って VS2022 で 2016 用プロジェクトをアップグレードしてしまわないよう、命名規則やドキュメントで明示する

といった運用面での工夫は必要です。

まとめ:SQL Server 2016向けSSISは「どのIDEで扱うか」をまず決める

この記事のポイントを最後に整理します。

  • VS2022 で SSIS プロジェクトのターゲットサーバーバージョンに SQL Server 2016 が出ない原因は、主に
    • SSIS 拡張のバージョンが古い(1.1 以下)
    • 2.0 Preview 系など、2016 をサポートしない版を使っている
  • VS2022 の SSIS 拡張 1.2〜1.6 系 なら、プロジェクトプロパティで 「Deployment Target Version = SQL Server 2016」 を選択可能
  • それでも 2016 が選べない / 安定運用を優先したいなら、VS2019 + SSIS Projects 拡張で 2012~2022 までを一括管理するのが現実的
  • ターゲットサーバーバージョンは必ず 実環境の SSIS バージョン(ここでは 2016)に合わせる
    • 新しいターゲットを古いサーバーで動かすのはサポート外
    • 古いターゲットを新しいサーバーで動かすのは比較的安全
  • プロジェクト命名、ブランチ分け、VS バージョンの役割分担など、運用ルールの整備が長期的なトラブル回避のカギ

「VS2022 に上げたら 2016 が選べなくなって詰んだ…」という状況でも、拡張バージョンの見直しや VS2019 併用でほとんどのケースは解決できます。まずは SSIS 拡張のバージョンを確認し、「どの IDE を 2016 用として使うか」をチーム内で決めるところから始めてみてください。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次