Visual Studio 2022でService-based SQL Database(.mdf)が作成できない原因と解決手順まとめ

Visual Studio 2022 で「Service-based SQL Database(.mdf)」を追加しようとしたらエラーになり、NuGet で Microsoft.Data.SqlClient や System.Data.SqlClient を入れても直らない……というケースは少なくありません。この記事では、原因の考え方から Visual Studio の具体的な修復手順、LocalDB の確認方法、そして .mdf に依存しない構成の考え方まで、実務でそのまま使えるレベルで整理します。

目次

Visual Studio 2022で「Service-based SQL Database(.mdf)」が作成できない現象

まずは、どのような現象が「Service-based Database が作成できない」状態なのかを整理しておきます。

  • プロジェクトを右クリック → [追加] → [新しい項目] から [Service-based Database] を選ぶとエラーになる
  • 「Service-based Database」のテンプレート自体が「新しい項目」の一覧に出てこない
  • .mdf は作成されるが、サーバーエクスプローラーや実行時の接続でエラーになる

代表的な症状と、よく関係する原因をざっくり対比すると次のようになります。

症状可能性が高い原因
「Service-based Database」を追加すると即座にエラーVisual Studio のワークロード不足・破損、テンプレートの不整合
「Service-based Database」の項目が一覧に存在しない「データの保存と処理」ワークロード未インストール、プロジェクト種別が対象外
.mdf はあるが接続時にエラーになるSQL Server Express LocalDB(MSSQLLocalDB)がインストールされていない/起動していない

多くの人が最初に試すのが「SQL クライアントの NuGet パッケージを入れる」ことですが、これは アプリケーション実行時の接続ライブラリ であり、Visual Studio が .mdf をテンプレートから生成する「デザイン時」機能とはまったく別物です。そのため、NuGet だけでは状況は改善しません。

原因の整理:問題はNuGetではなくVisual Studio側のコンポーネント

Visual Studio 2022 で .mdf のテンプレートがエラーになる根本原因は、ほぼ次のどれかに集約できます。

  • インストール時に 「データの保存と処理」ワークロード を入れていない
  • SQL 関連コンポーネントやテンプレートが OS 更新・アップデートの影響で破損している
  • Visual Studio 自体の設定・キャッシュが壊れている
  • 前提となる SQL Server Express LocalDB がない、または動作していない

逆に言えば、NuGet の Microsoft.Data.SqlClient / System.Data.SqlClient が入っているかどうかは、このテンプレートの成功/失敗にはほぼ関係ありません。

Visual Studio が Service-based Database を作成するときは:

  1. プロジェクト内に .mdf ファイルを作成する
  2. LocalDB(MSSQLLocalDB インスタンスが標準)に対して、その .mdf をアタッチする
  3. 必要であれば接続文字列を設定ファイルに追記する

この処理は Visual Studio 本体と SQL Server Express LocalDB によって行われるため、プロジェクトが参照している NuGet パッケージは関係しません。「テンプレートのエラー=開発環境側の問題」と考えるのが正しい切り分けです。

解決までの標準ルート:上から順に実施する

ここからは、再現しやすく失敗しにくい順に、具体的な対処手順を解説します。大きく次のステップで進めると効率的です。

優先順位対処内容主な目的
Aワークロード「データの保存と処理」の導入・入れ直し必要なツール・テンプレートを揃える
BVisual Studio の修復 / 更新 / 設定初期化破損した設定や古いバージョンを是正
Cプロジェクト側のキャッシュと生成物のクリーンアッププロジェクト固有の不整合を解消
DSQL Server Express LocalDB の状態確認実際に .mdf をホストするエンジンの確認
E最終手段として Visual Studio の再インストール環境をまっさらな状態に戻す

A. 「データの保存と処理」ワークロードと .NET SDK を入れ直す

最初に確認すべきは、Visual Studio 自体に必要なコンポーネントが入っているかどうかです。

Visual Studio Installerでワークロードを確認

  1. Windows のスタートメニューから 「Visual Studio インストーラー」 を起動します。
  2. 対象の Visual Studio 2022 の横にある [変更](Modify) をクリックします。
  3. [ワークロード] タブを開き、「データの保存と処理(Data storage and processing)」 にチェックが入っているか確認します。
  4. チェックが外れていればオンにして [変更] または [インストール] を実行します。

ワークロード画面に見つからない場合は、「その他のツール セット」や「データ関連」のカテゴリをよく探してください。コミュニティ版・Professional・Enterprise などエディションによって表示位置の違いがあることもあります。

個別コンポーネントでSQL関連を確認

