日程Fit|「いつ空いてますか?」の往復はもう不要。候補日を選んでURLを送るだけ|登録不要|今すぐ無料で使う →

Visual Studio 2022でSDKスタイル.sqlprojがSQL Server Object Explorerに表示されない原因と対処法

Visual Studio 2022 で SQL Database Project を SDK スタイルに移行したら、「SQL Server Object Explorer」にプロジェクトが一切出てこない…。そのままだと開発体験がガタッと落ちてしまいます。本記事では、なぜ表示されないのかという技術的な理由と、開発・CI/CD を止めずに続けるための現実的なワークフロー、そして SSOX をどうしても使いたい場合の落としどころまで、まとめて整理します。

日程Fit。無料・登録不要。「いつ空いてる?」を、ひとつのリンクで。リンクを送って、○△×でかんたん日程調整。無料で日程を作る。
目次

VS 2022 の SDK スタイル .sqlproj が SQL Server Object Explorer に表示されない理由

結論から言うと、これは「不具合」ではなく 仕様に近い既知の制限 です。

現在の SQL Database Projects の世界には、ざっくりと次の 2 つのプロジェクト形式が存在します。

  • 従来形式(クラシック): MSBuild(.NET Framework)ベースの .sqlproj
  • SDK スタイル: Microsoft.Build.Sql を使った新しい .NET SDK スタイルの .sqlproj

Microsoft は新しい開発では SDK スタイル(Microsoft.Build.Sql)を推奨しており、クロスプラットフォームな dotnet build で .dacpac を生成できる点などが大きなメリットです。

一方で、Visual Studio の SQL Server Object Explorer (SSOX) はもともと「クラシック形式の SQL プロジェクト」と「ライブなデータベース」を対象に設計されており、SDK スタイルの SQL プロジェクトは認識しません。

Microsoft Q&A でも、Microsoft スタッフから次のように明言されています。

  • Visual Studio 2022 の SSOX は SDK スタイル .sqlproj をサポートしていない
  • 「SQL Server Object Explorer (Preview)」という名前でも、実際には ライブ DB を閲覧するためのパネル であり、SDK スタイル プロジェクトは扱えない

つまり、「プロジェクトが見えない」のは、現時点の仕様どおりの挙動です。

クラシック形式 .sqlproj と SDK スタイル .sqlproj の違い

項目クラシック .sqlprojSDK スタイル .sqlproj
プロジェクト形式MSBuild (.NET Framework) ベース.NET SDK スタイル(Microsoft.Build.Sql)
対象ランタイムWindows + .NET Framework 前提.NET 8 などクロスプラットフォーム対応
ビルド方法Visual Studio / MSBuilddotnet build(CLI)、VS Code / ADS / VS2022 (SDK-style SSDT プレビュー)
ビルド成果物.dacpac.dacpac(同一フォーマットで SqlPackage から利用可能)
SSOX からの操作プロジェクトを表示・発行・比較などが可能SSOX からは 一切見えない
主な用途既存資産、Windows 限定の開発Azure DevOps / GitHub Actions を含むクラウド CI/CD、Linux ビルドなど

質問へのショートアンサー

質問答えポイント
1. 既知のバグ?いいえ。Visual Studio 2022 の仕様による制限。SSOX はクラシック形式のみ対応。SDK スタイルは対象外。
2. 開発時に SSOX 相当の操作は?CLI と VS Code / Azure Data Studio などで代替可能。スキーマ比較・発行・データ確認は他ツールでカバーできる。
3. SSOX を使いたい場合の代替策?クラシック形式を維持/ロールバックするしかない。SDK スタイルとクラシックの「二重運用」はコスト高なので慎重に。

質問 1: これは既知のバグか?

改めて整理すると、以下の 2 点が公式情報から読み取れます。

  • SSOX は、クラシック形式の SQL プロジェクトと、接続済みデータベースを扱うための UI
  • SDK スタイル プロジェクトは、Solution Explorer と CLI をメインに使うことを想定した新世代の仕組み

Microsoft Q&A では、Microsoft のスタッフが次のような趣旨の回答をしています。

  • SSOX / 「SQL Server Object Explorer (Preview)」は SDK スタイル .sqlproj をサポートしていない
  • SDK スタイル プロジェクトは Solution Explorer と dotnet build / sqlpackage を使うワークフローが前提

