SQL Server CE不能从其他进程获取更新

本文关键字:进程 获取 更新 其他 Server CE 不能 SQL | 更新日期: 2023-09-27 18:15:08

我有两个进程连接到同一个SQL CE .sdf数据库文件。一个将项插入到表中,另一个从表中读取所有记录。插入后,我可以用服务器资源管理器确认行在那里,但我从第二个进程的查询没有显示它们:

this.traceMessages.Clear();
SqlCeCommand command = new SqlCeCommand("SELECT AppName, Message, TraceId FROM Messages", this.connection);
using (var reader = command.ExecuteReader())
{
    while (reader.Read())
    {
        this.traceMessages.Add(
            new TraceMessage
            {
                AppName = reader.GetString("AppName"),
                Message = reader.GetString("Message"),
                TraceId = reader.GetString("TraceId")
            });
    }
}

它通常可以正确加载第一次,但不拿起更新,即使在重新启动进程。连接字符串只有一个简单的Data Source,我已经确认它在两个进程中指向相同的文件。

有人知道为什么会这样吗?是否有一些设置我可以启用从单独的进程获得更新工作?

SQL Server CE不能从其他进程获取更新

这是因为与"传统"数据库不同,您写入的数据不会立即刷新到磁盘,而是延迟到一段时间后再执行。

你在写作程序中有两个选择:

1)将刷新间隔参数添加到连接字符串并将其设置为1。在将数据刷新到sdf之前,这将有最多一秒的延迟。

2)当你调用Commit时,使用参数化的重载,它允许你指定CommitMode.Immediate。这将立即将数据刷新到磁盘。