Экспорт (0) Печать
Развернуть все

Руководство по устранению неполадок синхронизации данных SQL (предварительная версия)

Обновлено: Октябрь 2013 г.

 

 

В руководстве по устранению неполадок описаны проблемы, которые в настоящее время известны группе Синхронизация данных SQL (предварительная версия). Если существует решение той или оной проблемы, то оно также будет описано.

По мере выявления новых проблем и/или нахождения решений эта статья будет дополняться и обновляться.

Подключаемый модуль синхронизации данных SQL Microsoft Azure на портале Microsoft Azure Silverlight больше не поддерживается. В будущем используйте портал управления Microsoft Azure для синхронизации данных Azure SQL.

Для доступа к синхронизации данных SQL (предварительная версия) используется вкладка SYNC базы данных SQL на портале управления Microsoft Azure. Вкладка SYNC доступна только при наличии одной или нескольких групп синхронизации. Указания по созданию и изменению группы синхронизации через данный портал приведены в разделе Как создать группу синхронизации (SDS).

Материалы, которые следует прочитать перед началом работы, и рекомендации по созданию и изменению групп синхронизации см. в разделе Навигация.

Не работает используемый мной клиентский агент

Мой клиентский агент не работает после отмены удаления

В раскрывающемся списке агента отсутствует моя база данных

Клиентский агент не запускается (ошибка 1069)

Появляется сообщение о нехватке свободного места на диске

Я не могу удалить группу синхронизации

Ошибка синхронизации в пользовательском интерфейсе портала для местных баз данных, связанных с клиентским агентом

Не удается отменить регистрацию местной базы данных SQL Server

Я не могу отправить ключ агента

У меня нет достаточных прав доступа для запуска системных служб

Пользовательский интерфейс локального агента синхронизации не может соединиться с локальной службой синхронизации

Операции установки, удаления или восстановления завершаются ошибкой

База данных имеет состояние «Устарела»

Группа синхронизации имеет состояние «Устарела»

В таблицах появляются ошибочные данные

После успешной синхронизации отображаются несогласованные данные PK

Отмечается значительное снижение производительности

Агент клиента нельзя удалять из портала, если локальная база данных, с которой он связан, недоступна.

Группу синхронизации нельзя удалять в течение трех минут с момента удаления или остановки агента

Используемая мной хранимая процедура привела к возникновению ошибки времени компиляции

При попытке использования агент клиента появляются следующие сообщения об ошибке.

«Синхронизация завершилась ошибкой из-за исключения. При попытке десериализации параметра www.microsoft.com/.../05:GetBatchInfoResult возникла ошибка. Подробные сведения см. в InnerException.

Сообщение о внутреннем исключении: Тип Microsoft.Synchronization.ChangeBatch является недопустимым типом коллекции, поскольку не имеет конструктора по умолчанию.

Это проблема с предварительной версией службы синхронизации данных Синхронизация данных SQL (предварительная версия).

Наиболее вероятной причиной является следующая.

  • Вы работаете с предварительной версией операционной системы Windows 8 Developer или

  • У вас установлена платформа .NET 4.5.

Убедитесь в том, что агент клиента не установлен на компьютере, который работает под управлением предварительной версии Windows 8 Developer, и что не установлена платформа .NET Framework 4.5.

агент клиента не работает даже после отмены его удаления.

Факт в том, что в Синхронизация данных SQL (предварительная версия) агент клиента не сохранены учетные данные.

Можно воспользоваться двумя решениями.

  • Первое: используйте services.msc для повторного ввода учетных данных для агент клиента.

  • Второе: удалите этот агент клиента и установите новый агент.
    При необходимости можно загрузить и установить последнюю версию агент клиента из Центра загрузки.

При попытке добавить существующую базу данных SQL Server в группу синхронизации она не появляется в раскрывающемся списке. (Рис. 1:2)


Рис. 1.

Решение зависит от причины.

