我如何部署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 …
我在winforms App中从sdf数据库加载数据.我使用数据库文件的完整路径.示例:
conn = new SqlCeConnection
{
ConnectionString ="Data Source=F:\\My Documents\\Project1\\bin\\Debug\\Database.sdf"
};
Run Code Online (Sandbox Code Playgroud)
我想使用数据库文件的相对路径.例如.我在文件夹F:\ My Documents\Project1\bin\Debug\Data\file.sdf中有sdf文件,我想在连接字符串中使用相对路径.有什么建议?谢谢.
SQL Server CE 4(SQL Server Compact Edition 4.0)已不是新闻(如果是,您可以阅读本文)
但是看到SQL Server CE 4与其他数据库的性能比较非常有趣.
特别是:
(1)适用于功能相当的应用.
不幸的是,谷歌现在提供的主题并没有那么多链接.实际上我找不到任何(适当的SQL CE版本).
如果可以找到或分享这些信息,我们可以在这里收集它以供将来人道使用.
当我使用sqlce 4.0 with entityframework 6.0时出现以下错误
No Entity Framework provider found for the ADO.NET provider with invariant name 'System.Data.SqlServerCe.4.0'
Run Code Online (Sandbox Code Playgroud)
我的app.config看起来像这样
....
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" requirePermission="false" />
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --></configSections>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" >
<parameters>
<parameter value =" System.Data.SqlServerCe.4.0" />
</parameters>
</defaultConnectionFactory>
<!--providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers-->
</entityFramework>
<connectionStrings> …Run Code Online (Sandbox Code Playgroud) 我想扩展具有数据库功能的WPF应用程序.你会建议哪个数据库引擎?为什么?SQLite,SQL CE,其他?
我想知道表是否有标识列.表格不为我所知.我还没有完成表格的结构.使用查询?
我正在使用Sql Server Compact Edition.
我刚刚将我的主机升级到MVC 3,但我正在尝试使用SQLCE 4.0做一个"hello world",但我得到了:
很抱歉,在执行您的要求时发生了一个错误.
我看到我的布局和一切,但我看到的不是数据.
在localhost上按预期工作
我有:
<add name="PruebaContext" connectionString="Data Source=|DataDirectory|db.sdf" providerName="System.Data.SqlServerCE.4.0"/>
Run Code Online (Sandbox Code Playgroud)
作为connectionString.
我把sdf作为项目的一部分,我将System.Data.SqlServerCE.dll添加到项目中,并将本地副本设置为true.
我没有更多的想法.connString,dll在/ bin中,在localhost中工作.
有任何想法吗?
谢谢.
编辑
我现在有一些日志:
没有/ bin上的"System.Data.SqlServerCE.dll":
无法找到请求的.Net Framework数据提供程序.它可能没有安装.
System.ArgumentException:无法找到请求的.Net Framework数据提供程序.它可能没有安装.
很好.他们没有SqlServerCE4.
使用本地副本上的Dll,AKA/bin:
无法加载与版本8482的ADO.NET提供程序对应的SQL Server Compact的本机组件.安装正确版本的SQL Server Compact.有关更多详细信息,请参阅知识库文章974247.
异常详细信息:System.Data.SqlServerCe.SqlCeException:无法加载与版本8482的ADO.NET提供程序对应的SQL Server Compact的本机组件.安装正确版本的SQL Server Compact.有关更多详细信息,请参阅知识库文章974247.
KB说我需要x86和amd64的dll.我在某处读到了如果我将两个目录复制到/ bin,例如:/ bin/x86和/ bin/amd64.我从SqlServerCE 4安装文件夹的私人文件夹中复制了这些文件夹.现在我得到了:
在ADO.NET提供程序和SQL Server Compact的本机二进制文件之间检测到可能的文件版本不匹配,这可能导致功能不正确.这可能是由于存在多个不同版本的SQL Server Compact实例,或者是由于与SQL Server Compact二进制文件具有相同名称的错误二进制文件.请安装匹配版本的SQL Server Compact二进制文件.
好.在SQLServerCE4的根文件夹上我也有一些dll,所以我删除了这两个文件夹并将该dll复制到/ bin:
无法加载文件或程序集'file:/// C:\ HostingSpaces\jesusrod\foxandxss.net\wwwroot\mvc3\bin\sqlceca40.dll'或其依赖项之一.该模块应该包含一个程序集清单.
我想我尝试过所有的事情.Scottgu说SqlServerCE 4应该可以在没有安装的任何服务器上运行.
我一直在使用SqlCeConnection在C#中使用SQL和数据库.我一直在使用ExecuteReader来读取读入Longs的记录ID的结果和BigInt值.
今天我一直在玩SQL语句,这些语句使用基于COUNT的语句('SELECT COUNT(*)FROM X')并且一直在使用ExecuteScalar来读取这些单值结果.
但是,我遇到了一个问题.我似乎无法将值存储到Long数据类型中,我一直在使用它.我可以将它们存储到Int64中.
我一直在使用BigInt作为记录ID来获取最大可能的记录数.
因此,BigInt 8字节是Int64.不是Long等于Int64,因为它们都是64位有符号整数?
因此,为什么我不能将Int64转换为Long?
long recordCount =0;
recordCount = (long)selectCommand.ExecuteScalar();
Run Code Online (Sandbox Code Playgroud)
错误是:
指定演员表无效.
我可以将BigInt读成Long.这不成问题.我无法读取SQL COUNT到long.
COUNT返回一个Int(Int32),所以问题实际上是将Int32转换为long.
我继承了C#代码,它有很多DateTimes,其中Kind属性是DateTimeKind.Unspecified.它们被送入Datetime.ToUniversalTime(),它返回一个UTC日期时间(在我的情况下它增加了7个小时).这就是ToUniversalTime()的工作原理; 见MSDN.问题是这些DateTime实际上已经是UTC时间.它们被从SQL Server Compact 4.0数据库中取出.它们以UTC格式存储在那里.我的主要问题是:
如果我可以沉迷于后续问题,那将是:
如果我能提供更多详细信息,请通知我.我是这个代码库的新手,仍然让我的大脑围绕它,所以我很难完美地描述这个问题.
戴夫
我正在使用Model First方法开发一个带有Entity Framework 4和SQL Compact 4的应用程序.我已经创建了我的EDM,现在我想生成一个SQL Compact 4.0数据库作为模型的数据存储.我打开Generate Database Wizard并单击New Connection按钮为生成的文件创建连接.将出现" 选择数据源"对话框,但SQL Compact 4.0未列在可用数据源列表中:

我正在运行VS 2010 SP1(测试版),我已经安装了VS Compact Tools for SQL Compact 4.0.我可以从Server Explorer创建SQL Compact 4.0数据连接.只有在生成数据库向导中才会出现4.0选项.顺便说一句,我的SQL Compact 4.0安装包括System.Data.SqlServerCe.Entity.dll.所以我应该有我需要的SQL Compact组件.
我做错了什么,或者这是一个错误?有没有人有修复或解决方法?谢谢你的帮助.
sql-server-ce ×10
c# ×3
sql-server ×2
sqlite ×2
.net ×1
ado ×1
c#-4.0 ×1
connection ×1
datetime ×1
deployment ×1
int32 ×1
int64 ×1
long-integer ×1
performance ×1
sql ×1
string ×1
wpf ×1
xcopy ×1