Учебник. Настройка репликации между сервером и мобильными клиентами (репликация слиянием)

Область применения: SQL Server

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

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

Новые знания

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

В этом учебнике рассматривается следующее.

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

Необходимые компоненты

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

Для работы с этим учебником требуется SQL Server, среда SQL Server Management Studio (SSMS) и база данных AdventureWorks.

  • На сервере-издателе (источник) установите следующее:

    • Любой выпуск SQL Server, кроме SQL Server Express или SQL Server Compact. Эти выпуски не могут быть издателями репликации.
    • Образец базы данных AdventureWorks2022 . В целях повышения безопасности образцы баз данных по умолчанию не устанавливаются.
  • На сервере-подписчике (целевом) установите любой выпуск SQL Server, кроме SQL Server Express или SQL Server Compact. Созданная в рамках этого учебника публикация не поддерживает выпуски SQL Server Express и SQL Server Compact.

  • Установите SQL Server Management Studio.

  • Установите выпуск SQL Server 2017 Developer Edition.

  • Скачайте пример базы данных AdventureWorks. См. дополнительные сведения о восстановлении базы данных в среде SSMS.

Примечание.

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

В SQL Server Management Studio необходимо подключиться к издателю и подписчику с помощью имени входа, являющегося членом предопределенных ролей сервера sysadmin . Дополнительные сведения о роли см. в статье Роли уровня сервера.

Предполагаемое время выполнения заданий этого учебника: 60 минут

Настройка издателя для репликации слиянием

В этом разделе вы создадите публикацию слиянием с помощью SQL Server Management Studio для публикации подмножества таблиц Employee, SalesOrderHeader и SalesOrderDetail в AdventureWorks2022 примере базы данных. Эти таблицы фильтруются с помощью параметризованных фильтров строк, так что каждая подписка содержит уникальную секцию данных. Кроме того, вы добавляете имя входа SQL Server, используемое агент слияния в список доступа к публикации (PAL).

Создание публикации слиянием и определение статей

  1. Подключитесь к издателю в SQL Server Management Studio и разверните узел сервера.

  2. Запустите агент SQL Server. Для этого щелкните правой кнопкой мыши в окне обозревателя объектов и выберите команду Запустить. Если агент не запускается, это необходимо сделать вручную в диспетчере конфигурации SQL Server.

  3. Разверните папку Репликация, щелкните правой кнопкой мыши элемент Локальные публикации и выберите пункт Создать публикацию. Запустится мастер создания публикации.

    Выделенные элементы для запуска мастера создания публикации

  4. На странице База данных публикации выберите AdventureWorks2022 и нажмите кнопку Далее.

  5. На странице Тип публикации выберите Публикация слиянием и нажмите кнопку Далее.

  6. На странице "Типы подписчиков" убедитесь, что выбран только SQL Server 2008 (10.0.x) или более поздней версии, а затем нажмите кнопку "Далее".

    Страницы

  7. На странице Статьи разверните узел Таблицы. Выберите следующие три таблицы: Employee, SalesOrderHeader и SalesOrderDetail. Выберите Далее.

    Выбранные таблицы на странице

    Примечание.

    Таблица Employee содержит столбец (OrganizationNode) с типом данных hierarchyid. Этот тип данных поддерживается при репликации только в SQL Server 2017.

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

    Дополнительные сведения о репликации типа данных hierarchyid см. в разделе Использование столбцов Hierarchyid в репликации.

  8. На странице Фильтрация строк таблицы выберите команду Добавить, а затем щелкните пункт Добавить фильтр.

  9. В диалоговом окне Добавить фильтр выберите Employee (HumanResources) в поле Выбрать таблицу для фильтрации. Щелкните столбец LoginID, щелкните стрелку вправо, чтобы добавить столбец в предложение WHERE фильтрующего запроса, и измените предложение WHERE следующим образом:

     WHERE [LoginID] = HOST_NAME()  
    

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

    Выбранные элементы для добавления фильтра

  10. На странице Фильтрация строк таблицы выберите Employee (Human Resources), нажмите кнопку Добавить и выберите команду Добавить соединение для расширения выбранного фильтра.

    a. В диалоговом окне Добавление соединения выберите Sales.SalesOrderHeader в поле Соединяемая таблица. Выберите Записать инструкцию соединения вручную и завершите инструкцию соединения следующим образом:

    ON [Employee].[BusinessEntityID] =  [SalesOrderHeader].[SalesPersonID] 
    

    b. В поле Укажите параметры соединения выберите Уникальный ключ, а затем нажмите кнопку ОК.

    Выбранные элементы для добавления соединения в фильтр

  11. На странице Фильтрация строк таблицы выберите SalesOrderHeader, нажмите кнопку Добавить и выберите команду Добавить соединение для расширения выбранного фильтра.

    a. В диалоговом окне Добавление соединения выберите Sales.SalesOrderDetail в поле Соединяемая таблица.
    b. Выберите Использовать конструктор для создания инструкции.
    c. В поле Предварительный просмотр убедитесь, что инструкция соединения выглядит следующим образом:

    ON [SalesOrderHeader].[SalesOrderID] = [SalesOrderDetail].[SalesOrderID] 
    

    d. В поле Укажите параметры соединения выберите Уникальный ключ, а затем нажмите кнопку ОК. Выберите Далее.

    Выбранные элементы для добавления другого соединения (заказов на продажу)

  12. Установите флажок Создать моментальный снимок немедленно, снимите флажок Запланировать запуск агента моментальных снимков в следующее время и нажмите кнопку Далее:

    Выбор для мгновенного создания моментального снимка

  13. На странице Безопасность агента выберите Параметры безопасности. Введите Publisher_Machine_Name>\repl_snapshot в поле учетной записи обработки, укажите< пароль для этой учетной записи и нажмите кнопку "ОК". Выберите Далее.

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

  14. На странице Завершение работы мастера введите AdvWorksSalesOrdersMerge в поле Имя публикации и нажмите кнопку Готово:

    Страница

  15. По завершении создания публикации нажмите кнопку Закрыть. В узле Репликация в обозревателе объектов щелкните правой кнопкой мыши элемент Локальные публикации и выберите Обновить, чтобы просмотреть новую репликацию слиянием.

Просмотр состояния создания моментального снимка

  1. Подключитесь к издателю в SQL Server Management Studio, разверните узел сервера и разверните папку репликации .

  2. В папке Локальные публикации щелкните правой кнопкой мыши публикацию AdvWorksSalesOrdersMerge и выберите пункт Просмотр состояния агента моментальных снимков.

    Выбор для просмотра состояния агента моментальных снимков

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

Добавление имени для входа агента слияния в список доступа к публикации

  1. Подключитесь к издателю в SQL Server Management Studio, разверните узел сервера и разверните папку репликации .

  2. В папке Локальные публикации щелкните правой кнопкой мыши публикацию AdvWorksSalesOrdersMerge и выберите пункт Свойства.

    a. Выберите страницу Список доступа к публикации и нажмите кнопку Добавить.

    b. В диалоговом окне "Добавление доступа к публикации" выберите <Publisher_Machine_Name>\repl_merge и нажмите кнопку "ОК". Снова нажмите кнопку ОК.

    Выбранные элементы для добавления имени для входа агента слияния

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

Создание подписки на публикацию слиянием

В этом разделе описывается добавление подписки к ранее созданной публикации слиянием. В этом учебнике используется удаленный подписчик (NODE2\SQL2016). После будут заданы разрешения на базу данных подписки и вручную сформирован моментальный снимок отфильтрованных данных для новой подписки.

