如果数据库达到SQL Server Compact Edition的4GB限制会发生什么?这有特殊的例外吗?
我可以安全地捕获此事件或异常,并且假设创建一个新数据库吗?
我开发了一个可以在线和离线模式下运行的Windows C#应用程序.
在联机模式下,它连接到SQL Server.在脱机模式下,它连接到本地数据库.
我使用Microsoft Sync Framework 2.1按需同步2个数据库.
到目前为止,我使用SQL Server的LocalDB实例作为本地数据库.但是在我的应用程序的安装过程中自动设置系统是一件痛苦的事.所以我尝试使用非常容易分发的SQL Server Compact 3.5或4.0(来自单个文件).
但我甚至无法编译Compact DB的配置代码:
DbSyncScopeDescription scopeDesc = new DbSyncScopeDescription("MyScope");
SqlCeConnection clientConn = new SqlCeConnection(OfflineConnectionString);
var clientProvision = new SqlCeSyncScopeProvisioning(clientConn, scopeDesc);
clientProvision.Apply();
Run Code Online (Sandbox Code Playgroud)
我之前使用过(没有Ce类)但SqlCeSyncScopeProvisioning无法解决.
这里有些非常错误.
如何同步我的CompactDB以将其作为本地数据库分发?
c# sql-server synchronization sql-server-ce microsoft-sync-framework
是否需要定期压缩SQL CE数据库?汽车会缩水吗?我们的平均数据库大小约为100Mb,大型用户达到400-500Mb(但这些非常罕见).如果我们必须手动压缩,我们如何判断应该何时应该?有没有办法以编程方式告诉碎片级别或浪费空间的百分比?如果没有,我们可以使用什么其他门槛?
该产品的早期版本是基于(喘气)MS Access数据库构建的,因此我们必须定期进行压缩以保持其正常工作.
我有4个SQL Server 2005数据库,我想转移到SQL CE.我知道我不能保留SProcs,视图和函数(SQL Server Compact和SQL Server之间的差异),但我想保留其他所有内容.
我已经尝试过这个应用程序,SQL Server到SQL Server Compact Edition数据库副本,但它出错了我.我有源,我正在调查它,但我想我会检查并确保我没有使我的ACTUAL目标的解决方案复杂化.
是否有一种简单的,可以一次性的方式将标准SQL转换.mdf为SQL CE .sdf?
现在我最好的想法是从SQL 2005 Standard中将Replication设置为SQL CE.
我正在尝试将使用LIKE关键字的搜索查询与通配符进行参数化.原来的sql有这样的动态sql:
"AND JOB_POSTCODE LIKE '" + isPostCode + "%' "
Run Code Online (Sandbox Code Playgroud)
所以我试过这个,但是我得到了一个FormatException:
"AND JOB_POSTCODE LIKE @postcode + '%' "
Run Code Online (Sandbox Code Playgroud)
编辑:我想FormatException不会来自Sql Server CE,所以根据要求,这是我在C#代码中设置参数的方法.该参数在代码中设置如下:
command.Parameters.Add("@postcode", SqlDbType.NVarChar).Value = isPostCode;
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
"AND JOB_POSTCODE LIKE @postcode"
Run Code Online (Sandbox Code Playgroud)
同
command.Parameters.Add("@postcode", SqlDbType.NVarChar).Value = isPostCode + "%";
Run Code Online (Sandbox Code Playgroud)
但这不会返回任何结果.谁能建议如何在这个搜索sql中使用参数?
我有SQL Compact Database,其中包含一个IP包头的表.表格如下:
Table: PacketHeaders
ID SrcAddress SrcPort DestAddress DestPort Bytes
1 10.0.25.1 255 10.0.25.50 500 64
2 10.0.25.50 500 10.0.25.1 255 80
3 10.0.25.50 500 10.0.25.1 255 16
4 75.48.0.25 387 74.26.9.40 198 72
5 74.26.9.40 198 75.48.0.25 387 64
6 10.0.25.1 255 10.0.25.50 500 48
Run Code Online (Sandbox Code Playgroud)
我需要执行查询以显示在本地网络上进行的"对话".从A - > B开始的数据包是与来自B - > A的数据包相同的对话的一部分.我需要执行查询以显示正在进行的对话.基本上我需要的是这样的东西:
Returned Query:
SrcAddress SrcPort DestAddress DestPort TotalBytes BytesA->B BytesB->A
10.0.25.1 255 10.0.25.50 500 208 112 96
75.48.0.25 387 74.26.9.40 198 136 72 64
Run Code Online (Sandbox Code Playgroud)
如您所见,我需要查询(或一系列查询)来识别A-> B与B-> A相同并相应地分解字节计数.无论如何我不是SQL大师,但对此的任何帮助都将非常感激.
我正在开发一个简单的软件,它首先使用Entity Framework代码,然后使用sql server compact 4.此时此设置正常运行.实体框架创建sql server压缩文件(如果它尚不存在).数据库的路径是从存储在app.config文件中的连接字符串中定义的.它是这样构建的:
<connectionStrings>
<add name="DataContext"
connectionString="Data source=Database.sdf;"
providerName="System.Data.SqlServerCe.4.0"/>
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
但是,我想将数据库放在当前用户的Application Data文件夹(我的win7机器上的C:\ Users\User\AppData\Roaming文件夹)中的文件夹中.我已经尝试将connectionstring的数据源设置为%APPDATA%\ Database.sdf,但是这不起作用,我得到了"路径中的非法字符"异常.
我想坚持使用connectionstring方法,因为我想为我的单元测试使用不同的数据库而不是我的实际应用程序.这样,通过将app.config文件放在项目的根目录中,可以轻松地修改数据库.
有人能引导我朝着正确的方向前进吗?
我有一个带有Entity Framework 5.0 e Sql Server CE 4.0的.NET4.0应用程序.
我有两个实体,一对多(父/子)关系.我已将其配置为在父删除时级联删除,但由于某种原因它似乎不起作用.
这是我的实体的简化版本:
public class Account
{
public int AccountKey { get; set; }
public string Name { get; set; }
public ICollection<User> Users { get; set; }
}
internal class AccountMap : EntityTypeConfiguration<Account>
{
public AccountMap()
{
this.HasKey(e => e.AccountKey);
this.Property(e => e.AccountKey).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
this.Property(e => e.Name).IsRequired();
}
}
public class User
{
public int UserKey { get; set; }
public string Name { get; set; }
public Account Account { get; set; …Run Code Online (Sandbox Code Playgroud) 我在控制台应用程序中有以下C#代码.
每当我调试应用程序并运行query1(将新值插入数据库)然后运行query2(显示数据库中的所有条目)时,我可以看到我插入的新条目清楚.但是,当我关闭应用程序并检查数据库中的表(在Visual Studio中)时,它就消失了.我不知道它为什么不能保存.
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlServerCe;
using System.Data;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
try
{
string fileName = "FlowerShop.sdf";
string fileLocation = "|DataDirectory|\\";
DatabaseAccess dbAccess = new DatabaseAccess();
dbAccess.Connect(fileName, fileLocation);
Console.WriteLine("Connected to the following database:\n"+fileLocation + fileName+"\n");
string query = "Insert into Products(Name, UnitPrice, UnitsInStock) values('NewItem', 500, 90)";
string res = dbAccess.ExecuteQuery(query);
Console.WriteLine(res);
string query2 = "Select * from Products";
string res2 = …Run Code Online (Sandbox Code Playgroud) 为什么不推荐使用SQL Server CE以及Microsoft将替代便携式数据库(或将会是什么)?LocalDB需要本地.msi安装,SQlite需要第三方绑定到ADO.NET.在Visual Studio中工作,我更喜欢Microsoft解决方案.鉴于便携式数据库的重要性日益增加,我很好奇为什么SQL Server CE被删除而没有被Microsoft承诺替换.