したがって、「クラシック形式から SDK スタイルに変換したら SSOX から見えなくなった」は、2025 年 11 月時点では 仕様どおり の動きであり、回避する設定や隠しオプションは存在しません。

質問 2: SSOX 相当の操作を行うにはどうすればよいか

SSOX でやっていたことは、大まかに次の 4 類型に分けられます。

  1. スキーマの編集(テーブル・ビュー・ストアドなど)
  2. ビルド(.dacpac 作成)
  3. 発行(DB へのデプロイ)
  4. スキーマ比較やデータのざっくり確認

これらは別ツールを組み合わせることで、ほぼすべて再現可能です。

基本線: Solution Explorer + CLI(dotnet build / SqlPackage)

SDK スタイル プロジェクトは、「コードとしてのデータベース」 にフォーカスした作りになっています。Visual Studio の Solution Explorer で .sqlproj を開き、ビルドやソース管理を行いつつ、実際のビルド・発行は CLI で統一するのがもっともシンプルです。

.dacpac のビルド

プロジェクト フォルダで次のように実行します。

dotnet build MyDatabaseProject.sqlproj -c Release

ビルドが成功すると、通常は bin/Debug または bin/Release 配下に .dacpac が生成されます。

SqlPackage による発行

.dacpac から DB にデプロイするには、クロスプラットフォーム対応の SqlPackage CLI を使います。

# SqlPackage を .NET ツールとしてインストール
dotnet tool install -g Microsoft.SqlPackage

# .dacpac を指定して発行
sqlpackage /Action:Publish ^
  /SourceFile:bin\Release\MyDatabaseProject.dacpac ^
  /TargetConnectionString:"Server=...;Database=...;User ID=...;Password=..."

この組み合わせなら、Windows だけでなく Linux エージェント上の Azure DevOps パイプラインでも同じコマンドでビルド&デプロイを行えます。

Azure DevOps パイプライン例(YAML イメージ)

イメージとしては次のようなステップ構成になります。

steps:
- task: UseDotNet@2
  inputs:
    packageType: 'sdk'
    version: '8.x'

- script: dotnet build MyDatabaseProject.sqlproj -c Release
  displayName: 'Build dacpac'

- script: |
    dotnet tool install -g Microsoft.SqlPackage
    sqlpackage /Action:Publish `
      /SourceFile:bin\Release\MyDatabaseProject.dacpac `
      /TargetConnectionString:"$(MyDbConnectionString)"
  displayName: 'Publish database'

これにより、Windows エージェントへの依存を完全に排除した DB デプロイ パイプライン を構築できます。

GUI が欲しいとき: VS Code / Azure Data Studio の SQL Database Projects 拡張

「やっぱり GUI でスキーマ比較やオブジェクトの構造を見たい」という場合は、次のどちらか(または両方)の利用が現実的です。

  • Visual Studio Code + SQL Database Projects 拡張
  • Azure Data Studio + SQL Database Projects 拡張

どちらも Microsoft.Build.Sql ベースの SDK スタイル プロジェクトをネイティブにサポートし、次のような機能を提供します。

  • ブランク プロジェクトの作成
  • 既存データベースからのプロジェクト生成
  • テーブル / ビュー / ストアドなどの追加・編集(T-SQL ファイル編集)
  • .dacpac のビルド & デプロイ
  • 接続情報・SQLCMD 変数をプロファイルから読み込み

なお、2026 年 2 月 28 日で Azure Data Studio 自体はリタイア予定となっており、長期的には VS Code への移行が推奨されています。

よくある SSOX 操作と、その代替手段

SSOX でやっていたこと代替ツール / 方法補足
テーブルやビューの定義を確認・編集VS Code / ADS の SQL Database Projects で T-SQL ファイルを編集GUI デザイナではなく「スクリプトで定義する」スタイルにシフトする。
ローカル DB に発行して動作確認dotnet build + sqlpackage /Action:Publish発行プロファイル(publish.xml)を使うと環境ごとの差分を吸収しやすい。
本番 DB とのスキーマ比較ADS の Schema Compare、または .dacpac 同士の比較ツールSDK スタイル プロジェクト向けの GUI 比較は ADS 側が充実している。
DB の中身をざっと見るSSOX から DB に接続(プロジェクトは無視)、または SSMSライブ DB のブラウズ用途としての SSOX はこれまでどおり使える。
クラシック .sqlproj のビルドVisual Studio(従来 SSDT)SDK スタイルとは別物として割り切る(後述)。