Прежде всего удостоверьтесь в том, что искомая база данных зарегистрирована в агенте агент клиента. Далее описаны шаги по регистрации базы данных в агенте агент клиента.

  1. Запустите SqlAzureDataSyncAgent из каталога \bin, в котором он был установлен.
    Каталог установки по умолчанию — C:\Program Files (x86)\Microsoft SQL Data Sync.

  2. Нажмите кнопку Зарегистрировать.

  3. Перейдите на вкладку для соответствующего типа проверки подлинности — SQL или Windows.

  4. Укажите сервер, базу данных и, при необходимости, учетные данные отсутствующей базы данных.

  5. Нажмите кнопку Проверить соединение.

  6. Если соединение успешно установлено, нажмите кнопку Готово.

  7. После того как база данных появится на панели состояния, закройте SqlAzureDataSyncAgent.

  8. Вернитесь к веб-интерфейсу и нажмите кнопку Получить список баз данных. (Рис. 1.1)

  9. Подождите, пока список обновится.

  10. В раскрывающемся списке выберите агент для добавления в группу синхронизации. (Рис. 1.2)

Кроме того, и агент клиента, и группа синхронизации должны находиться в одном центре обработки данных. Обеспечить это можно следующим способом.

Локальный агент загружает список связанных баз данных только при первом предоставлении ключа агента и не делает этого в дальнейшем. Из-за этого базы данных, зарегистрированные во время перемещения агента, не отображаются в исходном экземпляре агента.

Решение Остановите и перезапустите службу агент клиента.

Если агент не запускается на компьютере, где размещен SQL Server (для проверки и запуска агента см. шаги 1–4 в разделе Регистрация баз данных SQL Server). При попытке запустить агент вручную открывается диалоговое окно со следующим сообщением об ошибке: «Ошибка 1069. Служба не запустилась из-за ошибки входа в систему».


Диалоговое окно ошибки 1069

Наиболее вероятная причина этой ошибки состоит в том, что с момента создания агента и предоставления ему пароля для входа в систему этот пароль на локальном сервере изменился.

Решение является достаточно простым — обновите пароль агента, указав текущий пароль, заданный на сервере.

  1. Поиск службы Синхронизация данных SQL (предварительная версия) агент клиента Предварительный просмотр

    Windows 7 / Vista

    1. Нажмите кнопку Пуск.

    2. Введите «services.msc» в текстовом поле с меткой Поиск программ и файлов.

    3. В списке результатов поиска щелкните «Службы».

    Windows XP

    1. Нажмите кнопку Пуск.

    2. Введите «services» в текстовом поле с меткой Выполнить.

    3. Нажмите кнопку ОК.

  2. В окне Службы выполните прокрутку к записи для агента Синхронизация данных SQL (предварительная версия) Предварительный просмотр.

  3. Щелкните эту запись правой кнопкой мыши и выберите команду Стоп.

  4. Щелкните эту запись правой кнопкой мыши и выберите команду Свойства.

  5. В окне свойств агента Синхронизация данных SQL (предварительная версия) Предварительный просмотр перейдите на вкладку Вход в систему.

  6. Введите пароль в поле «Пароль».

  7. Подтвердите пароль, введя его еще раз в поле «Подтверждение».

  8. Нажмите кнопку Применить, а затем кнопку ОК.

  9. В окне «Службы» щелкните правой кнопкой мыши службу агента Синхронизация данных SQL (предварительная версия) Предварительный просмотр, а затем выберите пункт Запустить.

  10. Закройте окно «Службы».

Сообщение о нехватке свободного места на диске появляется тогда, когда файлы, которые должны удаляться, не удаляются. Причина этого может заключаться в работе антивирусного программного обеспечения либо в том, что при попытке удаления тот или иной файл был открыт.

Решение заключается в том, чтобы вручную удалить файлы синхронизации из каталога %temp% (del *sync* /s), а затем также удалить и подкаталоги.

ImportantВажно!
Прежде чем удалять какие-либо файлы, подождите завершения синхронизации.

Попытка удалить группу синхронизации завершается ошибкой.

К невозможности удалить группу синхронизации может привести любая из следующих причин.

  • Агент агент клиента находится вне сети.

    Убедитесь, что агент клиента находится в сети, а затем повторите попытку.

  • Агент агент клиента удален или отсутствует.

    Если агент агент клиента удален или отсутствует по другим причинам:

    1. Удалите XML-файл агента из папки установки Синхронизация данных SQL (предварительная версия), если он там есть.

    2. Установите агент на тот же или на другой локальный компьютер, передайте с портала ключ агента, сформированный для того агента, который имеет состояние «вне сети».

  • Служба Синхронизация данных SQL (предварительная версия) остановлена.

    1. В меню Пуск выполните поиск по слову «Службы».

    2. В разделе «Программы» результатов поиска щелкните «Службы».

    3. Найдите службу Синхронизация данных SQL (предварительная версия) Предварительный просмотр.

    4. Если служба находится в состоянии Остановлена, то щелкните правой кнопкой мыши ее имя и выберите в контекстном меню команду Пуск.

  • База данных находится вне сети.

    Удостоверьтесь в том, что все базы данных база данных SQL и SQL Server находятся в сети.

  • Группа синхронизации выполняет провизионирование или синхронизацию.

    Подождите завершения процесса провизионирования или синхронизации, а затем попробуйте удалить группу синхронизации еще раз.

