Как я могу указать использовать SQL Server LocalDb 2014 вместо SQL Server LocalDb 2016 в строке подключения?

Наше приложение использует SQL Server LocalDb 2014 в качестве движка базы данных. Строка подключения, которую мы используем

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

Теперь на одном из наших компьютеров установлена ​​VS 2015SP3 и установлена ​​последняя версия объектов SQL Server, наше приложение начинает использовать SQL Server LocalDb 2016. Это нежелательно, поскольку мы регулярно обмениваемся резервными копиями файлов базы данных между компьютерами и теперь резервные копии, выполненные в формате LocalDb 2016, не могут быть прочитаны на компьютерах, на которых нет LocalDb 2016.

Проблема в том, что строка подключения не указывает, какую версию LocalDb следует использовать. Есть ли способ заставить LocalDb 2014 (или 2016, если мы решим обновить?)

2 ответа

Решение

Итак, учитывая, что, кроме ответа Эрика, не было предоставлено никаких решений, мы должны предположить, что вы действительно не можете указать, какой вариант SQL Server LocalDb вы хотите использовать при использовании "Data Source=(localdb)\mssqllocaldb" в строке подключения.

Недостатком решения Эрика является то, что оно не очень хорошо работает с другими приложениями, которые могут использовать экземпляр LocalDb по умолчанию (MSSQLLocalDb). Я нашел другой подход в использовании так называемого именованного экземпляра: экземпляра LocalDb, частного для вашего приложения. При определении именованного экземпляра вы можете указать версию LocalDb, которую вы хотите использовать: 12.0 для LocaldDb 2014, 13.0 для Localdb 2016.

Есть два способа создать именованный экземпляр:

  1. С использованием sqllocaldb инструмент командной строки:

SqlLocalDB.exe create "MyNamedInstance" 12.0 -s

-s Параметр запускает экземпляр немедленно.

  1. Указание именованного экземпляра в app.config:

Для этого добавьте в <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" 

Вы можете использовать инструмент командной строки sqllocaldb для создания и удаления экземпляров, поэтому удалите экземпляр в 2016 году (версия 13.0) следующим образом:

sqllocaldb delete "mssqllocaldb"

И затем создайте это имя экземпляра на 2104 (версия 12.0), используя:

sqllocaldb create "mssqllocaldb" 12.0

Для этого также есть хорошая библиотека.NET:

https://github.com/martincostello/sqllocaldb

Другие вопросы по тегам