念のため、[個別のコンポーネント] タブで以下のような項目がインストールされているか確認すると安心です(名称はバージョンにより多少異なります)。

場所代表的なコンポーネント役割
個別コンポーネント > データストレージSQL Server Express LocalDBService-based Database が接続する軽量 SQL Server
個別コンポーネント > データストレージSQL Server Data Tools などデータベース関連のデザイン・ビルド支援

.NET 8 SDK / ランタイムの有無を確認

対象プロジェクトが .NET 8 をターゲットにしている場合は、.NET 8 SDK とランタイムのインストールも確認します。Visual Studio インストーラーの「個別コンポーネント」で .NET 8 関連の項目にチェックを入れるか、別途 .NET 8 SDK をインストールしておきましょう。

.NET SDK の有無は .mdf テンプレートそのものより、プロジェクトのビルドやツール連携に影響します。「VS 本体」「データワークロード」「ターゲット .NET の SDK」をセットで揃えるイメージを持つとトラブルが減ります。

B. Visual Studio の修復・更新・設定初期化

ワークロードの入れ直しで改善しない場合は、次に Visual Studio 自体を整えます。

Visual Studioの修復(Repair)

  1. Visual Studio をすべて終了します。
  2. 再度 Visual Studio インストーラー を起動します。
  3. 対象の Visual Studio 2022 の右にある [その他] メニューから [修復] を選択します。
  4. ガイドに従って修復処理を完了させます。

修復では、壊れている可能性のあるテンプレートや内部コンポーネントも再配置されるため、「テンプレートを選んだ瞬間に落ちる」といった挙動が改善することがあります。

Visual Studioを最新バージョンに更新

修復が完了したら、同じインストーラー画面から [更新] を実行し、Visual Studio 2022 を最新の状態にしておきましょう。SQL 関連機能を含む不具合が修正されているケースもあり、思わぬところで効果を発揮します。

設定の初期化(devenv /ResetSettings)

設定ファイルの破損や古いアドインの影響でテンプレートが正しく動いていない可能性もあります。そこで Visual Studio の設定を一度リセットしてみます。

  1. 「開発者コマンド プロンプト for VS 2022」 を起動します。
  2. 次のコマンドを実行します。
devenv /ResetSettings

このコマンドを実行すると、ウィンドウレイアウトや一部のユーザー設定が初期状態に戻ります。カスタマイズを多用している場合は、事前に「ツール → 設定のインポートとエクスポート」からバックアップを取っておくと安心です。

新規プロジェクトでService-based Databaseを試す

ここまで対応したら、既存プロジェクトの問題かどうか切り分けるために、まっさらなテスト用プロジェクトを作成して試します。

  1. Visual Studio 2022 で [ファイル] → [新規作成] → [プロジェクト] を開く。
  2. 「Windows フォーム アプリ」など、Windows デスクトップ系のテンプレートを選ぶ(.NET Framework ベースだと試しやすい)。
  3. プロジェクト作成後、プロジェクトを右クリック → [追加] → [新しい項目]。
  4. 「データ」カテゴリ(または「データ」系のテンプレート)から [Service-based Database] を選択して追加を試す。

新規プロジェクトでは正常に .mdf が作れる場合、元のプロジェクト特有の設定やファイルが壊れている可能性が高くなります。この場合は次の「キャッシュ削除」もあわせて行うことで改善することが多いです。

C. キャッシュと生成物をクリーンアップする

Visual Studio はプロジェクトごとにさまざまなキャッシュや一時ファイルを持っており、それが壊れているとテンプレート追加時にも影響することがあります。

bin / obj / .vsフォルダーの削除

  1. Visual Studio を終了します。
  2. エクスプローラーでソリューションフォルダーを開きます。
  3. ソリューション直下にある bin フォルダー、obj フォルダー、.vs フォルダー(隠しフォルダー)を削除します。
  4. Visual Studio でソリューションを開き直し、クリーン → 再ビルド を行います。
  5. 再度、「新しい項目」から Service-based Database の追加を試します。

.vs フォルダーはソリューション単位のキャッシュ・一時設定を多く持っています。削除してもコードそのものは消えないので、「動きがおかしいときはいったん削除して再生成」が定番の対処です。

NuGetキャッシュのクリア

Service-based Database のテンプレート自体には直接関係しないものの、依存関係まわりのトラブルを避ける目的で、NuGet キャッシュをクリアするのも一案です。

  • Visual Studio の ツール → NuGet パッケージ マネージャー → パッケージ マネージャーの設定 を開く
  • NuGet のキャッシュ に関する項目から 「すべてのキャッシュをクリア」 を実行する

