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
これは珍しいトラブルではなく、主に次の要因が絡んでいます。
- 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 VS2015 | Microsoft 公式が「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 2012 | 110 | SQL Server 2012 | SSDT for VS2015 / VS2012 世代 |
| SQL Server 2014 | 120 | SQL Server 2014 | SSDT for VS2015 |
| SQL Server 2016 | 130 | SQL Server 2016 | SSDT for VS2015 / VS2019 SSIS Projects / VS2022 SSIS Projects (一部バージョン) |
| SQL Server 2017 | 140 | SQL Server 2017 | VS2017 / VS2019 / VS2022 の SSIS 拡張 |
| SQL Server 2019 | 150 | SQL Server 2019 | VS2019 / VS2022 の SSIS 拡張 |
| SQL Server 2022 | 160 | SQL Server 2022 | VS2019 / 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 拡張バージョンを確認しましょう。
- Visual Studio 2022 を起動
- メニューから [拡張機能]→[拡張機能の管理] を開く
- インストール済みタブで 「SQL Server Integration Services Projects 2022」 を探す
- 選択すると、右ペインにバージョン(例: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 ターゲットに変更できます。
- Visual Studio 2022 で SSIS ソリューションを開く
- 右側の [ソリューション エクスプローラー] で対象のSSIS プロジェクト(最上位のノード)を右クリック
- [プロパティ] を選択
- 左ペインで [構成プロパティ]→[全般] を選択
- 右側の [Deployment Target Version](または[TargetServerVersion]) を開き、「SQL Server 2016」 を選択
- [OK]で保存
- プロジェクトをビルドして、.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プロジェクトを開く手順
- VS2019 と「SQL Server Integration Services Projects」拡張をインストール
- VS2019 を起動し、[ファイル]→[開く]→[プロジェクト/ソリューション] から SSIS ソリューション(.sln)を開く
- ソリューションエクスプローラーで SSIS プロジェクトを右クリック→[プロパティ]
- [構成プロパティ]→[全般]の TargetServerVersion で SQL Server 2016 を選択
- ビルドし、生成された .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 用として使うか」をチーム内で決めるところから始めてみてください。

コメント