Our application uses SQL Server LocalDb 2014 as the database engine. The connection string we use is
\"Data Source=(localdb)\\MSSQLLOCALDB;Initial Catalog=O
You can use the sqllocaldb command line tool to create and delete instances, so delete the instance on 2016 (version 13.0) like this:
sqllocaldb delete "mssqllocaldb"
And then create that instance name on 2014 (version 12.0) using:
sqllocaldb create "mssqllocaldb" 12.0
There is also a nice .NET library available for doing this:
https://github.com/martincostello/sqllocaldb
Well, seeing that apart from Erik's answer no solutions have been provided, we must assume that indeed you cannot specify which flavour of SQL Server LocalDb you wish to use when using "Data Source=(localdb)\mssqllocaldb"
in a connection string.
A drawback of Erik's solution is that it does not play nice with other applications that may use the default instance of LocalDb (MSSQLLocalDb). I found a different approach in using a so called named instance: an instance of LocalDb private to your application. While defining a named instance you can specify the version of LocalDb you want to use: 12.0 for LocaldDb 2014, 13.0 for Localdb 2016.
There are two ways to create a named instance:
sqllocaldb
commandline tool:SqlLocalDB.exe create "MyNamedInstance" 12.0 -s
The -s
parameter starts the instance immediately.
For this add to the <configSections>
tag:
<section name="system.data.localdb"
type="System.Data.LocalDBConfigurationSection,System.Data,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089"/>
Then add a new tag:
<system.data.localdb>
<localdbinstances>
<add name="MyNamedInstance" version="12.0" />
</localdbinstances>
</system.data.localdb>
You can now specify the named instance in the connection string thus:
"Data Source=(localdb)\mynamedinstance"