如何指定在连接字符串中使用 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 服务器对象,我们的应用程序开始使用 SQL Server LocalDb 2016。这是不可取的,因为我们定期在计算机之间交换数据库文件的备份,现在无法在没有 LocalDb 2016 的计算机上读取以 LocalDb 2016 格式制作的备份。
问题是连接字符串没有指定应该使用哪个版本的 LocalDb。有办法强制 LocalDb 2014(或 2016,如果我们决定升级?)
可以使用sqllocaldb命令行工具来创建和删除实例,所以在2016(版本13.0)上删除实例是这样的:
sqllocaldb delete "mssqllocaldb"
然后使用以下方法在 2014(版本 12.0)上创建该实例名称:
sqllocaldb create "mssqllocaldb" 12.0
还有一个不错的 .NET 库可用于执行此操作:
好吧,看到除了 Erik 的回答之外没有提供任何解决方案,我们必须假设您确实无法指定在 "Data Source=(localdb)\mssqllocaldb"
中使用 "Data Source=(localdb)\mssqllocaldb"
时您希望使用哪种类型的 SQL Server LocalDb连接字符串。
Erik 解决方案的一个缺点是它不能很好地与可能使用 LocalDb 默认实例 (MSSQLLocalDb) 的其他应用程序一起使用。我发现了一种使用所谓的命名实例的不同方法:您的应用程序私有的 LocalDb 实例。在定义命名实例时,您 可以 指定要使用的 LocalDb 版本:12.0 用于 Localdb 2014,13.0 用于 Localdb 2016。
创建命名实例有两种方式:
- 使用
sqllocaldb
命令行工具:
SqlLocalDB.exe create "MyNamedInstance" 12.0 -s
-s
参数立即启动实例。
- 在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"
我们的应用程序使用 SQL Server LocalDb 2014 作为数据库引擎。我们使用的连接字符串是
"Data Source=(localdb)\MSSQLLOCALDB;Initial Catalog=OurDatabase;MultipleActiveResultSets=True;Integrated Security=True;AttachDBFilename=|DataDirectory|OurDatabase.mdf"
现在,在我们的一台计算机上,它安装了 VS 2015SP3 和最新版本的 SQL 服务器对象,我们的应用程序开始使用 SQL Server LocalDb 2016。这是不可取的,因为我们定期在计算机之间交换数据库文件的备份,现在无法在没有 LocalDb 2016 的计算机上读取以 LocalDb 2016 格式制作的备份。
问题是连接字符串没有指定应该使用哪个版本的 LocalDb。有办法强制 LocalDb 2014(或 2016,如果我们决定升级?)
可以使用sqllocaldb命令行工具来创建和删除实例,所以在2016(版本13.0)上删除实例是这样的:
sqllocaldb delete "mssqllocaldb"
然后使用以下方法在 2014(版本 12.0)上创建该实例名称:
sqllocaldb create "mssqllocaldb" 12.0
还有一个不错的 .NET 库可用于执行此操作:
好吧,看到除了 Erik 的回答之外没有提供任何解决方案,我们必须假设您确实无法指定在 "Data Source=(localdb)\mssqllocaldb"
中使用 "Data Source=(localdb)\mssqllocaldb"
时您希望使用哪种类型的 SQL Server LocalDb连接字符串。
Erik 解决方案的一个缺点是它不能很好地与可能使用 LocalDb 默认实例 (MSSQLLocalDb) 的其他应用程序一起使用。我发现了一种使用所谓的命名实例的不同方法:您的应用程序私有的 LocalDb 实例。在定义命名实例时,您 可以 指定要使用的 LocalDb 版本:12.0 用于 Localdb 2014,13.0 用于 Localdb 2016。
创建命名实例有两种方式:
- 使用
sqllocaldb
命令行工具:
SqlLocalDB.exe create "MyNamedInstance" 12.0 -s
-s
参数立即启动实例。
- 在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"