Добавление подписчика для публикации слиянием

  1. Подключитесь к подписчику в СРЕДЕ SQL Server Management Studio и разверните узел сервера. Разверните папку Репликация, щелкните правой кнопкой мыши папку Локальные подписки и выберите пункт Создать подписку. Запустится мастер создания подписки:

    Выбранные элементы для запуска мастера создания подписки

  2. На странице Публикация из списка Издатель выберите Найти издатель SQL Server.

    В диалоговом окне Подключение к серверу введите имя экземпляра издателя в поле Имя сервера, а затем выберите команду Подключиться:

    Выбранные элементы для добавления издателя

  3. Щелкните элемент AdvWorksSalesOrdersMerge, а затем нажмите кнопку Далее.

  4. На странице Расположение агента слияния выберите команду Выполнять каждый агент на своем подписчике и нажмите кнопку Далее:

    Параметр

  5. На странице Подписчики выберите имя экземпляра сервера подписчика. Выберите в списке пункт Создать базу данных в разделе База данных подписки.

    В диалоговом окне Новая база данных в поле Имя базы данных введите SalesOrdersReplica. Выберите ОК, затем выберите Далее.

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

  6. На странице Безопасность агента слияния выберите кнопку с многоточием (). Введите Subscriber_Machine_Name>\repl_merge в поле учетной записи процесса и укажите <пароль для этой учетной записи. Нажмите кнопку ОК, кнопку Далее, а затем — снова Далее.

    Выбранные элементы для безопасности агента слияния

  7. На странице Расписание синхронизации присвойте параметру Расписание агента значение Выполнение по запросу. Выберите Далее.

    Выбор

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

    Выбранные элементы для инициализации подписок при первой синхронизации

  9. На странице Значения HOST_NAME в поле Значение HOST_NAME введите adventure-works\pamela0. Выберите Готово.

    Страница

  10. Выберите Готово еще раз. После создания подписки нажмите кнопку Закрыть.

Задание разрешений сервера на подписчике

  1. Подключитесь к подписчику в SQL Server Management Studio. Разверните узел Безопасность, щелкните правой кнопкой мыши Имена для входа, а затем выберите команду Создать имя для входа.

    На странице "Общие" выберите "Поиск" и введите Subscriber_ Machine_Name>\repl_merge в поле "Введите <имя объекта". Выберите команду Проверить имена и нажмите кнопку ОК.

    Выбор для задания имени для входа

  2. На странице Сопоставление пользователей выберите базу данных SalesOrdersReplica и роль db_owner. На странице Защищаемые объекты предоставьте разрешение Явное для элемента Изменение трассировки. Нажмите ОК.

    Страницы

Создание моментального снимка отфильтрованных данных подписки

  1. Подключитесь к издателю в SQL Server Management Studio, разверните узел сервера и разверните папку репликации .

  2. В папке Локальные публикации щелкните правой кнопкой мыши публикацию AdvWorksSalesOrdersMerge и выберите пункт Свойства.

    a. Выберите страницу Секции данных и нажмите кнопку Добавить.
    b. В диалоговом окне Добавление секции данных введите значение adventure-works\pamela0 в поле Значение HOST_NAME и нажмите кнопку ОК.
    c. Выберите добавленную секцию, выберите команду Создать выбранные моментальные снимки и нажмите кнопку ОК.

    Выбранные элементы для добавления секции

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

Синхронизация подписки на публикацию слиянием

В этом разделе описано, как запустить агент слияния для инициализации подписки с помощью SQL Server Management Studio. Эта процедура также используется для синхронизации с издателем.

Запуск синхронизации и инициализация подписки

  1. Подключитесь к подписчику в SQL Server Management Studio.

  2. Убедитесь, что агент SQL Server запущен. Если это не так, щелкните правой кнопкой мыши "Агент SQL Server" в обозревателе объектов и выберите команду Запустить. Если агент не запускается, это необходимо сделать вручную с помощью диспетчера конфигурации SQL Server.

  3. Разверните узел Репликация. В папке Локальные подписки щелкните правой кнопкой мыши подписку в базе данных SalesOrdersReplica и выберите пункт Просмотр состояния синхронизации.

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

    Состояние синхронизации с кнопкой

Следующие шаги

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

  1. вставить, обновить или удалить данные в таблице SalesOrderHeader или SalesOrderDetail на издателе или подписчике;
  2. повторить эту процедуру, когда будет доступно сетевое соединение, для синхронизации данных между издателем и подписчиком;
  3. запросить таблицу SalesOrderHeader или SalesOrderDetail на другом сервере для просмотра реплицированных изменений.

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