Visual Studio 2008搭配64位SQL Server遇到的问题和解决
这应该是一个老问题了,微软早在SQL Server 2005版的时候就给出了解答,可是由于解决这个问题的关键补丁直至今日既没有集成到Visual Studio 2008 SP1,也没有作为自动更新或者下载中心单独下载的补丁提供。而是需要用户联系微软客户支持部门索取才可以获得。因此到了SQL Server 2008 SP1 + Visual Studio 2008 SP1,依然存在。不过由于64位系统和相关软件兼容性的问题,以前这个问题遇到的人并不算多。但是Windows 7发布的时候,64位系统兼容性已经大大改善,大内存支持的问题也促使更多的人考虑选择64位操作系统。我也在这个时候终于第一次遇到了Visual Studio 2008搭配64位SQl Server Express的这个兼容性问题。本文对该问题做具体介绍,并提供我解决问题的办法。
首先,描述一下问题。微软官方对此问题的描述:
连接到一个 64 位实例时的 Microsoft SQL Server Express 2008 使用 Visual Studio 2008 Service Pack 1 (SP 1),您可能会收到以下错误信息:
SQL Server 文件 (*.mdf) 的连接要求 SQL Server Express 2005 才能正常工作。 请验证 URL 中的下载的组件的安装:
http://go.microsoft.com/fwlink/?LinkId=49251 (http://go.microsoft.com/fwlink/?LinkId=49251)
请注意 从 64 位计算机连接到 SQL Server Express 2008 一个 32 位实例时不会发生此问题。
界面截图如下:
这个问题在32位SQL Server里也有人遇到,不过问题的原因和解决方法都不同,32位系统下有可能是实例名设置不匹配、临时文件有问题等原因。但是在64位系统下,就算那些问题统统查过并且修正之后,依然无法解决。因此必须依赖于微软的单独提供的补丁才可以。
为了避免其它原因造成相同或相似的问题,我从安装开始,讲一下整个过程:
- 下载 SQL Server 2008 EXPRESS 版本(带高级服务的也可以,我这里以带高级服务的版本为例),解压到 X:\SQLEXPRADV_x64_ENU。“X:\”代表你电脑上任意盘符。
- 以管理员身份运行命令提示行 cmd.exe 。
- 切换到刚才解压的目录,带参数运行setup.exe,例如:
setup.exe /ACTION=INSTALL /INSTALLSHAREDWOWDIR="C:\Program Files (x86)\Microsoft SQL Server" /INSTALLSHAREDDIR="C:\Program Files\Microsoft SQL Server"
说明:这里 INSTALLSHAREDWOWDIR代表32位共享组件安装目录,INSTALLSHAREDDIR代表64位共享组件安装目录。如果你想在安装过程中修改默认安装路径,必须带参数启动安装程序,否则会遇到未指定共享组件安装路径的错误提示。网上的大部分文章建议先用默认选项安装,到最后一步退出,然后修改config文件,再加载config文件来进行安装。该方案可行,但是太麻烦了。
- 按照安装向导一步一步进行安装,你可以进行路径和组件的自定义,但是强烈建议不要勾选Business Intelligence Development Studio组件,因为即使你选了,该组件也会安装失败,必须在安装完SQL Server 2008 SP1以后回来再装才能安装成功。如果你选了,那么安装最后提示该组件安装失败也没关系,其它的已经安装成功。
- 自定义安装选项的话,在定义运行帐户、默认语言等的那个界面,千万不要启用 Filestream 访问,否则即使打了专用补丁,你仍然会遇到在Visual Studio 2008中直接添加SQL Server 数据库失败的问题,同样是由于启用用户实例失败,但是Filestream造成的那个错误暂时无解,所以不要选择。
- 成功安装SQL Server 2008之后, 继续安装 SQL Server 2008 SP1,这个没有什么要注意的,同意协议下一步就行了。
- 安装完SQL Server 2008 SP1以后,现在可以再运行一次带高级服务的SQL Server 2008 Express安装包来安装Business Intelligence Development Studio了(如果你需要的话),但是 Filestream 访问还是不能选。
- 全部安装完以后,就需要微软用于解决64位SQL Server Express不能在Visual Studio 2008 中直接添加SQL数据库的补丁 VS90SP1-KB957944-x86 了。微软关于该补丁的描述见 http://support.microsoft.com/default.aspx/kb/957944 ,不过没必要听他们的去打电话或者发邮件向客服申请,直接到这个地址:http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=957944 ,填写你的Email并提交申请,最多2分钟之后,你就会收到微软发来的下载地址和解压密码。不过这个地址没多久就会失效。如果没有保存,下次再需要的时候还得再次申请。
- 安装好补丁Kb957944,检查Visual Studio 2008的“工具 | 选项 | 数据库工具”下的“数据连接”和“设计时验证数据库(Design-time Validation Database)”两个选项,里面都有SQL实例名,要和你安装的实例名相同。另外还要检查你的SQL服务配置,是否已经启用了Named Pipe。
- .现在试试看在你的.NET项目中直接添加SQL Server 数据库,应该可以正常工作了。
希望本文对遇到此问题的朋友能有所帮助。
本文首发地址:http://wukangrui.net/2009/05/24/sql-express-2008-x64-integration-with-visual-studio-2008-sp1.html