繁体   English   中英

如何在连接字符串中指定使用 SQL Server LocalDb 2014 而不是 SQL Server LocalDb 2016?

[英]How can I specify to use SQL Server LocalDb 2014 rather than SQL Server LocalDb 2016 in the connection string?

我们的应用程序使用 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,如果我们决定升级?)

好吧,看到除了 Erik 的回答之外没有提供任何解决方案,我们必须假设您确实无法指定在连接字符串中使用"Data Source=(localdb)\\mssqllocaldb"时希望使用的 SQL Server LocalDb 的风格。

Erik 解决方案的一个缺点是,它与其他可能使用 LocalDb 的默认实例 (MSSQLLocalDb) 的应用程序不兼容。 我发现了一种使用所谓命名实例的不同方法:您的应用程序私有的 LocalDb 实例。 在定义命名实例时,您可以指定要使用的 LocalDb 版本:LocaldDb 2014 为 12.0,Localdb 2016 为 13.0。

有两种方法可以创建命名实例:

  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"

然后使用以下命令在 2014(版本 12.0)上创建该实例名称:

sqllocaldb create "mssqllocaldb" 12.0

还有一个不错的 .NET 库可用于执行此操作:

https://github.com/martincostello/sqllocaldb

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM