升級舊專案中SQLLocalDb v11.0至v12.0

升級舊專案中SQLLocalDb v11.0至v12.0

Visual Studio SQL Server Express提示

舊專案裡保留著測試用的SqlLocalDb(*.mdf)檔案,在Visual Studio 2015開啟後會有一些提示,可以看到專案圖示明顯不同,也能看到提示訊息明確指出SqlLocalDb有版本上的差異。查了目前這台電腦,因為SSD空間有限,除了Visual Studio 2015之外,並無額外再安裝MS SQL Server (Express),查詢程式與功能確定Visual Studio 2015有安裝Microsoft SQL Server 2014 Express LocalDB。還要下載Microsoft SQL Server 2012 Express LocalDB?沒那麼笨吧!

程式與功能 - SQL Server 2014 Express LocalDB

試著點擊LocalDb(*.mdf),這次得到的線索很明確了。

Visual Studio LocalDb 連線錯誤

SQLLocalDb v11.0至v12.0的執行個體名稱

嘗試使用SSMS透過熟悉的(localdb)\v11.0連線至SQLLocalDb v11.0,發現是無法連線的。在程式與功能>可以看到版號已經升版,所以改為(localdb)\v12.0就可以了嗎?不用試,不行。

請出秘密武器SqlLocalDB.exe。在cmd.exe或powershell下個sqllocaldb /?就能查詢所有參數。

sqllocaldb.exe /?

sqllocaldb i {執行個體}查詢:

sqllocaldb i {執行個體}

答案呼之欲出,經官方SQL Server 2014 Express LocalDB文件的證實,SQL Server 2014 Express LocalDB預設執行個體名稱改為MSSQLLocalDB,也就是說,SQL Server 2014 Express LocalDB正確的連線伺服器名稱應為(localdb)\MSSQLLocalDB

升級為SQLLocalDb v12.0

開啟專案web.config,連線字串是舊版(localdb)\v11.0無誤:

  <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\LocalTestDb.mdf;Initial Catalog=aspnet-20141202044803;Integrated Security=True" providerName="System.Data.SqlClient"/>
 

只需取代(或更新)連線伺服器名稱為現行SQL Server 2014 Express LocalDB的連線伺服器名稱即可。千萬不要乖乖的去下載2012 Express LocalDB來安裝,裝也裝不起來,因為同時間只能安裝一個版本的LocalDB。

  <add name="DefaultConnection" connectionString="Data Source=(localdb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\LocalTestDb.mdf;Initial Catalog=aspnet-20141202044803;Integrated Security=True" providerName="System.Data.SqlClient"/>
 

這個專案是從VB.NET改寫為C#,時間是2014年12月02日。最後,其實v12.0沒猜中有點小傷心,印象中之前看過某份文件說LocalDb如果有升級,他會是使用增加版號的方式,結果不是。:P

1 則留言:

  1. 我電腦同時存在sql 2012 和 sql 2014 的 localdb 執行個體

    回覆刪除

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。