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

Применимо к: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 в топологии репликации.
  • В 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. Разверните папку Репликация, щелкните правой кнопкой мыши элемент Локальные публикации и выберите пункт Создать публикацию. Запустится мастер создания публикации.

    Selections to start the New Publication Wizard

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

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

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

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

    Table selections on the

    Примечание.

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

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

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

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

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

     WHERE [LoginID] = HOST_NAME()  
    

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

    Selections for adding a filter

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

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

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

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

    Selections for adding a join to the filter

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

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

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

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

    Selections for adding another join, for sales orders

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

    Selection for creating a snapshot immediately

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

    Selections for setting Snapshot Agent security

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

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

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

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

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

    Selections for viewing Snapshot Agent status

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

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

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

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

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

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

    Selections for adding the Merge Agent login

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

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

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

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

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

    Selections to start the New Subscription Wizard

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

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

    Selections for adding a publisher

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

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

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

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

    Selections for adding a database to the subscriber

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

    Selections for Merge Agent security

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

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

    Selections for initializing subscriptions at first synchronization

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

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

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

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

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

    Selections for setting the login

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

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

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

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

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

    Selections for adding a partition

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

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

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

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

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

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

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

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

    Synchronization status with

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

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

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

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