質問 3: SSOX を使いたい場合の代替策

それでも「テーブル デザイナを含む SSOX 統合はどうしても欲しい」というケースもあると思います。残念ながら、SDK スタイルのまま SSOX に統合する方法は存在しません

現実的な選択肢は次の 3 つです。

選択肢 1: クラシック形式 .sqlproj にロールバックする

もっともシンプルなのは、変換前のクラシック プロジェクトに戻す方法です。Microsoft の変換ドキュメントでも、変換前に .sqlproj をバックアップしておくこと が推奨されています。

  • SSOX 連携(テーブル デザイナ、スキーマ比較など)をフル活用できる
  • ただし、dotnet build で Linux ビルドはできないため、CI は Windows エージェント依存に戻る

「SSOX が業務上どうしても必須」で「Linux ビルドは nice to have」という環境なら、この割り切りも十分ありです。

選択肢 2: クラシック + SDK スタイルの二重運用

もう一歩踏み込んだやり方として、同じスキーマを

  • SSOX 用のクラシック プロジェクト
  • CI/CD 用の SDK スタイル プロジェクト

の 2 系統で管理する方法もあります。

ただし、この方法は以下のようなデメリットが大きく、かなり慎重な運用が必要です。

  • 同じ変更を 2 つのプロジェクトに反映 する手間が発生する
  • 反映漏れがあると、クラシック版の .dacpac と SDK 版の .dacpac が食い違う
  • 差分を検証するために毎回 .dacpac の比較が必要になる

もし二重運用をするなら、少なくとも次のようなルールを決めておくと破綻しにくくなります。

  • どちらか一方(たとえば SDK スタイル側)を「正」と決める
  • リリース前に .dacpac 同士を比較し、差分がないことを CI でチェックする
  • クラシック プロジェクトで大きなリファクタリングをしない(設計変更は SDK スタイル側で行う)

それでも運用コストは高めなので、「SSOX の GUI がないと仕事にならない」レベルの場合のみ検討する価値がある、くらいのポジションです。

選択肢 3: Visual Studio を 2 インスタンスに分ける

SDK スタイルの SQL プロジェクトは、Visual Studio 2022 の 「SQL Server Data Tools, SDK-style (preview)」コンポーネント として提供されています。Microsoft は、クラシック SSDT と SDK スタイル SSDT を 同じ VS インスタンスに同居させないこと を推奨しており、別インストールに分けることが案内されています。

例えば、次のような構成にすることができます。

  • VS 2022(通常版インストール):クラシック SSDT + SSOX 用
  • VS 2022 Preview(別インスタンス):SDK-style SSDT (Preview) + SDK スタイル .sqlproj 用

これにより、

  • SSOX を使ったクラシック プロジェクト開発は通常版 VS で継続
  • SDK スタイルの試験導入や CLI ベースのパイプライン整備は Preview 側で実施

といった段階的な移行が可能になります。もちろん、プロジェクト自体をクラシック/SDK のどちらで運用するかは別途決める必要がありますが、IDE の環境を分けるだけでもトラブルを減らせる ケースは多いです。

SDK スタイル .sqlproj の現実的なベストプラクティス

ここからは、「SSOX には戻らない」前提で、SDK スタイル プロジェクトを軸にした現代的なワークフロー例をもう少し具体的に見ていきます。

1. プロジェクトの作成・変換

既存のクラシック プロジェクトを SDK スタイルに変換する場合、Microsoft の公式ドキュメントに沿って .sqlproj を書き換えるのが基本です。

