Потеря данных в SQL Server 2008 с репликацией CE - PullRequest
0 голосов
/ 27 июля 2010

Я использую репликацию SQL Server 2008 CE и, похоже, испытываю некоторую потерю данных (т.е. записи не появляются в базах данных CE после полной синхронизации).

Я получаю следующие записи в журнале приложения:

Подсистема слияния репликации-репликации: сбой агента 0033007B-0043-0039-4400-440036003300. Внутренняя ошибка: операция чтения с устройства или сервера IIS вернула неверное количество байтов при попытке обработать запрос синхронизации. [,,,,,]

Подсистема слияния репликации-репликации: агент 0045007B-0038-0037-3200-430036004200 не выполнен. Внутренняя ошибка: либо на компьютере с IIS недостаточно памяти, либо в запросе был отправлен неверный идентификатор сеанса. [Session id ,,,,,]

Подсистема слияния репликации-репликации: сбой агента 0033007B-0043-0039-4400-440036003300. Проверка количества строк таблицы не удалась. Попробуйте ресинхронизировать. [,,,,,]

Подсистема слияния репликации-репликации: сбой агента 0043007B-0036-0044-4400-320032003000. Процесс слияния не смог инициализировать подписку. Убедитесь, что регистрация подписки существует у издателя, и при необходимости зарегистрируйте подписку.

Подсистема слияния репликация-репликация: сбой агента 0036007B-0037-0042-4500-370036003600. Ошибка аутентификации на компьютере с IIS. [,,,,,]

Похоже, что сообщения указывают на то, что IIS не хватает ОЗУ. Он использует около 22 МБ, а W3WP - около 70 МБ. SQL Server использовал большую часть оставшихся 4 ГБ оперативной памяти. На диске достаточно места. Эти ошибки появляются каждые несколько часов в журнале событий.

Любые предложения будут с благодарностью.

Обновление

Добавление дополнительной оперативной памяти к машине помогло решить проблему (и исключения из нехватки памяти исчезли), однако у меня все еще есть проблемы.

Похоже, что некоторым пользователям требуется очень много времени для запуска задачи «проверки данных» в базе данных до синхронизации (я говорю> 20 минут), что может быть причиной этой проблемы.

Ответы [ 2 ]

2 голосов
/ 24 июня 2013

Я получил эту точную ошибку. Актуальной проблемой был тайм-аут пула 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

Также одна интересная мысль заключается в том, что вы можете выполнить слияние на ПК один раз, а затем развернуть этот файл на устройствах, что, очевидно, может не соответствовать вашему сценарию.

2 голосов
/ 19 октября 2010

Я отказался от решения проблемы и отказался от репликации SQL Mobile в пользу реализации собственного интерфейса синхронизации с использованием веб-служб: ¬ (

...