VS2008连接SQL Server数据库文件出错的解决方案
有园子里的朋友问到一个问题:系统上安装的是vs2008+Sql 2005 developer(没有安装Sql server 2005 Express )
用代码直接连SQL Server服务器没有问题,但在项目中数据源改用SQL Server数据库文件时出错,提示错误如下:
“与SQL Server文件(*.mdf)的连接要求安装SQL Server2005才能正常工作,请确认是否安装了该组件,……”
英文版为“Connections to SQL Server Files (*.mdf) require SQL Server Express 2005 to function properly. Please verify the installation of the component or download from the URl: http:go.microsoft.com/fwlink/?linkID=49251.”
如图:
![](http://3ctoxa.blu.livefilestore.com/y1pBNuyeEfSIT7pGbyWLjGhpbCNOcm8McXGi98DfpBv_XpLc5JgFSX08Iy2xbbQwldL3q-hHAOBE1nC2-EzF5kd5Q/mdf000.png)
如果是因为实例名的问题,请先查看这个
http://www.cnblogs.com/downmoon/archive/2007/12/29/1019264.html
我机器上装的是Vs2008 Team suite Sp1+sql server 2008 enterprise,尝试配置连接SQL Server数据库文件时出错同上图。
奇怪,难道数据库连接方式必须安装SQL server 2005 Express??
查看msdn等,没有看到有此限制,
http://www.microsoft.com/china/sql/prodinfo/features/compare-features.mspx
http://technet.microsoft.com/zh-cn/library/ms143761%28SQL.90%29.aspx
也看到有些文章
http://social.msdn.microsoft.com/Forums/en-US/sqlsetupandupgrade/thread/6503fe05-4d05-49e7-8c2a-b9778ab7e9b8
最后抱着试一试的想法,看看是否是因为数据库已附加到SQL server ,
尝试将示例文件,AdventureWorksLT2008_Log.mdf脱机
(注示例文件官方下载http://www.codeplex.com/Wiki/View.aspx?ProjectName=SqlServerSamples)
再连接,居然成功了!
连接过程如图:
![](http://3ctoxa.blu.livefilestore.com/y1pBNuyeEfSIT6Kcj04mwKHmdmW5C4hYpKaUDguag6Udh_E7osZwVczNS-YaSXLjcu78TxI6N38DrSSIfdMYjaxLw/Vs2008_SQLServerFile01.png)
![](http://3ctoxa.blu.livefilestore.com/y1pCWzN60Op_ItQuEYBZkTBJ49G5_aoha5cOdyIkzOdDGIrhEOUEJMmBTZ_PCdL1WLiM3SBK6x2LcGw4IgiogXt4g/Vs2008_SQLServerFile02.png)
![](http://3ctoxa.blu.livefilestore.com/y1pq6_ytaHWaZjYTZNX1oZ6yEn4JLFWo9N--Ae5kszU4HnECqEC48twRD3xGiawA4KDaMoXtXk2IWc0Y2Ftw6K5ig/Vs2008_SQLServerFile04.png)
![](http://3ctoxa.blu.livefilestore.com/y1pu4cu__p0eXDpuEnwiSGH7CVYmvBs7FOJ3nuKw53eyRNZBeYaSPPupfScPmwI5yK5gOptKBjYSc4WAE12RfdiLw/Vs2008_SQLServerFile05.png)
![](http://3ctoxa.blu.livefilestore.com/y1pfHk59XOSqud9L_RLkR6gn8WQfa1RnVlh9RHXDCU0b8q9lmMNmugBkcKHWPNXG2NoWEKgsgmoD3kVterzRWR7Ig/Vs2008_SQLServerFile10.png)
![](http://3ctoxa.blu.livefilestore.com/y1pSoxqdOudvyQbmH_8Kwx0aRIFsNg1ydbIfcNmr-E4a1J5Ms2jpJiiimIthg4rAiltx3P0IU2mQLpRcXpEx4DdCA/Vs2008_SQLServerFile11.png)
![](http://3ctoxa.blu.livefilestore.com/y1pSoxqdOudvySJxEDDbqiOgh5hntPF5B2ttRN2KK8dvCn7kA6TmN_D4ytzrNGRNnh53-KwkJO41yyXSrXlx0JDnA/Vs2008_SQLServerFile12.png)
![](http://3ctoxa.blu.livefilestore.com/y1pKbE-zKniWCvEIzlCuiyEvkZtfhc4Pq6vhscpth0yBMw2jUaAl2Hyl0-lvJDlniklwPm9mOYBHl6S8AN3LS9N1A/Vs2008_SQLServerFile15.png)
需要注意的是:
脱机后,改用mdf文件直接连接,原来的逻辑文件AdVentureworksLT08.mdf对应的log文件自动失去关联,而产生了一个新的log文件,你可以关注一下数据库具体的位置,是一个mdf文件和两个log文件。
AdventureWorksLT2008_Data.mdf
AdventureWorksLT2008_Log.ldf
AdventureWorksLT2008_Data_log.ldf(这个文件是新增的,改用mdf文件添加后,原来的log文件不再起作用,感觉是换了新的连接方式和新的存储机制。)
邀月总结:
这种连接方式可能还是传统的连接方式来得可靠,可能涉及全文检索,性能优化等诸多问题。以后再慢慢研究