【问题标题】:SQL Server 2008 data loss with CE replication带有 CE 复制的 SQL Server 2008 数据丢失
【发布时间】:2010-07-27 12:59:51
【问题描述】:

我正在使用 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 内存不足。它使用大约 22 MB,而 W3WP 使用大约 70 MB。 SQL Server 已消耗了剩余 4 GB RAM 的大部分。有足够的磁盘空间。这些错误每隔几个小时就会在事件日志中发生一次。

任何建议将不胜感激。

更新

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

某些用户似乎需要很长时间才能在同步之前在数据库上运行“数据验证”任务(我说的是超过 20 分钟),这可能是导致问题的原因。

【问题讨论】:

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


    【解决方案1】:

    我得到了这个确切的错误。实际问题是 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 上进行一次合并,然后将该文件部署到设备上,显然可能不适合您的场景。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多