Visual Studio 2017 使用低版本 SQL LocalDB

(新手原创,欢迎转载,转载请注明出处https://blog.****.net/qq_29730023/article/details/80214905

SQL LocalDB,轻量级MSSQL本地运行环境,最高版本仅40Mb+,用户机安装即可运行含有LocalDB生成的*.MDF数据库文件的应用程序。安装包包含在SQL Server 2014 Express(下载)。使用该版是因为,经过几天的折腾发现这是最后一个支持32位系统的LocalDB,Visual Studio 2017内置的是SQL Server 2016 Express(仅有x64)Visual Studio 2015内置两个版本的LocalDB(因安装一次时间太久就没有反复测试)。

本文的初衷是解决两个问题,百度、谷歌n次未得到结果。

问题一:Invalid value for key 'attachdbfilename'
Visual Studio 2017 使用低版本 SQL LocalDB

这个问题网上千篇一律的在说链接字符串。在MSDN得到了一点线索,大致是与.NET版本有关,虚拟机安装的是Win7x86+.NET4,改装.NET4.5问题解决。

问题二:上面的问题解决了,又出现了新的问题……
首先在VS2017创建一个C#窗体工程,用VS的SQL Server对象资源管理器创建一个数据库,随便插入一个表填几个数据。注意红色箭头的版本号,稍后引入问题说明。

Visual Studio 2017 使用低版本 SQL LocalDBVisual Studio 2017 使用低版本 SQL LocalDB

链接数据库

Visual Studio 2017 使用低版本 SQL LocalDB

添加数据源

Visual Studio 2017 使用低版本 SQL LocalDB

程序引用

Visual Studio 2017 使用低版本 SQL LocalDB

编译并运行(主机Win10x64)

Visual Studio 2017 使用低版本 SQL LocalDB

放入虚拟机运行(Win7x86+.NET4.5)

Visual Studio 2017 使用低版本 SQL LocalDB

E文不大好,大致能看出和版本有关系。

记得前面截图那个红色箭头标记的版本号吗(13.0.4001)?因虚拟机没有安装VS,所以使用LocalDB的命令行工具SqlLocalDB查看

Visual Studio 2017 使用低版本 SQL LocalDB

12.0.2000.8(虚拟机)和13.0.4001(主机)不同。前面说过LocalDB 2014(12.0.2000.8)是32位系统的最后一个版本,这个在VS2017的安装包里面得到证实。

VS2017安装包x64的LocalDB。

Visual Studio 2017 使用低版本 SQL LocalDB

VS2017安装包x86的LocalDB

Visual Studio 2017 使用低版本 SQL LocalDB


好吧!虚拟机没有32位的LocalDB,那就只能在主机安装低版本x64的LocalDB,安装没有问题。

Visual Studio 2017 使用低版本 SQL LocalDB

可是两个版本的命令行工具SqlLocalDB创建自动实例MSSQLLocalDB都是13.0.4001版本……。这个小插曲有两个解决方案:

1、将主机2016 LocalDB卸载,可是2016 LocalDB和SSDT是绑定的,如果不装SSDT还要装其他的创建编辑数据库的工具。

Visual Studio 2017 使用低版本 SQL LocalDB

2、这是最终解决方案(可能是比较笨的办法),先将主机SSDT和2016 LocalDB卸载(注意要在控制面板/删除添加程序卸载),然后用2014 LocalDB命令行工具SqlLocalDB创建一个名为MSSQLLocalDB的自动实例,处理完毕再把SSDT和2016 LocalDB安装回来。

主机命令行操作截图(“SqlLocalDB h” 可以查看参数如何使用

Visual Studio 2017 使用低版本 SQL LocalDB

打开VS2017创建数据库再看看,版本号已经是12.0.2000,按前面的步骤链接程序和数据库并编译。

Visual Studio 2017 使用低版本 SQL LocalDB

x86虚拟机运行结果如下图。

Visual Studio 2017 使用低版本 SQL LocalDB

总结:生命在于折腾,不死不休!哈哈!