先日、C#の勉強のために TECHNICAL MASTER はじめてのASP.NET Webフォームアプリ開発 C# 対応版 を購入しました。
サンプルをダウンロードしたところDBが正しく読めないということが発生しました。そこでいろいろ試してみたところ対処方法がわかりました。
原因
私の環境では Microsoft Visual Studio Community 2017を入れていましたが、この本では2015を利用してます。
Visual Studio のMS SQL LocalDBを本では使っているのですが、Visual Studio 2017と 2015ではMS SQLの LocalDBのバージョンが異なり、残念ながら双方に互換性がないため動作しませんでした。
対処方法
Visual Studio 2017はMS SQL 2016のLocal DBが入っており Visual Studio 2015にはMS SQL 2014のLocal DBが同梱されてます。
MS SQL Express 2014をインストールし、環境を整えることで対応できるようになります。
一 Microsoft SQL Server 2014 Express ダウンロード
Download Microsoft® SQL Server® 2014 Express from Official Microsoft Download Center
ここからMicrosoft SQL Server 2014 Expressをダウンロードしてください。
LocalDBをインストールすればいいので LocalDB 32BIT\SqlLocalDB.msi とLocalDB 64BIT\SqlLocalDB.msi を選択し次へをクリックすると SqlLocalDB.msi がダウンロードされるのでそのファイルをダブルクリックしてインストールしてください。私の環境はWindows 10 64bitですが無事にダウンロードできました。
二 LocalDBの登録と確認
実はインストールしただけでは使えません。Visual Studioからみて呼び出すための仕組みがまだそろっていないからです。登録されたLocalDBはコマンドプロンプトから sqllocaldb info を実行することで確認が可能です。
MSSQLLocalDBとProjectsV13はSQL 2016のLocal DBです。残念ながら、これだとサンプルは動作しません。
ここでインストールした2014のLocalDBを使うために登録する必要があります。
Creating SQL Server Express LocalDb v11, v12, v13, and MSSQLLocalDb Instances
この例だと、インスタンス名はv12.0になるため ProjectsV13 に合わせるために ProjectsV12 で登録しようとする場合以下のように実行します。
“C:\Program Files\Microsoft SQL Server\120\Tools\Binn\SqlLocalDB.exe” create “ProjectsV12” 12.0 -s
これで実際に追加されたことは確認できました。
三 Web.config の設定
Visual StudioではGUIの部分からDBインスタンスを変更できないので直接設定ファイルをいじります。Web.configの
<add name=”ConnectionString” connectionString=”Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\DatabaseSample.mdf;Integrated Security=True” providerName=”System.Data.SqlClient”/>
赤の部分を(LocalDB)\ProjectsV12 に変更してください。
<add name=”ConnectionString” connectionString=”Data Source=(LocalDB)\ProjectsV12;AttachDbFilename=|DataDirectory|\DatabaseSample.mdf;Integrated Security=True” providerName=”System.Data.SqlClient”/>
これでサーバーエクスプローラーからいつでも確認できるようになります。
最後に
これからもSQL サーバーがバージョンアップしてLocalDBの互換性が保証されないことがあるかもしれません。
DBバージョンの変更はこのようにできるということが理解できました。
私も今回ググってようやくわかったのですが、昔からされている方たちには常識だからなかなか情報がでてこなかったのかもと思います。
参考にしていただければと思います。
コメント