【问题标题】:How can I specify to use SQL Server LocalDb 2014 rather than SQL Server LocalDb 2016 in the connection string?如何在连接字符串中指定使用 SQL Server LocalDb 2014 而不是 SQL Server LocalDb 2016?
【发布时间】:2016-10-11 09:21:55
【问题描述】:

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

【问题讨论】:

    标签: sql-server localdb sql-server-2014-localdb sql-server-2016-localdb


    【解决方案1】:

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

    Erik 解决方案的一个缺点是它不能很好地与其他可能使用 LocalDb (MSSQLLocalDb) 的默认实例的应用程序配合使用。在使用所谓的命名实例时,我发现了一种不同的方法:LocalDb 的实例私有到您的应用程序。在定义命名实例时,您可以指定要使用的 LocalDb 版本:12.0 用于 Localdb 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" 
    

    【讨论】:

      【解决方案2】:

      可以使用sqllocaldb命令行工具创建和删除实例,所以在2016(13.0版)上删除实例如下:

      sqllocaldb delete "mssqllocaldb"
      

      然后在 2014(版本 12.0)上创建该实例名称:

      sqllocaldb create "mssqllocaldb" 12.0
      

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

      https://github.com/martincostello/sqllocaldb

      【讨论】:

      • 无论出于何种原因,您都无法将 mssqllocaldb 恢复到以前的版本,您会收到错误消息“localdb 实例 api 方法的参数不正确”。我发现的唯一解决方法是在 HKEY_CURRENT_USER\Software\Microsoft\Microsoft SQL Server\UserInstances 下编辑 mssqllocaldb 的注册表项,将 ParentInstance 设置为 MSSQL12E.LOCALDB。然后在启动实例之前,转到 C:\Users\you\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\mssqllocaldb 并从上面的文件夹“ProjectsV12”中删除所有文件并复制。然后启动实例。感谢微软!
      猜你喜欢
      • 1970-01-01
      • 2015-01-27
      • 1970-01-01
      • 2012-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-22
      相关资源
      最近更新 更多