[LocalDB] 升級 LocalDB *.mdf 檔案

我有一個專案從 VS2013 升 VS2015,裡面有一個 LocalDB 檔案副檔名為 *.mdf,當我在 VS 2015 雙擊該檔案後跳出以下視窗:

雖然有跳出錯誤訊息,但仍然可以在 Server Explorer 看到,不過他是紅色叉叉,於是我按下重新整理後跳出錯誤訊息, 如下圖:

VS 2015 可順利運行專案,但無法編輯該 *.mdf 檔案
VS 2013 可順利編輯該 *.mdf 檔案

記得 SQL Server 2014 一出來沒多久,就踩了 LocalDB 連線字串的雷,印象相當深刻,主要原因是 EF 在安裝時會幫我設定 v12.0,導致我的 Code First 專案在升級 SQL 後失敗

SQL Server 2014 LocalDB 當時候的文件執行個體是寫 v12.0,但其實是 MSSqlLocaldb;為此還特地回報給EF,現在 EF 6.1.3 已經會自動幫我們加入正確的執行個體名稱了,舊文:https://www.dotblogs.com.tw/yc421206/2014/04/22/144828

由於我的 *.mdf 檔案是在 VS 2013 下建立,我猜 VS 2013 會使用 SQL Server 2012 Express LocalDB 版本的執行個體,VS 2015 使用 SQL Server 2014 Express LocalDB 版本的執行個體 ,所以 VS 2015 要求我升級該檔案才能在 VS 2015 使用 SSDT 處理該檔案。

SSDT 是一個可以讓 VS 管理 SQL 的工具,全名為 SQL Server Data Tools

 

升級 LocalDB,步驟如下:


 


這裡要先釐清一些誤會,有些人會認為 LocalDB 是 VS IDE 所提供的功能,其實是

安裝 VS 2013 時,會安裝 SQL Server 2012 Express LocalDB, VS 2015 則是 SQL Server 2014 Express LocalDB,下表為 LocalDB 預設執行個體名稱

SQL Server Express 預設執行個體
LocalDB 2012 v11.0
LocalDB 2014 MSSQLLocaldb
如果的電腦只安裝VS 2015,無法建立名為v11.0的執行個體

 

SqlLocalDB.exe 用來管理 LocalDB 的應用程式,列舉我目前電腦 localdb 的執行個體,如下圖:

 

執行個體資料庫檔案位置

%LOCALAPPDATA%\Microsoft\Microsoft SQL Server Local DB\Instances

 

也能看出不同的執行個體,是分別散算在不同目錄,代表不同版本的執行個體,可共存,如下圖:

VS 內建 SQL 資料表管理,其實是 SSDT 套件
https://msdn.microsoft.com/zh-tw/library/mt204009.aspx

 

若有謬誤,煩請告知,新手發帖請多包涵


Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET

Image result for microsoft+mvp+logo