如何阻止 SQL Server CE 3.5 更改跟踪表无限增长?

Posted

技术标签:

【中文标题】如何阻止 SQL Server CE 3.5 更改跟踪表无限增长?【英文标题】:How to stop SQL Server CE 3.5 change tracking table from growing infinitely? 【发布时间】:2013-10-29 14:52:26 【问题描述】:

我们使用 Microsoft Sync Framework 2.1 在 SQL Server 数据库和 SQL Server CE 3.5 数据库之间进行同步。似乎正在发生的事情是更改跟踪专用表正在 SQL Server CE 数据库中填充,直到文件达到其最大大小然后失败。

表格是__sysOCSDeletedRows。服务器上启用了更改跟踪。有谁知道我们是否可以关闭 CE 数据库上的更改跟踪,或者是否有一些同步选项可以防止该表增长?

我们只在一个方向同步,除了通过同步之外,从不写入 CE 数据库。

编辑:我在原始帖子中弄错了违规表格。

【问题讨论】:

【参考方案1】:

您使用的是哪个同步提供程序?

如果您使用的是 SqlCeSyncProvider,则可以使用 SqlCeSyncStoreMetadataCleanup API

【讨论】:

很遗憾,我们没有使用该提供商。我们正在使用 SqlCeClientSyncProvider。我确实注意到提供程序有一个 RetentionInDays 属性,但它似乎不会影响有问题的表。 您为 RetentionInDays 设置的值是多少?如果该值大于零,则每次同步时,sync fx 都会删除早于保留天数的元数据。 我使用了一个非零值。我似乎无法让它产生任何效果。我在创建对象后立即设置保留。 创建对象后设置是什么意思? 抱歉,我的意思是在实例化 SqlCeClientSyncProvider 之后,我将保留时间设置为 1 天。删除的对象表中没有任何内容被修剪。【参考方案2】:

使用“Max Database Size=4091”连接字符串选项允许数据库大于默认值

【讨论】:

所做的只是延迟不可避免的事情!

以上是关于如何阻止 SQL Server CE 3.5 更改跟踪表无限增长?的主要内容,如果未能解决你的问题,请参考以下文章

Sql Server Ce 3.5 检查约束

SQL Server CE 3.5 SP1 存储过程

SQL Server CE 数据库升级 3.5 到 4.0 C#

将 SQL Server CE 数据库 (.sdf) 从 3.5 更新到 4.0

为啥我的 LINQ INSERTS 没有在 SQL Server CE 3.5 中持续存在?

Sql Server CE 3.5 和 .NET Compact Framework 2.0 SP2