我如何部署Microsoft SQL Server Compact 4.0?
SQL Server Compact Edition(目前版本为4.0)是:
免费的嵌入式数据库,软件开发人员可以使用它来构建Windows桌面应用程序.它占用空间小,支持在应用程序文件夹中私有部署其二进制文件.
但是你如何实际部署呢?
问题是除非已注册,否则无法使用ADO OLEdb提供程序.注册OLEdb提供程序必须以管理员身份完成.这意味着SQL Server Compact版本将失败,而非管理员用户.
SQL Server Compact 4.0附带一个redist_enu.txt文件:
列出的.exe文件每个都将其附带的组件安装到目标计算机上的特定位置.这有助于确保可维护性和技术支持.这些.exe文件中包含的.dll文件也可以在此redist.txt中单独使用.但是,这些单独的.dll的分发可能会导致可维护性问题.有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=94589
通过BreadCrumb进行私有部署检测:不支持通过Assembly.LoadFrom(),.local文件或使用DLL/COM重定向策略显式加载本机堆栈和显式加载SQL Server Compact Assembly,可能导致可维护性问题.有关详细信息,请参阅http://support.microsoft.com/kb/835322和http://msdn2.microsoft.com/en-us/library/aa375142.aspx
Microsoft SQL Server Compact 4.0
SSCERuntime_x86-ENU.exe
SSCERuntime_x86-DEU.exe
SSCERuntime_x86-FRA.exe
SSCERuntime_x86-
JPN.exe SSCERuntime_x86-RUS.exe
SSCERuntime_x86-ESN.exe
SSCERuntime_x86-ITA.exe
SSCERuntime_x86-KOR.exe
SSCERuntime_x86-CHT.exe
SSCERuntime_x86-CHS.exe
SSCERuntime_x64-ENU.exe
SSCERuntime_x64-DEU.exe
SSCERuntime_x64-FRA.exe
SSCERuntime_x64-
JPN.exe SSCERuntime_x64-RUS.exe
SSCERuntime_x64-ESN.exe
SSCERuntime_x64-ITA.exe
SSCERuntime_x64-KOR.exe
SSCERuntime_x64-CHT.exe
SSCERuntime_x64-CHS.exe
sqlcese40.dll
sqlceqp40.dll …
我正在使用Visual Studio 2008 Pro.
我可能在这里遗漏了一些非常明显的东西,但我一直在努力让Sql Server compact 4的CTP在我的asp.net mvc应用程序中运行.我可以找到没有关于如何设置它或一个工作示例应用程序的说明.我的目标是私有安装,所以我可以将它包含在我的网络应用程序中,而无需在我的域托管上进行sql server设置.这真的只是我拍摄微风并试图解决这个问题.我不打算举办市场或其他任何事情.
所以,我已经将基本4.0方向安装的所有dll(c:\ Program Files\Sql Server compact\v4.0)复制到我的应用程序中的lib文件夹中.我已将副本设置为输出方向选项为'Copy if Newer'.然后,我引用System.Data.SqlServerCE dll并将"Copy Local"设置为True.
我通过Sql Studio Express创建了一个sdf文件.一个重要的注意事项是我没有看到创建此文件的CE 4.0版本的选项,因此它是使用CE 3.5创建的.我创建了几个表,向这些表添加几行,将*.sdf文件复制到我的App_Data目录.值得一提的是,从VS 2008内部来看,这个文件永远不会出现在我的项目中,但它确实存在于App_Data目录的物理位置.我不确定为什么会这样.
接下来,我只是尝试通过以下方式与我的sdf文件建立基本连接:
SqlCeConnection conn = new SqlCeConnection("DataSource=rpg.sdf");
Run Code Online (Sandbox Code Playgroud)
这会产生以下错误:
Unable to load the native components of SQL Server Compact corresponding to the ADO.NET provider of version 8402. Install the correct version of SQL Server Compact. Refer to KB article 974247 for more details.
Run Code Online (Sandbox Code Playgroud)
我想从这里开始,我只是尝试让Sql CE 3.5工作.我将本地安装的Sql CE 3.5升级到sp2.我在基本位置复制dll(c:\ Program Files\Sql Server compact\v3.5),包括从我的项目引用中删除和读取System.Data.SqlServerCE dll的版本.
这里奇怪的是当我右键单击并查看引用的SqlServerCE dll的属性时,它总是说它的版本是4.0.0.1.
伙计们,我真的可以在这里使用一些方向.我搜索了堆栈溢出,帮助文档,在线书籍和谷歌搜索.我真的没有找到任何从CE 3.5或4.0的顶部采取这个,并告诉我究竟要添加什么dll,在哪里放置它们,如何引用它们,如何将.sdf文件添加到我的项目中,连接到它,并从中查询.我确实遇到过一些IBuySpy门户示例应用程序的提及应该使用Sql …
我完全按照以下帖子:
在具有MVC 3的远程主机上使用SQL Server CE 4
我仍然收到以下错误:
无法加载与版本8482的ADO.NET提供程序对应的SQL Server Compact的本机组件.安装正确版本的SQL Server Compact.有关更多详细信息,请参阅知识库文章974247.
我做了什么:
Fresh File - >新的ASP.NET MVC 3应用程序.通过NuGet添加了EFCodeFirst.SqLServerCompact v0.8.8482.1,它添加了必要的包.
本地一切都很棒.我通过Git构建/清理/重建并提交整个解决方案并推送到AppHarbor.所有未触及SQL CE的页面都按预期工作.当我尝试加载与SQL CE通信的页面时,我看到附加的异常:

以下是我安装的软件包:

下面是我的Bin目录:
