Мы взяли базу данных SQL 2000. Взял резервную копию со скоростью света. Восстановлен на активном / пассивном кластере SQL 2008. Затем настройте репликацию для репликации данных обратно в SQL 2000. Итак, 2008 является издателем / распространителем, а 2000 выполняет подписку по запросу. Все работает хорошо, за исключением случаев, когда мы получаем поврежденные данные в полях varchar / text на подписчике.
Так, например, у нас есть таблица с 4500 записями. Когда мы запускаем этот оператор:
update MedstaffProvider set Notes = 'Cell Phone: 360.123.4567 Answering Service: 360.123.9876'
where LastName = 'smith'
Запись в базе данных 2008 года обновляется, как и ожидалось. Но в базе данных субрайбер мы получим тарабарщину в поле примечаний:
óPÌ[1] T $Oé[1] ð²ñ. K
Вот что мы знаем:
Мы нашли одно решение, устраняющее проблему. В основном, если мы воссоздадим таблицу в 2008 году (скажем, как MedStaffProvider2), а затем вставим все данные. Отбросьте исходный стол. Переименуйте таблицу в ее исходное имя. Снова настройте репликацию. И запустите точно такой же оператор обновления, как и ожидалось.
Кто-нибудь знает, что здесь может происходить? Или есть какие-то другие методы, которые мы можем использовать для решения этой проблемы? Я нашел решение для этого, но очень хотел бы понять, почему это происходит.
Если вы запускаете SQL Profiler в базе данных распространителя и базе данных подписчика, видите ли вы поврежденные данные как в базе данных распространителя, так и на подписчике или только на подписчике?
Вы пробовали запустить агент распространения на издателе / распространителе?
Разве SQL Server 2008 не изменил способ обработки определенных полей из-за Unicode или чего-то подобного?
Это руководство может дать некоторые рекомендации. Может вы что-то упустили при миграции?
Изменить: Есть Эта статья указать на что-нибудь, что могло его вызвать?