我们的应用程序使用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,如果我们决定升级?)
答案 0 :(得分:5)
嗯,除了Erik的答案之外没有提供解决方案,我们必须假设在连接字符串中使用"Data Source=(localdb)\mssqllocaldb"
时,确实无法指定希望使用哪种SQL Server LocalDb风格
Erik解决方案的一个缺点是它与其他可能使用LocalDb默认实例(MSSQLLocalDb)的应用程序不相称。我在使用所谓的命名实例时发现了一种不同的方法:一个LocalDb私有实例到你的应用程序。定义命名实例时,可以指定要使用的LocalDb版本:LocaldDb 2014为12.0,Localdb 2016为13.0。
有两种方法可以创建命名实例:
sqllocaldb
命令行工具: SqlLocalDB.exe create "MyNamedInstance" 12.0 -s
-s
参数立即启动实例。
为此添加<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 :(得分:1)
您可以使用sqllocaldb命令行工具创建和删除实例,因此请删除2016年(版本13.0)上的实例,如下所示:
sqllocaldb delete "mssqllocaldb"
然后使用:
在2104(版本12.0)上创建该实例名称sqllocaldb create "mssqllocaldb" 12.0
还有一个很好的.NET库可用于执行此操作: