Устранение неполадок с синхронизацией данных SQL

Область применения: База данных SQL Azure

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

Общие сведения о синхронизации данных SQL см. в статье Синхронизация данных в нескольких облачных и локальных базах данных с помощью синхронизации данных SQL в Azure.

Важно!

Синхронизация данных SQL в настоящее время не поддерживает Управляемый экземпляр SQL Azure или аналитику Azure Synapse.

Проблемы синхронизации

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

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

  • Причина. Недостаточно места на диске.

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

Моя группа синхронизации зависла в процессе обработки

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

К фиксации группы синхронизации в состоянии обработки может привести любое из следующих условий:

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

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

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

  • Способы устранения. Агент клиента удален или отсутствует:

    1. Удалите XML-файл агента из установочной папки синхронизации данных SQL, если файл существует.
    2. Установите агент на локальном компьютере (это может быть тот же или другой компьютер). Затем отправьте ключ, созданный на портале для агента, который находится вне сети.
  • Причина. Служба синхронизации данных SQL остановлена.

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

    1. В меню Пуск выполните поиск текста Службы.
    2. В результатах поиска щелкните Службы.
    3. Найдите службу синхронизации данных SQL.
    4. Если служба находится в состоянии Остановлена, щелкните правой кнопкой мыши имя службы и выберите Запуск.

Примечание

Если приведенные выше сведения не вывели группу синхронизации из состояния обработки, служба поддержки Майкрософт может сбросить состояние группы синхронизации. Чтобы сбросить состояние группы синхронизации, создайте запись на странице вопросов и ответов по Базе данных SQL Azure на сайте Майкрософт. Укажите в ней идентификатор подписки и идентификатор группы синхронизации, которую нужно сбросить. Специалист службы поддержки Майкрософт ответит на вашу запись и сообщит вам, когда состояние будет сброшено.

Я вижу неверные данные в таблицах

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

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

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

Я вижу несогласованные данные первичного ключа после успешной синхронизации

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

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

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

Я вижу значительное снижение производительности

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

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

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

Получено сообщение об ошибке "Не удалось вставить значение NULL в столбец <столбец>. Столбец не допускает значения NULL". Что это значит и как исправить эту проблему?

Это сообщение об ошибке указывает на одну из двух следующих проблем:

  • У таблицы нет первичного ключа. Чтобы устранить эту проблему, добавьте первичный ключ во все таблицы, которые синхронизируются.
  • В инструкции CREATE INDEX присутствует предложение WHERE. Служба синхронизации данных не может обработать такое условие. Чтобы устранить эту проблему, удалите предложение WHERE или вручную внесите изменения во все базы данных.

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

Синхронизация данных не обрабатывает циклические ссылки. Не используйте их.

Проблемы в работе агента клиента

Сведения о том, как устранить проблемы с агентом клиента, см. в разделе Troubleshoot Data Sync Agent issues (Устранение проблем с агентом синхронизации данных).

Проблемы установки и обслуживания

Я получаю сообщение "disk out of space" (нет свободного места на диске)

  • Причина. Сообщение "disk out of space" (нет свободного места на диске) может отображаться, если нужно удалить лишние файлы. Это могут быть лишние файлы, обнаруженные антивирусным программным обеспечением, или файлы, которые были открыты при попытке выполнить операции удаления.

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

Важно!

Не удаляйте файлы во время синхронизации.

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