.NET CLI が使える環境であれば、コマンドラインから次のようにクリアすることもできます。

dotnet nuget locals all --clear

これにより、古いパッケージキャッシュが原因のビルドエラーや設計時の不具合を避けやすくなります。

D. SQL Server Express LocalDBの状態を確認する

Service-based Database(.mdf)は多くの場合、SQL Server Express LocalDB によってホストされます。LocalDB がインストールされていない・起動していない場合、.mdf の作成や接続時にエラーが発生します。

LocalDBのインストール有無を確認

  1. 「開発者コマンド プロンプト for VS 2022」または通常のコマンドプロンプトを起動します。
  2. 次のコマンドを実行します。
sqllocaldb info

ここで次のようなパターンが考えられます。

出力結果状況対応
LocalDB インスタンス名(例:MSSQLLocalDB)が一覧表示されるLocalDB はインストール済み次の「インスタンス起動確認」へ
'sqllocaldb' は内部コマンドまたは外部コマンド…LocalDB 自体がインストールされていない可能性Visual Studio インストーラーで「SQL Server Express LocalDB」を追加インストール
一覧は出るが、目的のインスタンスが存在しない標準インスタンスが作成されていない新規にインスタンスを作成

MSSQLLocalDBインスタンスの作成・起動

標準インスタンス MSSQLLocalDB が存在しない場合、次のコマンドで作成・起動できます。

sqllocaldb create "MSSQLLocalDB"
sqllocaldb start  "MSSQLLocalDB"

状態を確認するには:

sqllocaldb info "MSSQLLocalDB"

ここで「状態: 実行中」のような表示になっていれば LocalDB 自体は動いていると判断できます。

接続文字列のイメージ

Service-based Database として作成された .mdf に対する接続文字列は、おおよそ次のような形になります。

Data Source=(LocalDB)\MSSQLLocalDB;
AttachDbFilename=|DataDirectory|\Database1.mdf;
Integrated Security=True;

「サーバー名」に (LocalDB)\MSSQLLocalDB を指定して接続できるかを SQL Server オブジェクト エクスプローラーなどで確認しておくと、LocalDB 周りのトラブルかどうかの切り分けがしやすくなります。

E. それでもダメな場合は Visual Studio の再インストールを検討

ここまでの A〜D を実施してもなお、「Service-based Database 追加時に必ずエラーになる」「テンプレートが壊れているようにしか見えない」といった状況であれば、最終手段として Visual Studio 2022 の再インストール を検討します。

  1. Visual Studio で ツール → 設定のインポートとエクスポート から現在の設定をエクスポートしておく。
  2. Visual Studio インストーラーから対象インスタンスをアンインストール。
  3. PC を再起動。
  4. 最新版の Visual Studio 2022 をインストールし、最初から 「データの保存と処理」ワークロード と LocalDB をチェックしてセットアップ。

手間はかかりますが、原因不明なテンプレートまわりの不具合は、クリーンインストールで一気に解決することも少なくありません。複数バージョンの Visual Studio を並行インストールしている環境などでは特に効果的です。

LocalDBとService-based Databaseの関係を理解する

ここで一度、Service-based SQL Database(.mdf)と LocalDB の関係を整理しておきます。

  • Service-based Database は、プロジェクトに埋め込まれた .mdf ファイル
  • 実際のデータベースエンジンは SQL Server Express LocalDB
  • Visual Studio は LocalDB に対して .mdf をアタッチ/デタッチしながら設計・実行を行う

この構成の特徴は次の通りです。

項目Service-based Database(.mdf)
配置場所通常はプロジェクトフォルダー直下、または App_Data 配下
実行エンジンローカルの SQL Server Express LocalDB(MSSQLLocalDB など)
メリットプロジェクト内に完結するため、配布が簡単・開発環境構築が楽
デメリット複数PC間での共有・マイグレーションが難しい、Gitなどでのバージョン管理と相性が悪い

このように、Service-based Database は「簡易にローカルで完結させる」用途には向いている一方、チーム開発や本番運用を考えると制約も多くなります。そのため、Visual Studio 2022 以降では、外部の SQL Server(LocalDB / Express / 開発用サーバー)へ通常接続するスタイルを選ぶケースが増えています。

よくある勘違いとベストプラクティス

最後に、Service-based Database 周りでよくある勘違いと、よりメンテナンスしやすい構成の考え方を整理します。

勘違い1:NuGetのSqlClientを入れればテンプレートのエラーが直る

