我正在使用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分钟),这可能会导致问题。
答案 0 :(得分:2)
我放弃了解决问题,放弃了SQL Mobile Replication,转而使用Web服务实现自己的同步界面:¬(
答案 1 :(得分:2)
我收到了这个确切的错误。实际问题是IIS池超时!因此,数据库越大,客户端处理的速度越慢越慢,直到它使设备处理超过20分钟才导致池会话超时,以便当下一个请求到来时后端会阻塞。因此,一种选择是增加超时。但!!我使用的解决方案是增加客户端的进程缓冲区,如下所述:
工作的帖子另外一个有趣的想法是你可以在PC上进行一次合并,然后将该文件部署到设备上,显然可能不适合你的场景。