CE复制导致SQL Server 2008数据丢失

时间:2010-07-27 12:59:52

标签: sql-server-2008 windows-ce replication

我正在使用SQL Server 2008 CE复制,并且似乎正在遭受一些数据丢失(即完全同步后记录未出现在CE数据库中)。

我在应用程序日志中收到以下条目:

复制 - 复制合并子系统:代理0033007B-0043-0039-4400-440036003300失败。内部错误:尝试处理同步请求时,设备或IIS服务器的读取操作返回了错误的字节数。 [,,,,,]

复制 - 复制合并子系统:代理0045007B-0038-0037-3200-430036004200失败。内部错误:运行IIS的计算机内存不足或请求中发送的会话ID不正确。 [会话ID ,,,,,]

复制 - 复制合并子系统:代理0033007B-0043-0039-4400-440036003300失败。表行计数的验证失败。尝试重新同步。 [,,,,,]

复制 - 复制合并子系统:代理0043007B-0036-0044-4400-320032003000失败。合并过程无法初始化订阅。确保发布者存在订阅注册,并在必要时重新注册订阅。

复制 - 复制合并子系统:代理0036007B-0037-0042-4500-370036003600失败。运行IIS的计算机上的身份验证失败[,,,,,]

消息似乎表明IIS正在耗尽RAM。它使用大约22 MB,而W3WP使用大约70 MB。 SQL Server消耗了大部分剩余的4 GB RAM。有足够的磁盘空间。事件日志中每隔几个小时就会发生这些错误。

任何建议都将不胜感激。

更新

向机器添加更多RAM有助于解决问题,(并且内存异常已经消失)但是,我仍然遇到问题。

对于某些用户来说,在同步之前在数据库上运行“数据验证”任务似乎需要很长时间(我说话时间> 20分钟),这可能会导致问题。

2 个答案:

答案 0 :(得分:2)

我放弃了解决问题,放弃了SQL Mobile Replication,转而使用Web服务实现自己的同步界面:¬(

答案 1 :(得分:2)

我收到了这个确切的错误。实际问题是IIS池超时!因此,数据库越大,客户端处理的速度越慢越慢,直到它使设备处理超过20分钟才导致池会话超时,以便当下一个请求到来时后端会阻塞。因此,一种选择是增加超时。但!!我使用的解决方案是增加客户端的进程缓冲区,如下所述:

http://blogs.msdn.com/b/sqlblog/archive/2009/06/24/performance-tips-for-faster-download-of-a-large-sql-compact-3-5-database-via-replication.aspx

这是我通过此http://social.msdn.microsoft.com/Forums/sqlserver/en-US/f9414df5-f066-450c-8e26-6f4c62a3897a/iis-replication-agent-restarts-replication-never-finishes

工作的帖子

另外一个有趣的想法是你可以在PC上进行一次合并,然后将该文件部署到设备上,显然可能不适合你的场景。