Вам не удается удалить группу синхронизации. Любая из следующих ситуаций может помешать удалению группы синхронизации:

  • Причина. Агент клиента находится в автономном режиме.

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

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

  • Способы устранения. Агент клиента удален или отсутствует:
    а. Удалите XML-файл агента из установочной папки синхронизации данных SQL, если файл существует.
    b. Установите агент на локальном компьютере (это может быть тот же или другой компьютер). Затем отправьте ключ, созданный на портале для агента, который находится вне сети.

  • Причина. База данных находится в автономном режиме.

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

  • Причина. Группа синхронизации подготавливается или синхронизируется.

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

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

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

  • Способы устранения. Чтобы отменить регистрацию базы данных SQL Server, выберите базу данных и нажмите кнопку Принудительно удалить.

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

    1. Остановите, а затем перезапустите службу узла агента клиента.
      а. Щелкните меню Пуск.
      b. В поле поиска введите services.msc.
      c. В разделе Программы области результатов поиска дважды щелкните Службы.
      d. Щелкните правой кнопкой мыши службу синхронизации данных SQL.
      д) Если служба запущена, остановите ее.
      е) Щелкните правой кнопкой мыши службу и выберите Запуск.
      ж. Проверьте, зарегистрирована ли еще база данных. Если она больше не зарегистрирована, процедура завершена. В противном случае перейдите к следующему шагу.
    2. Откройте приложение агента клиента (SqlAzureDataSyncAgent).
    3. Выберите Изменить учетные данные, а затем введите учетные данные для базы данных.
    4. Выполните отмену регистрации.

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

  • Причина. Эта ошибка возникает в двух ситуациях:

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

    1. Выберите Пуск>Панель управления>Администрирование>Локальная политика безопасности>Локальная политика>User Rights Management (Управление правами пользователей).
    2. Выберите Вход в качестве службы.
    3. В диалоговом окне Свойства добавьте учетную запись пользователя.
    4. Нажмите кнопку Apply (Применить), а затем нажмите кнопку ОК.
    5. Закройте все окна.

База данных находится в состоянии "Устарела"

  • Причина. Служба синхронизации данных SQL удаляет базы данных, которые были отключены более 45 дней (с момента отключения базы данных от сети). Если база данных находится вне сети более 45 дней, а затем возвращается в сеть, ее состояние имеет значение Out-of-Date (Устарела).

  • Способы устранения. Чтобы избежать состояния Out-of-Date (Устарела), нужно сделать так, чтобы ни одна из ваших баз данных не находилась вне сети более 45 дней.

    Если база данных находится в состоянии Out-of-Date (Устарела), сделайте следующее.

    1. Удалите базу данных в состоянии Out-of-Date (Устарела) из группы синхронизации.
    2. Добавьте базу данных обратно в группу синхронизации.

    Предупреждение

    Все изменения, внесенные в эту базу данных в автономном режиме, будут потеряны.

Группа синхронизации находится в состоянии "Устарела"

  • Причина. Если одно или несколько изменений не применяются в течение всего периода хранения (45 дней), группа синхронизации может стать устаревшей.

  • Способы устранения. Чтобы избежать состояния Out-of-Date (Устарела) группы синхронизации, регулярно проверяйте результаты заданий синхронизации в средстве просмотра журнала. Изучайте и устраняйте проблемы изменений, которые не применяются.

    Если состояние группы синхронизации устарело, удалите группу синхронизации и создайте ее повторно.

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

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

  • Способы устранения.

    1. Удалите группу синхронизации, в то время как связанные агенты синхронизации подключены к сети (рекомендуется).
    2. Если агент находится вне сети, но установлен, подключите его к сети на локальном компьютере. Дождитесь, пока состояние агента не изменится на В сети на портале синхронизации данных SQL. Удалите группу синхронизации.
    3. Если агент находится вне сети, потому что он был удален, выполните следующие действия.
      а. Удалите XML-файл агента из установочной папки синхронизации данных SQL, если файл существует.
      b. Установите агент на локальном компьютере (это может быть тот же или другой компьютер). Затем отправьте ключ, созданный на портале для агента, который находится вне сети.
      c. Попробуйте удалить группу синхронизации.

Что происходит, когда я восстанавливаю потерянную или поврежденную базу данных?

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

Сообщение об ошибке "Клиент Sync0022 не имеет разрешения на выполнение действия syncGroupOperationResults/read"

Если появится сообщение Sync0022 Customer does not have authorization to perform action 'syncGroupOperationResults/read'об ошибке, учетная запись, пытающаяся выполнить операцию, не имеет достаточных разрешений на уровне подписки. Добавьте следующие пакеты:

  • "Microsoft.Sql/locations/syncMemberOperationResults/read"
  • "Microsoft.Sql/locations/syncAgentOperationResults/read"
  • "Microsoft.Sql/locations/syncGroupOperationResults/read"

Дополнительные сведения см. в статье об операциях поставщика ресурсов RBAC и учетных записях базы данных Синхронизация данных SQL с минимальными привилегиями.

Дальнейшие действия

Дополнительные сведения о синхронизации данных SQL см. в следующих материалах:

Дополнительные сведения о Базе данных SQL см. в разделах: