Учебник. Настройка репликации между сервером и мобильными клиентами (репликация слиянием)
Область применения: 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).
Создание публикации слиянием и определение статей
Подключитесь к издателю в SQL Server Management Studio и разверните узел сервера.
Запустите агент SQL Server. Для этого щелкните правой кнопкой мыши в окне обозревателя объектов и выберите команду Запустить. Если агент не запускается, это необходимо сделать вручную в диспетчере конфигурации SQL Server.
Разверните папку Репликация, щелкните правой кнопкой мыши элемент Локальные публикации и выберите пункт Создать публикацию. Запустится мастер создания публикации.
На странице База данных публикации выберите
AdventureWorks2022
и нажмите кнопку Далее.На странице Тип публикации выберите Публикация слиянием и нажмите кнопку Далее.
На странице "Типы подписчиков" убедитесь, что выбран только SQL Server 2008 (10.0.x) или более поздней версии, а затем нажмите кнопку "Далее".
На странице Статьи разверните узел Таблицы. Выберите следующие три таблицы: Employee, SalesOrderHeader и SalesOrderDetail. Выберите Далее.
Примечание.
Таблица Employee содержит столбец (OrganizationNode) с типом данных hierarchyid. Этот тип данных поддерживается при репликации только в SQL Server 2017.
Если вы используете версию сборки, предшествующую SQL Server 2017, в нижней части экрана появится сообщение о риске потери данных при использовании этого столбца для двусторонней репликации. В рамках этого учебника данное сообщение можно игнорировать. Тем не менее, если вы не используете поддерживаемую сборку в рабочей среде, этот тип данных не должен участвовать в репликации.
Дополнительные сведения о репликации типа данных hierarchyid см. в разделе Использование столбцов Hierarchyid в репликации.
На странице Фильтрация строк таблицы выберите команду Добавить, а затем щелкните пункт Добавить фильтр.
В диалоговом окне Добавить фильтр выберите Employee (HumanResources) в поле Выбрать таблицу для фильтрации. Щелкните столбец LoginID, щелкните стрелку вправо, чтобы добавить столбец в предложение WHERE фильтрующего запроса, и измените предложение WHERE следующим образом:
WHERE [LoginID] = HOST_NAME()
Щелкните пункт Строка из этой таблицы будет отправлена только одной подписке и нажмите кнопку ОК.
На странице Фильтрация строк таблицы выберите Employee (Human Resources), нажмите кнопку Добавить и выберите команду Добавить соединение для расширения выбранного фильтра.
a. В диалоговом окне Добавление соединения выберите Sales.SalesOrderHeader в поле Соединяемая таблица. Выберите Записать инструкцию соединения вручную и завершите инструкцию соединения следующим образом:
ON [Employee].[BusinessEntityID] = [SalesOrderHeader].[SalesPersonID]
b. В поле Укажите параметры соединения выберите Уникальный ключ, а затем нажмите кнопку ОК.
На странице Фильтрация строк таблицы выберите SalesOrderHeader, нажмите кнопку Добавить и выберите команду Добавить соединение для расширения выбранного фильтра.
a. В диалоговом окне Добавление соединения выберите Sales.SalesOrderDetail в поле Соединяемая таблица.
b. Выберите Использовать конструктор для создания инструкции.
c. В поле Предварительный просмотр убедитесь, что инструкция соединения выглядит следующим образом:ON [SalesOrderHeader].[SalesOrderID] = [SalesOrderDetail].[SalesOrderID]
d. В поле Укажите параметры соединения выберите Уникальный ключ, а затем нажмите кнопку ОК. Выберите Далее.
Установите флажок Создать моментальный снимок немедленно, снимите флажок Запланировать запуск агента моментальных снимков в следующее время и нажмите кнопку Далее:
На странице Безопасность агента выберите Параметры безопасности. Введите Publisher_Machine_Name>\repl_snapshot в поле учетной записи обработки, укажите< пароль для этой учетной записи и нажмите кнопку "ОК". Выберите Далее.
На странице Завершение работы мастера введите AdvWorksSalesOrdersMerge в поле Имя публикации и нажмите кнопку Готово:
По завершении создания публикации нажмите кнопку Закрыть. В узле Репликация в обозревателе объектов щелкните правой кнопкой мыши элемент Локальные публикации и выберите Обновить, чтобы просмотреть новую репликацию слиянием.
Просмотр состояния создания моментального снимка
Подключитесь к издателю в SQL Server Management Studio, разверните узел сервера и разверните папку репликации .
В папке Локальные публикации щелкните правой кнопкой мыши публикацию AdvWorksSalesOrdersMerge и выберите пункт Просмотр состояния агента моментальных снимков.
Отобразятся сведения о текущем состоянии задания агента моментальных снимков для публикации. Перед тем как перейти к следующему занятию, убедитесь, что задание моментального снимка выполнено успешно.
Добавление имени для входа агента слияния в список доступа к публикации
Подключитесь к издателю в SQL Server Management Studio, разверните узел сервера и разверните папку репликации .
В папке Локальные публикации щелкните правой кнопкой мыши публикацию AdvWorksSalesOrdersMerge и выберите пункт Свойства.
a. Выберите страницу Список доступа к публикации и нажмите кнопку Добавить.
b. В диалоговом окне "Добавление доступа к публикации" выберите <Publisher_Machine_Name>\repl_merge и нажмите кнопку "ОК". Снова нажмите кнопку ОК.
Дополнительные сведения см. в разделе:
Создание подписки на публикацию слиянием
В этом разделе описывается добавление подписки к ранее созданной публикации слиянием. В этом учебнике используется удаленный подписчик (NODE2\SQL2016). После будут заданы разрешения на базу данных подписки и вручную сформирован моментальный снимок отфильтрованных данных для новой подписки.
Добавление подписчика для публикации слиянием
Подключитесь к подписчику в СРЕДЕ SQL Server Management Studio и разверните узел сервера. Разверните папку Репликация, щелкните правой кнопкой мыши папку Локальные подписки и выберите пункт Создать подписку. Запустится мастер создания подписки:
На странице Публикация из списка Издатель выберите Найти издатель SQL Server.
В диалоговом окне Подключение к серверу введите имя экземпляра издателя в поле Имя сервера, а затем выберите команду Подключиться:
Щелкните элемент AdvWorksSalesOrdersMerge, а затем нажмите кнопку Далее.
На странице Расположение агента слияния выберите команду Выполнять каждый агент на своем подписчике и нажмите кнопку Далее:
На странице Подписчики выберите имя экземпляра сервера подписчика. Выберите в списке пункт Создать базу данных в разделе База данных подписки.
В диалоговом окне Новая база данных в поле Имя базы данных введите SalesOrdersReplica. Выберите ОК, затем выберите Далее.
На странице Безопасность агента слияния выберите кнопку с многоточием (…). Введите Subscriber_Machine_Name>\repl_merge в поле учетной записи процесса и укажите <пароль для этой учетной записи. Нажмите кнопку ОК, кнопку Далее, а затем — снова Далее.
На странице Расписание синхронизации присвойте параметру Расписание агента значение Выполнение по запросу. Выберите Далее.
На странице Инициализация подписок выберите пункт При первой синхронизации в списке Когда инициализировать. Нажмите кнопку Далее, чтобы перейти на страницу Тип подписки, и выберите соответствующий тип подписки. В этом учебнике используется тип Клиент. После выбора типа подписки нажмите кнопку Далее еще раз.
На странице Значения HOST_NAME в поле Значение HOST_NAME введите adventure-works\pamela0. Выберите Готово.
Выберите Готово еще раз. После создания подписки нажмите кнопку Закрыть.
Задание разрешений сервера на подписчике
Подключитесь к подписчику в SQL Server Management Studio. Разверните узел Безопасность, щелкните правой кнопкой мыши Имена для входа, а затем выберите команду Создать имя для входа.
На странице "Общие" выберите "Поиск" и введите Subscriber_ Machine_Name>\repl_merge в поле "Введите <имя объекта". Выберите команду Проверить имена и нажмите кнопку ОК.
На странице Сопоставление пользователей выберите базу данных SalesOrdersReplica и роль db_owner. На странице Защищаемые объекты предоставьте разрешение Явное для элемента Изменение трассировки. Нажмите ОК.
Создание моментального снимка отфильтрованных данных подписки
Подключитесь к издателю в SQL Server Management Studio, разверните узел сервера и разверните папку репликации .
В папке Локальные публикации щелкните правой кнопкой мыши публикацию AdvWorksSalesOrdersMerge и выберите пункт Свойства.
a. Выберите страницу Секции данных и нажмите кнопку Добавить.
b. В диалоговом окне Добавление секции данных введите значение adventure-works\pamela0 в поле Значение HOST_NAME и нажмите кнопку ОК.
c. Выберите добавленную секцию, выберите команду Создать выбранные моментальные снимки и нажмите кнопку ОК.
Дополнительные сведения см. в разделе:
- Подписка на публикации
- Создание подписки по запросу
- Моментальные снимки для публикаций слиянием с параметризованными фильтрами
Синхронизация подписки на публикацию слиянием
В этом разделе описано, как запустить агент слияния для инициализации подписки с помощью SQL Server Management Studio. Эта процедура также используется для синхронизации с издателем.
Запуск синхронизации и инициализация подписки
Подключитесь к подписчику в SQL Server Management Studio.
Убедитесь, что агент SQL Server запущен. Если это не так, щелкните правой кнопкой мыши "Агент SQL Server" в обозревателе объектов и выберите команду Запустить. Если агент не запускается, это необходимо сделать вручную с помощью диспетчера конфигурации SQL Server.
Разверните узел Репликация. В папке Локальные подписки щелкните правой кнопкой мыши подписку в базе данных SalesOrdersReplica и выберите пункт Просмотр состояния синхронизации.
Нажмите кнопку Запустить, чтобы инициализировать подписку.