冒頭でも触れましたが、これは典型的な誤解です。

  • NuGet の SqlClient(Microsoft.Data.SqlClient / System.Data.SqlClient)
    • アプリケーションが実行時に SQL Server へ接続するためのライブラリ
    • Visual Studio のテンプレートやウィザードの動作とは直接関係しない
  • Service-based Database のテンプレート
    • Visual Studio が提供する「プロジェクトに .mdf を追加する」ためのデザイン時機能
    • 必要なのは VS のワークロード・テンプレート・LocalDB

したがって、テンプレートエラーが出ている段階では、まずは VS 側の環境を整えることが最優先です。NuGet は、テンプレートが正常に動くようになってから、アプリの構成に合わせて追加すれば十分です。

勘違い2:どのプロジェクトでもService-based Databaseを使うべき

Visual Studio 2022 では、プロジェクトの種類によっては Service-based Database テンプレートが表示されなかったり、そもそも推奨されていなかったりします。特に、.NET 5 以降の SDK スタイル プロジェクトでは、よりモダンなデータアクセス手法(たとえば Entity Framework Core など)が前提になるケースが多くなっています。

用途ごとのおすすめ構成を簡単にまとめると次の通りです。

用途おすすめの構成備考
学習用・小規模な試作Service-based Database(.mdf) + LocalDBセットアップが簡単で完結しやすい
チーム開発・業務アプリ共有 SQL Server / SQL Server Express + 通常の接続文字列.mdf ではなくサーバー側で DB を管理する方が運用しやすい
.NET 5 以降の新規開発Entity Framework Core + LocalDB/SQL Serverコードファーストやマイグレーションを活用しやすい

Service-based Database が動かないことをきっかけに、外部 DB サーバーに接続する構成へ切り替えるのも長期的には有力な選択肢です。

勘違い3:テンプレートが表示されない=Visual Studioのバグ

テンプレートが一覧に出てこない場合、つい「バグでは?」と感じてしまいますが、実際には次の要因であることが多いです。

  • 「データの保存と処理」ワークロードをインストールしていない
  • 選択しているプロジェクトの種類が Service-based Database に対応していない
  • Visual Studio のフィルタリング(上部の検索ボックスやカテゴリ)が効いている

まずはこの記事の手順に沿って、ワークロードの導入 → 修復 → 新規プロジェクトでの確認を行い、それでも出てこない場合に「バグの可能性」を疑う、くらいの順序で考えるのがおすすめです。

最短で復旧するための具体的チェックリスト

最後に、ここまでの内容を「そのまま上からこなすだけ」で確認できるチェックリストとして整理します。

順番チェック項目ポイント
1Visual Studio インストーラーで「データの保存と処理」ワークロードにチェックが入っている足りていなければ追加インストールする
2個別コンポーネントで SQL Server Express LocalDB がインストールされているなければ追加インストールする
3Visual Studio の修復(Repair)と最新バージョンへの更新を実施したテンプレート・内部コンポーネントの破損を解消
4devenv /ResetSettings を実行して設定を初期化したレイアウトや設定が原因の不具合をリセット
5テスト用の新規プロジェクトで Service-based Database を追加してみた既存プロジェクト固有の問題かどうかを切り分け
6問題のプロジェクトで bin / obj / .vs を削除し、再ビルドしたキャッシュ・一時ファイルの影響を排除
7sqllocaldb info で LocalDB の状態を確認し、必要なら MSSQLLocalDB を作成・起動した実際に .mdf をホストするエンジンの存在を確認
8それでも解決しない場合は Visual Studio 2022 を再インストールした設定バックアップを事前に取ることを忘れない

実務的には、1〜3 だけで解決するケースがかなり多く、LocalDB の確認まで含めれば大半の「Service-based Database が作れない」問題は片付きます。それでも残る場合は、「そもそも .mdf テンプレートにこだわるべきか?」を見直し、外部 SQL Server への接続や EF Core などを検討するのも良いタイミングです。

まとめると、次の順番で試すのがもっとも効率的です。

  1. ワークロード「データの保存と処理」の導入・入れ直し
  2. Visual Studio の修復と更新
  3. bin / obj / .vs 削除 + 設定のリセット
  4. 新規プロジェクトでの再試行
  5. LocalDB(MSSQLLocalDB)の確認・起動
  6. 必要であれば Visual Studio の再インストール

この流れで環境と前提を整えていけば、「Visual Studio 2022 で Service-based SQL Database(.mdf)が作成できない」という問題は、ほとんどのケースで解決できるはずです。

この記事を書いた人

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

コメント

コメントする

目次