3

我們的應用程序使用SQL Server LocalDb 2014作爲數據庫引擎。我們使用的連接字符串如何在連接字符串中指定使用SQL Server LocalDb 2014而不是SQL Server LocalDb 2016?

"Data Source=(localdb)\MSSQLLOCALDB;Initial Catalog=OurDatabase;MultipleActiveResultSets=True;Integrated Security=True;AttachDBFilename=|DataDirectory|OurDatabase.mdf" 

現在,在我們的電腦只有一個,它具有VS 2015SP3並安裝最新版本的SQL Server對象,我們的應用程序開始使用SQL Server 2016的LocalDB這是不可取的,因爲我們定期在計算機之間交換數據庫文件的備份,現在以LocalDb 2016格式生成的備份無法在沒有LocalDb 2016的計算機上讀取。

問題是連接字符串不指定應該使用哪個版本的LocalDb。有沒有辦法強制LocalDb 2014(或2016,如果我們決定升級?)

回答

4

那麼從Erik的答案已提供無解看到,除了,我們必須假設確實不能指定您希望在連接字符串中使用"Data Source=(localdb)\mssqllocaldb"時使用的SQL Server的LocalDB的味道。

Erik的解決方案的一個缺點是,它不能與可能使用LocalDb(MSSQLLocalDb)的默認實例的其他應用程序兼容。我在使用所謂的命名實例時發現了一種不同的方法:將LocalDb的一個實例專用於您的應用程序。在定義命名實例,你可以指定的的LocalDB版本要使用:12.0 LocaldDb 2014年,13.0的LocalDB 2016年

有兩種方法來創建一個命名實例:

  1. 使用在sqllocaldb命令行工具:

SqlLocalDB.exe create "MyNamedInstance" 12.0 -s

-s參數立即啓動實例。

  1. 在應用程序中指定命名實例。配置:

對於這個添加到<configSections>標籤:

<section name="system.data.localdb" 
     type="System.Data.LocalDBConfigurationSection,System.Data,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089"/> 

然後添加一個新的標籤:

<system.data.localdb> 
    <localdbinstances> 
     <add name="MyNamedInstance" version="12.0" /> 
    </localdbinstances> 
</system.data.localdb> 

現在,您可以由此指定的連接字符串中的命名實例:

"Data Source=(localdb)\mynamedinstance" 
1

您可以使用sqllocaldb命令行工具來創建和刪除實例,因此在2016年(版本13.0)上刪除實例,如下所示:

sqllocaldb delete "mssqllocaldb" 

,然後在2104創建一個實例名稱使用(12.0版):

sqllocaldb create "mssqllocaldb" 12.0 

,還可以這樣做一個很好的.NET庫:

https://github.com/martincostello/sqllocaldb

+0

無論出於何種原因,您無法將mssqllocaldb還原爲previo我們的版本,你會得到一個錯誤「localdb實例api方法的參數不正確」。我找到的唯一解決方法是編輯HKEY_CURRENT_USER \ Software \ Microsoft \ Microsoft SQL Server \ UserInstances設置ParentInstance到MSSQL12E.LOCALDB下mssqllocaldb的註冊表項。然後在啓動實例之前,轉到C:\ Users \ you \ AppData \ Local \ Microsoft \ Microsoft SQL Server本地數據庫\ Instances \ mssqllocaldb並刪除所有文件並從上面的文件夾「ProjectsV12」中複製。然後啓動實例。感謝微軟! – LMK

相關問題