Ошибка синхронизации в пользовательском интерфейсе портала Синхронизация данных SQL (предварительная версия) для местных баз данных, связанных с агентом. На локальном компьютере, где запущен агент, в журнале событий отобразятся ошибки System.IO.IOException, указывающие на недостаток пространства на диске.

Освободите дополнительное пространство на диске, на котором находится каталог %TEMP%.

Вероятнее всего, вы пытаетесь отменить регистрацию базы данных, которая уже удалена.

База данных SQL Server
. Для отмены регистрации местной базы данных SQL Server выберите базу данных и щелкните Принудительное удаление.

Если при этом база данных не будет удалена из группы синхронизации, сделайте следующее.

  1. Остановите и перезапустите службу сервера агент клиента.

    1. Щелкните меню «Пуск».

    2. В текстовом поле поиска введите services.msc.

    3. В разделе «Программы» в области результатов дважды щелкните Службы.

    4. Найдите и щелкните правой кнопкой мыши службу Синхронизация данных SQL (предварительная версия).

    5. Если служба запущена, остановите ее.

    6. Нажмите кнопку Пуск.

    7. Проверьте, отменена ли регистрация базы данных. Если регистрация отменена, работа завершена. В противном случае перейдите к следующему шагу.

  2. Откройте пользовательский интерфейс агент клиента (SqlAzureDataSyncAgent).

  3. Нажмите кнопку Изменить учетные данные и задайте учетные данные для этой базы данных, чтобы к ней можно было получить доступ.

  4. Выполните отмену регистрации.

После создания (или повторного создания) ключа агента вы пытаетесь передать этот ключ через приложение SqlAzureDataSyncAgent, но передача завершается ошибкой.


Диалоговое окно с сообщением об ошибке при передаче ключа

Прежде чем продолжить, убедитесь, что причиной проблемы не является одно из следующих условий. Убедитесь, что:

  • Служба Windows Синхронизация данных SQL (предварительная версия) запущена.

  • Для учетной записи службы Windows Синхронизация данных SQL (предварительная версия) Предварительный просмотр предоставлен доступ к сети.

  • агент клиента может соединиться со службой указателя.
    Убедитесь, что следующий раздел реестра имеет значение «https://locator.sync.azure.com/LocatorServiceApi.svc»

    • На компьютере x86: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Azure Data Sync\LOCATORSVCURI

    • На компьютере x64: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\SQL Azure Data Sync\LOCATORSVCURI

Ключ агента уникальным образом идентифицирует каждый локальный агент. Для нормальной работы ключ должен удовлетворять двум условиям.

  • Ключи агент клиента на сервере Синхронизация данных SQL (предварительная версия) и на локальном компьютере должны быть одинаковыми.

  • Ключ агент клиента может быть использован только один раз.

Если агент не работает, то это происходит потому, что не соблюдено одно из этих условий (или оба условия). Возобновление работы агента

  1. cоздайте новый ключ.

    1. Перейдите в браузере на портал платформы Azure.

    2. Щелкните Базы данных SQL на левой панели.

    3. На верхней ленте щелкните Синхронизация Предварительный просмотр.

    4. Нажмите кнопку Управление ключами в нижней части экрана.

    5. Убедитесь, что в поле Имя агента указан правильный агент.

    6. В мастере управления ключами доступа нажмите кнопку Создать.

    7. Справа от нового значения ключа щелкните значок буфера обмена. При появлении запроса предоставьте буферу обмена доступ к данным.

  2. Примените новый ключ к агенту.

    1. С помощью проводника перейдите в каталог установки агента.

      Каталог установки по умолчанию — c:\program files (x86)\microsoft sql data sync.

    2. Дважды щелкните подкаталог bin.

    3. Запустите приложение SqlAzureDataSyncAgent.

    4. Нажмите кнопку Отправить ключ агента.

    5. Вставьте ключ из буфера обмена в соответствующее поле.

    6. Нажмите кнопку ОК.

    7. Закройте программу.

