Была ли эта страница полезной?
Ваш отзыв об этом контенте важен для нас. Расскажите нам о том, что вы думаете.
Дополнительный отзыв?
1500 символов осталось
Рекомендации по синхронизации данных SQL

Рекомендации по синхронизации данных SQL

Обновлено: Май 2015 г.

 

Значок синхронизации данных SQL Azure

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

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

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

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

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

  • Желательно устанавливать агент клиента не на том компьютере, на котором локально установлен SQL Server.

  • Не регистрируйте для локальной базы данных более одного агента.

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

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

  • Для настройки синхронизации:
    Create/Alter Table, Alter Database, Create Procedure, Select/ Alter Schema, Create User Defined Type.

  • Для непрерывной синхронизации:
    Select/Insert/Update/Delete для таблиц, выбранных для синхронизации, а также на метаданных синхронизации и таблиц отслеживания, разрешение Execute на хранимых процедурах, созданных нашей службой, разрешение Execute на определенных типах таблиц.

  • Для отмены провизионирования:
    Alter для табличной части синхронизации, Select/Delete для таблиц метаданных синхронизации, Control для таблиц отслеживания синхронизации Sync Tracking, хранимых процедур и типов, определяемых пользователем.

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

  • Измените учетные данные для разных фаз (например cred1 для установки и cred2 для текущей работы).

  • Измените набор разрешений учетных данных (например, после настройки синхронизации).

Сценарий "Предприятие — облако":

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

Сценарий "Облако — облако":

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

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

Смешанные сценарии:

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

  • Экземпляр базы данных SQL Размер

    Если при создании новой базы данных Экземпляр базы данных SQL выбран параметр Настраиваемое создание, следует выбрать максимальный размер, который должен всегда превышать размер развертываемой базы данных. Если вы не зададите максимальный размер, который будет больше развертываемой базы данных, то синхронизация окончится неудачей. Хотя автоматическое увеличение размера не предусмотрено, для увеличения размера базы данных после ее создания можно применить инструкцию ALTER DATABASE. Разумеется, это следует выполнять при условии, что нельзя превышать ограничение на размеры Экземпляр базы данных SQL.


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

  • Поддерживаемые параметры для измерения баз данных

     

    Измерение Ограничение

    Имена баз данных, таблиц, схем и столбцов

    50 символов на имя

    Таблиц в группе синхронизации

    100

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

    1000

  • Выбор таблиц

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

  • Первичные ключи

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

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

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

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

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

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

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

  • Индексы столбцов типа XML не провизионируются.

  • Проверочные ограничения не провизионируются.

  • Существующие в исходных таблицах триггеры не провизионируются.

  • В целевой базе данных не создаются представления и хранимые процедуры.

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

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

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

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

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

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

  • Стоимость

    Даже несмотря на то, что служба Синхронизация данных SQL (предварительная версия) в настоящее время предлагается бесплатно, все равно приходится оплачивать расходы база данных SQL по передаче данных, связанной с перемещением данных в центры данных и из центров данных база данных SQL. Поэтому не следует синхронизировать таблицы, которые являются стабильными или содержат данные, не требующие частого обновления, по ежедневному или еженедельному расписанию. Таблицы, которые содержат конфиденциальные данные, зависящие от времени, а также быстро изменяющиеся данные, рекомендуется синхронизировать чаще. Проанализируйте свои бизнес-потребности и, исходя из них, создайте Sync Group и расписания синхронизации.

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

  • Частота

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

    Например:

    Если для группы синхронизации задана синхронизация каждые пять минут (T0, T0+5, T0+10...), но синхронизация группы занимает шесть минут, то синхронизация будет происходить в моменты времени T0, T0+10, T0+20 и т. д. Попытка синхронизации в моменты T0+5 и T0+15 завершится ошибкой, так как к этому моменту синхронизации T0 и T0+10 завершиться не успеют.

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

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

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

Базе данных присваивается состояние "Устаревшая", если она находилась вне сети в течение 45 дней или более дней. Чтобы избежать появления устаревших баз данных, необходимо сделать так, чтобы ни одна из них не находилась вне сети в течение 45 дней или более дней. Сведения о восстановлении из устаревшей базы данных см. в разделе A database has an "Out-of-Date" status.

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

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

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

  • Обновите схему, разрешив значения, которые были запрещены в сбойных строках. См. раздел Q: I just changed my schema. How do I get the change into my sync group?.

  • Обновите значения внешнего ключа, включив значения, которые были запрещены в сбойных строках.

  • Обновите значения данных в сбойных строках с тем, чтобы они были совместимыми со схемой или внешними ключами из целевой базы данных.

Сведения о восстановлении из устаревшей группы синхронизации см. в разделе A sync group has an "Out-of-Date" status.

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

Сценарий

  1. Группа синхронизации А была создана с базой данных Экземпляр базы данных SQL и локальной базой данных SQL Server, которая связана с локальным агентом 1.

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

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

  4. В этом случае работа группы синхронизации A завершится ошибкой и будет выдано следующее сообщение:
    "Текущая операция не может быть выполнена, поскольку база данных не провизионирована для синхронизации или у вас нет разрешений на таблицы конфигурации синхронизации".

Решение

  • Чтобы избежать такой ситуации, никогда не регистрируйте одну базу данных в нескольких агентах.

  • Восстановление после этой проблемы

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

    2. Снова добавьте базу данных во все группы синхронизации, из которых она была удалена.

    3. Разверните все эти группы синхронизации (при этом база данных будет провизирована).

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

  • Несовместимость схемы/типа данных между таблицами.

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

  • Нарушение ограничений внешнего ключа.

  • Группа синхронизации отображает это в предупреждающем сообщении.

  • Подробности излагаются в просмотрщике журнала пользовательского интерфейса портала.

  • Если проблема не разрешена в течение 45 дней, база данных становится устаревшей.


    noteПримечание
    Эти изменения уже не будут распространены. Единственный способ восстановления — повторно создать группу синхронизации.

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

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

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

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

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

 

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

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

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

  2. Установка агента клиента синхронизации данных SQL

  3. Регистрация базы данных SQL Server в клиентском агенте

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

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

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

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

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

См. также

Корпорация Майкрософт проводит интернет-опрос, чтобы выяснить ваше мнение о веб-сайте MSDN. Если вы желаете принять участие в этом интернет-опросе, он будет отображен при закрытии веб-сайта MSDN.

Вы хотите принять участие?
Показ:
© 2015 Microsoft