将SQL Server Compact用于桌面应用程序是否有意义?
我有两张桌子.indRailType包含与我在其他表中使用的ID值配对的名称列表,以指示导轨类型.WO_BreakerRail包含日期列和轨道代码列,对应于相同的代码indRailType和其他一些数据.WO_BreakerRail对于每个日期,每种铁路类型的任何活动都有一排.所以我可以有3行日期3/19/2010,每行表示不同的轨道代码,以及发生了什么.
当我使用以下内容时LEFT OUTER JOIN,我得到一个包含所有类型轨道的表,在19行中没有任何事情发生的行中有空值.现在,这只是起作用,因为我现在只有一个日期表示在我的WO_BreakerRail表中,即19日.当我添加更多具有不同日期的行时,事情会变得混乱.
这是我的SQL语句,它现在给出了我想要的结果:
SELECT WO_BreakerRail.ID, indRailType.RailType, WO_BreakerRail.CreatedPieces,
WO_BreakerRail.OutsideSource, WO_BreakerRail.Charged,
WO_BreakerRail.Rejected, WO_BreakerRail.RejectedToCrop
FROM indRailType
LEFT OUTER JOIN WO_BreakerRail
ON indRailType.RailCode = WO_BreakerRail.RailCode
Run Code Online (Sandbox Code Playgroud)
现在,当我添加一个WHERE WO_BreakerRail.Date = @Date子句时,我会丢失所有JOIN没有发生的行.我不希望这样.从阅读起,听起来像是OUTER JOIN我想要的全部,但SQL Server Compact Edition不支持FULL OUTER JOINs.有没有办法解决这个问题,还是我正在寻找其他的东西?
这不是查询.它总结了我们解决SQL Compact数据库文件中的损坏问题的解决方案,几乎取得了一定的成功.SQLCE腐败是一个非常普遍的问题.我们从StackOverflow的早期帖子中获得了巨大的帮助,因此这篇文章.
我们的产品是一个3层架构,服务器作为Windows服务运行,通过.Net Remoting连接到Rich Clients.我们的产品从2006年开始使用SQLCE.我们已经从v3.1升级到v3.5,现在升级到v4.0.我们为一些非常具体的要求提供了自定义OR映射工具.我们遇到了v3.1的有限问题,我们在v3.5和v4.0上遇到了更多问题.
最初使用v3.5,我们实现了SqlCeEngine.Repair.但它只会丢弃损坏的数据,并尝试重新创建一个稳定的数据库.我们发现受影响的桌子的外键丢失了.我们必须立即废除这一点.我们开始向用户通知数据库损坏,并恢复上次备份.这只能暂时缓解; 腐败问题仍然存在.
今年,我们采用了v4.0.但是,我们的应用程序还引入了几个新功能,极大地增加了数据库调用的数量.v4.0开始很好,但在软件使用量增加时开始出现问题.应用程序运行时发生的损坏不会导致Windows崩溃,异常关闭或磁盘问题.数据库刚刚损坏.
下一篇文章介绍了我们针对此问题设计的解决方案:
我确实包含了System.Data.SqlServerCedll,放入using System.Data.SqlServerCe;了我的代码,但是当我打开.NET页面时,我得到:
名称空间'System.Data'中不存在类型或命名空间名称'SqlServerCe'(您是否缺少程序集引用?)
我不知道如何解决这个问题.提前致谢.
我在使用SQL Compact的桌面应用程序中使用Entity Framework 4.我想在我的应用程序中使用SQL Compact 的私有安装,这样我的安装程序就可以安装SQL Compact而无需为用户提供第二次安装.它还避免了版本化的麻烦.
我的开发机器安装了SQL Compact 3.5 SP1作为公共安装,所以我的应用程序在那里运行良好,正如人们所期望的那样.但它没有在我的测试机上运行,它没有安装SQL Compact.我收到此错误:
The specified store provider cannot be found in the configuration, or is not valid.
Run Code Online (Sandbox Code Playgroud)
我知道有些人在SQL Compact私有安装方面遇到了困难,但我已经使用了一段时间了,我真的很喜欢它们.不幸的是,我的常规私人安装方法不起作用.我已经检查了我的SQL CE文件上的版本号,它们都是3.8.8078.0,这是SP2 RC版本.
以下是我在私人安装中包含的文件:
我已经将System.Data.SqlServerCe的引用添加到我的项目中,并且我已经验证上面列出的所有文件都被复制到安装机器上的应用程序文件夹中.
以下是我打开SQL Compact文件时用于配置EntityConnectionStringBuilder的代码:
var sqlCompactConnectionString = string.Format("Data Source={0}", filePath);
// Set Builder properties
builder.Metadata = string.Format("res://*/{0}.csdl|res://*/{0}.ssdl|res://*/{0}.msl", edmName);
builder.Provider = "System.Data.SqlServerCe.3.5";
builder.ProviderConnectionString = sqlCompactConnectionString;
var edmConnectionString = builder.ToString();
Run Code Online (Sandbox Code Playgroud)
我错过了一个文件吗?我是否错过了告诉Entity Framework在哪里找到我的SQL Compact DLL所需的配置步骤?任何其他建议为什么EF没有在安装机器上找到我的SQL Compact DLL?谢谢你的帮助.
我打算在一个小型的生产网站上使用SQL CE 4.0,我想知道SQL CE 4.0可以处理多少负载:
在我的项目中,我使用SQL CE 3.5数据库与实体框架,并遵循 这篇文章, 但我有这个例外:
无法加载与版本8080的ADO.NET提供程序对应的SQL Server Compact的本机组件.安装正确版本的SQL Server Compact.有关更多详细信息,请参阅知识库文章974247.
所有细节
System.Data.SqlServerCe.SqlCeException was unhandled
Message=Unable to load the native components of SQL Server Compact corresponding to the ADO.NET provider of version 8080. Install the correct version of SQL Server Compact. Refer to KB article 974247 for more details.
Source=""
HResult=-1
NativeError=-1
StackTrace:
at System.Data.SqlServerCe.NativeMethods.LoadNativeBinaries()
at System.Data.SqlServerCe.SqlCeConnection..ctor()
at System.Data.SqlServerCe.SqlCeProviderFactory.CreateConnection()
at System.Data.EntityClient.EntityConnection.GetStoreConnection(DbProviderFactory factory)
at System.Data.EntityClient.EntityConnection.ChangeConnectionString(String newConnectionString)
at System.Data.Objects.ObjectContext..ctor(String connectionString, String defaultContainerName)
at DAL.OimDBEntities..ctor()
at DAL.OimRepository..ctor()
at Microsoft.Rtc.Collaboration.Sample.SubscribePresenceView.UCMASampleSubscribePresenceView.Subscribe()
at Microsoft.Rtc.Collaboration.Sample.SubscribePresenceView.UCMASampleSubscribePresenceView.Run()
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, …Run Code Online (Sandbox Code Playgroud) 我最近一直在尝试节省机器上的空间,并开始使用TreeSize来分析文件夹结构/大小
这让我发现很多我的Visual Studio项目里面都有SDF文件.在一种情况下,app文件夹是80Mb,其中50Mb是此SDF文件.此应用程序不使用SQL Server Compact(尽管它有一个SQLite数据库).SDF文件未出现在Visual Studio的项目文件中.
这些文件来自哪里,是否可以安全删除?
我有这个数据库:
abcDEF
ABCdef
abcdef
Run Code Online (Sandbox Code Playgroud)
如果我写: select * from MyTbl where A='ABCdef'
如何获得: ABCdef
以及如何获得:
abcDEF
ABCdef
abcdef
Run Code Online (Sandbox Code Playgroud)
提前致谢
忘了写 - sqlCE
我使用Sql Compact3.5作为我的数据库与C#.NET我可以给出的最大sdf大小是多少?有没有办法以编程方式增加sdf文件的最大大小?如果是这样的???
sql-server-ce ×10
c# ×3
sql-server ×2
asp.net ×1
corrupt ×1
corruption ×1
filesize ×1
join ×1
sql ×1