Эта ошибка возникает в двух случаях.

  • Имя пользователя и/или пароль неверны.

  • Указанная учетная запись пользователя не имеет достаточных прав доступа для входа в качестве службы.

Предоставьте этой учетной записи пользователя учетные данные для входа в систему в качестве службы.

  1. Выберите Пуск > Панель управления > Администрирование > Локальная политика безопасности > Локальные политики > Назначение прав пользователя.

  2. Найдите и щелкните запись Вход в качестве службы.

  3. Добавьте учетную запись пользователя в диалоговом окне Свойства: Вход в качестве службы.

  4. Нажмите кнопку Применить, а затем — кнопку ОК.

  5. Закройте окна.

Попробуйте следующее решение.

  1. Закройте пользовательский интерфейс.

  2. Откройте панель «Службы компонентов»

    1. Пуск > Поиск программ и файлов

    2. Введите «services.msc»

    3. В разделе Программы результатов поиска дважды щелкните пункт «Службы».

  3. Остановите и перезапустите службу «Синхронизация данных SQL (предварительная версия) Предварительный просмотр».

  4. Перезапустите пользовательский интерфейс.

Существует целый ряд причин, которые могут привести к этой ошибке. Чтобы определить, что конкретно вызвало проблему, необходимо проанализировать журналы.

Чтобы определить причину возникшей ошибки, необходимо создать и проанализировать журналы установщика Windows. Ведение журналов можно включить из командной строки. Предположим, что загруженный файл AgentServiceSetup.msi является LocalAgentHost.msi. Создать и проанализировать файлы журналов можно с помощью следующих командных строк:

  • При установке: msiexec.exe /i SQLDataSyncAgent-Preview-ENU.msi /l*v

    LocalAgentSetup.InstallLog

  • При удалении: msiexec.exe /x SQLDataSyncAgent-se-ENU.msi /l*v

    LocalAgentSetup.InstallLog

