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

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

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

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

Чему вы научитесь

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

В этом учебнике вы узнаете, как:

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

Предварительные требования

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

Чтобы выполнить это руководство, вам потребуются SQL Server, SQL Server Management Studio (SSMS) и база данных AdventureWorks:

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

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

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

  • Установите редакцию SQL Server 2017 Developer.

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

Примечание.

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

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

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

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

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

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

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

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

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

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

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

  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. Отобразятся сведения о текущем состоянии задания агента моментальных снимков для публикации. Перед тем как перейти к следующему занятию, убедитесь, что задача создания моментального снимка завершилась успешно.

Добавьте учетную запись агента слияния в PAL

  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. На странице Инициализация подписок выберите пункт При первой синхронизации в списке Когда инициализировать. Нажмите кнопку Далее, чтобы перейти на страницу Тип подписки, и выберите соответствующий тип подписки. В этом руководстве используется Client. После выбора типа подписки нажмите кнопку Далее еще раз.

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

  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 и выберите пункт Просмотр состояния синхронизации.

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

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