如何阻止 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 到 4.0 C#
将 SQL Server CE 数据库 (.sdf) 从 3.5 更新到 4.0