Ведение журнала можно включить для всех установок, выполняемых установщиком Windows. В статье базы знаний Майкрософт (http://support.microsoft.com/kb/223300) описано решение, позволяющее включить ведение журнала установщика Windows одним щелчком. В ней также приведено расположение этих файлов журналов.

Синхронизация данных SQL (предварительная версия) удаляет из службы базы данных, которые находились вне сети 45 дней или более дней (количество дней считается с момента перехода базы данных в режим «вне сети»). Если база данных находится вне сети в течение 45 дней и более дней, а затем снова появляется в сети, то она получает состояние «Устарела».

Чтобы избежать перехода базы данных в состояние «Устарела», не допускайте нахождения баз данных вне сети в течение 45 дней дней и более.

Если база данных получила состояние «Устарела», то необходимо выполнить следующие действия.

  1. Удалите базу данных из группы синхронизации.

  2. Снова добавьте эту базу данных в группу синхронизации. См. раздел Как добавить базу данных в группу синхронизации (SDS).


    WarningПредупреждение
    При этом будут потеряны все изменения, внесенные в эту базу данных в то время, пока она находилась вне сети.

Ведение журнала можно включить для всех установок, выполняемых установщиком Windows. В статье базы знаний Майкрософт (http://support.microsoft.com/kb/223300http://support.microsoft.com/kb/223300) описано решение, позволяющее включить ведение журнала установщика Windows одним щелчком. В ней также приведено расположение этих файлов журналов.

Группа синхронизации может устареть, если в течение всего срока сохранения, равного 45 дней, не удается применить одно или несколько изменений.

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

Если группа синхронизации получает состояние «Устарела», ее необходимо удалить и создать повторно. См. разделы Удаление группы синхронизации (SDS) и Создание группы синхронизации (SDS).

Ведение журнала можно включить для всех установок, выполняемых установщиком Windows. В статье базы знаний Майкрософт (http://support.microsoft.com/kb/223300) описано решение, позволяющее включить ведение журнала установщика Windows одним щелчком. В ней также приведено расположение этих файлов журналов.

Если в синхронизации участвуют таблицы базы данных с одинаковыми именами, но из разных схем, то после синхронизации в этих таблицах появятся ошибочные данные.

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

Таблицы, участвующие в синхронизации, должны иметь уникальные имена, даже если они принадлежат к различным схемам.

После синхронизации, которая согласно отчету является успешной, и при условии отсутствия в журнале указания строк с ошибками и пропущенных строк пользователь отмечает несогласованность данных PK в базах данных в группе синхронизации.

Это предусмотрено проектом. Изменение, внесенное в любой столбец первичного ключа, ведет к тому, что данные в строке, в которой был изменен первичный ключ, становятся несогласованными.

Чтобы предотвратить возникновение такой ситуации, убедитесь, что данные в столбце PK не изменялись.

Чтобы исправить проблему после того, как она возникла, такую строку необходимо удалить изо всех конечных точек группы синхронизации, а затем вставить ее заново.

Производительность значительно снизилась, возможно, даже до такой степени, что нельзя запустить пользовательский интерфейс Data Sync.

Наиболее вероятной причиной является образование Понимание и устранение циклов синхронизации. Петля синхронизации возникает в том случае, когда синхронизация, выполняемая группой А, вызывает синхронизацию, выполняемую группой Б, которая в свою очередь снова вызывает синхронизацию, выполняемую группой А. В реальных условиях такая ситуация может оказаться более сложной, когда в петле задействовано более двух групп синхронизации, однако общий фактор будет тот же: зацикливание синхронизации, вызванное тем, что группы синхронизации перекрывают друг друга.

Лучшим решением является профилактика. Следите за тем, чтобы группы синхронизации не содержали циклических ссылок. Любая строка, синхронизацию которой выполняет одна группа, не должна синхронизироваться какой-либо другой группой синхронизации.

Если локальная конечная точка (база данных), которая зарегистрирована в Синхронизация данных SQL (предварительная версия) агент клиента, стала недоступной, то агент клиента удалить нельзя.

Удалить локальный агент нельзя, так как в этом агенте зарегистрирована недоступная база данных, а при попытке его удаления производится попытка доступа к этой базе данных, что и приводит к ошибке.

Для удаления недоступной базы данных используйте операцию «принудительного удаления».

noteПримечание
Если при выполнении операции принудительного удаления таблицы метаданных синхронизации не были удалены, то для их удаления используйте deprovisioningutil.exe. См. раздел Q: How do I manually deprovision a database?.

Группу синхронизации нельзя удалять в течение трех минут с момента удаления или остановки связанного с ней Синхронизация данных SQL (предварительная версия) агент клиента.

  1. Удаляйте группы синхронизации в тот момент, когда связанные с ними агенты находятся в сети (настоятельно рекомендуется).

  2. Если агент установлен, но находится вне сети, то переведите его в режим «в сети» на локальном компьютере, подождите, пока не изменится его состояние на портале Синхронизация данных SQL (предварительная версия), а затем удалите группу синхронизации.

  3. Если агент находится вне сети по причине того, что он удален, выполните следующие действия и попробуйте удалить группу синхронизации.

    • Удалите XML-файл агента из папки установки Синхронизация данных SQL (предварительная версия), если он там есть.

    • Установите агент на тот же или на другой локальный компьютер, передайте с портала ключ агента, сформированный для того агента, который имеет состояние «вне сети».

В базе данных или столбце Экземпляр базы данных SQL используются параметры сортировки, отличные от используемых в экземпляре SQL Server.

Убедитесь, что в базах данных Экземпляр базы данных SQL и SQL Server используются одинаковые параметры сортировки.

Синхронизация данных SQL (предварительная версия) является компонентом база данных SQL. Через портал управления платформой Azure выполняются все задачи, необходимые для создания, развертывания и изменения группы синхронизации.

 

Перед началом

Прежде чем приступать к разработке и реализации синхронизаций, необходимо освоить следующие разделы.

Как создать группу синхронизации

Создание группы синхронизации выполняется на портале управления платформой Azure в шесть шагов. Подробности по каждому из этих шагов можно найти по следующим ссылкам.

  1. Войдите на портал управления базой данных SQL Azure
    Синхронизация данных SQL (предварительная версия), что можно видеть на вкладке «База данных SQL» только после создания группы синхронизации.

  2. Как установить клиентский агент синхронизации данных SQL (предварительная версия)

  3. Как зарегистрировать базу данных SQL Server в клиентском агенте

  4. Создание группы синхронизации (SDS)

  5. Определение данных синхронизации (SDS)

  6. Настройка группы синхронизации (SDS)

 

Как изменить группу синхронизации

Схему группы синхронизации можно изменить — добавлять и удалять таблицы и столбцы, а также изменять ширину и тип данных столбцов. Подробности можно найти по следующим ссылкам.

См. также

Показ:
© 2014 Microsoft