手順のポイントだけ抜き出すと次のとおりです。

  1. .sqlproj のバックアップ(例: MyProject.sqlproj.original を作る)
  2. クラシック形式で一度 .dacpac をビルドしておき、変換後と比較できる状態にする
  3. .sqlproj をテキスト編集し、以下のような変更を行う
    • <Sdk Name="Microsoft.Build.Sql" Version="x.y.z" /> を追加
    • 不要になった <Import ... /> の削除
    • <Build Include="***.sql" /> の列挙を削除(SDK スタイルは **/*.sql を自動インクルード)
    • Properties フォルダのエントリ削除 など
  4. dotnet build で .dacpac をビルドし、変換前後の .dacpac を比較

このとき、変換後のプロジェクトは「オリジナル SSDT では開かない」ことに注意が必要です。開発は VS Code / ADS / SDK-style SSDT (Preview) のいずれかで行うことになります。

2. ビルドとテストをすべて dotnet build / CLI に寄せる

SDK スタイルの強みは、ビルド コマンドが IDE 非依存であること です。つまり、開発者ごとに使うツールが違っても(VS / VS Code / ADS)、最終的なビルドは

dotnet build MyDatabaseProject.sqlproj

の一行で済みます。

この考え方に乗ってしまうと、もはや「ビルドのために Visual Studio を開く必要」がなくなります。VS はあくまでエディタ / デバッガとして割り切り、ビルドはすべて CLI に寄せることで、IDE の差異やバージョン違いによるトラブルも減らせます。

3. 発行は SqlPackage で統一し、環境依存の設定はプロファイルへ

本番・検証・開発環境へのデプロイには、SqlPackage の /Action:Publish を使うのが定石です。

実務的には、デプロイ プロファイル(publish.xml)に

  • 接続先サーバー
  • データベース名
  • 安全に無視する差分(例: インデックス / 権限など)

といった設定を記述し、SqlPackage からそれを読み込むようにしておくと、「環境ごとにちょっとだけオプションが違う」問題をきれいに吸収できます。

4. スキーマ比較は Azure Data Studio / VS Code 側に任せる

SDK スタイル プロジェクト向けの グラフィカルなスキーマ比較 は、現時点では Visual Studio よりも Azure Data Studio の方が充実しています。

典型的な使い方は次のような流れです。

  1. SDK スタイル .sqlproj から .dacpac をビルド
  2. ADS / VS Code の DB 接続から対象 DB を指定
  3. 「Schema Compare」 で「ソース: .dacpac」「ターゲット: データベース」として比較
  4. 差分内容をレビューし、必要なものだけを反映

SSOX の「スキーマ比較」からは距離を置き、「SDK スタイルの世界では ADS / VS Code が GUI フロントエンド」 と考えると、頭の切り替えがしやすくなります。

SSOX を捨てるか・守るかを判断するポイント

最後に、「うちのチームは SSOX を捨ててもよいのか?」を判断するためのチェックポイントを整理しておきます。

観点SSOX を手放せるケースSSOX を維持したいケース
CI/CDAzure DevOps / GitHub Actions などで DB デプロイを自動化したい手動デプロイが中心で、ビルドも開発 PC で完結している
ターゲット OSLinux エージェントでビルドしたい、コンテナで動かしたいWindows サーバー・Windows 開発マシンに閉じている
開発スタイル「DB もコード」と割り切り、T-SQL ファイル編集で設計できるテーブル デザイナなど、GUI 中心の設計フローが定着している
チームのスキルセットCLI・YAML(パイプライン)・Git などに慣れているDB まわりは GUI 操作に依存しているメンバーが多い

これらを踏まえて、ざっくりと次のように考えると判断しやすいです。

  • CI/CD 重視であれば SDK スタイル一択(SSOX なし生活に慣れる投資価値あり)
  • オンプレ主体で小規模チームなら、クラシック + SSOX 継続も十分アリ
  • 移行期は、VS Code / ADS を試しつつ、クラシック プロジェクトをすぐ捨てない構成にしておくと安心

まとめ

  • VS 2022 の SQL Server Object Explorer は SDK スタイル .sqlproj をサポートしていない。これは既知の仕様であり、設定で変えることはできない。
  • SDK スタイル プロジェクトは Solution Explorer + CLI(dotnet build / SqlPackage) を軸にしたワークフローが前提となっている。
  • スキーマ編集や比較、GUI ベースの操作は VS Code / Azure Data Studio の SQL Database Projects 拡張 でかなりカバーできる。
  • SSOX が絶対に必要な場合は
    • クラシック .sqlproj へのロールバック
    • クラシックと SDK スタイルの二重運用
    • Visual Studio インスタンスを分ける(通常版 VS と Preview)
    といった割り切りが必要になる。
  • 長期的には、Microsoft 自身が SDK スタイルを「将来の標準」と位置付けており、SSOX 依存からの脱却を進めておくのが安全な選択肢になりつつある。

「SSOX が見えない!」という状況は不安になりますが、実はツールの役割分担が変わっただけとも言えます。ビルドとデプロイを CLI に寄せ、GUI での作業を VS Code / ADS に任せることで、SDK スタイルでも十分に快適なデータベース開発体験を構築できます。

この記事を書いた人

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

コメント

コメントする

目次