Включение возобновляемых подписок репликации транзакций в SQL Server 2019
Введение и меры предосторожности
Эта статья предназначена для репликации в SQL Server 2019. Одной из функций в нем является включенная «возобновляемая подписка».
Эта функция была включена по умолчанию в предыдущих версиях SQL Server, но была отключена с (вероятно) 2017 года.
В будущих версиях SQL Server эта функция может быть удалена. За исключением обновления существующей среды, рекомендуется заменить ее на новое построение репликацией слиянием и т. д.
- ссылка
окружающая среда
Используйте два сервера, один сервер и два SQL Server. Windows Server находится в состоянии, когда дополнительные параметры не были выполнены сразу после установки.
- 1-й блок (сторона публикации)
-
- Windows Server 2019 Стандартная версия
- SQL Server 2019 Developer Edition (требуется стандартный выпуск или более поздняя версия)
- Среда SQL Server Management Studio 18.9.1
- Второй блок (абонентская сторона)
-
- Windows Server 2019 Стандартная версия
- SQL Server 2019 Экспресс-выпуск
- Среда SQL Server Management Studio 18.9.1
цель
Даже если записи таблиц в базах данных первого или второго сервера обновляются Убедитесь, что записи таблиц на серверах друг друга синхронизированы.
Кстати, один на стороне публикации прекрасен, но абонентская сторона может иметь любое количество единиц. Он также работает с несколькими экземплярами SQL Server на одном сервере.
Установка SQL Server
Установка SQL Server не является основной частью этих советов, поэтому я не буду вдаваться в подробности. Перечислены только те, которые имеют отношение к репликации.
Для установки стороны публикации требуется Standard Edition или более поздняя версия. Этот совет устанавливает Developer Edition в качестве тестовой среды.
Подписчиков устраивает Express Edition. Конечно, другие выпуски в порядке, в зависимости от конфигурации БД.
В поле Выбор компонентов выберите Служба компонента Database Engine и Репликация SQL Server. Это одинаково как для стороны публикации, так и для стороны подписчика.
Конфигурация экземпляра по умолчанию используется как на стороне публикации, так и на стороне подписчика. Даже если изменить имя экземпляра, разница заключается в том, будет ли имя экземпляра указываться в спецификации сервера позже.
На стороне публикации настройте автоматический запуск агента SQL Server. Этот параметр можно изменить позже.
Этот совет проверяет подлинность репликации с учетной записью SA SQL Server. Поэтому включите проверку подлинности SQL Server. Если вы не хотите использовать учетную запись sa по соображениям безопасности, замените часть объяснения проверки подлинности SQL Server на проверку подлинности Windows или другую учетную запись.
Сделайте этот параметр одинаковым на обоих серверах.
Установка среды SQL Server Management Studio
Установите загруженную среду SQL Server Management Studio. Поскольку экран установки предназначен только для установки, объяснение опущено.
Перезапустите Windows, если после установки появится запрос на перезагрузку. Кроме того, установите все исправления в Центре обновления Windows.
Создание базы данных и таблиц на стороне публикации
При создании таблицы на стороне публикации подписчик автоматически реплицирует таблицу или запись.
Метод создания такой же, как и обычная процедура, поэтому я опущу детали.
Создается база данных с именем Publication DB в среде SQL Server Management Studio.
Создайте таблицу с именем "Users" и зарегистрируйте столбцы следующим образом: Все, что вам нужно сделать, это проверить синхронизацию записей, поэтому имя, номер и содержимое столбца таблицы могут быть любыми. Однако требуется только первичный ключ.
Добавьте несколько записей, чтобы убедиться, что записи синхронизированы после создания репликации.
Настройка удаленных подключений
Настройте их, чтобы разрешить удаленный доступ к базам данных серверов друг друга. Подробная информация приведена в следующих советах.
Настройка прав доступа к папкам
На сервере на стороне публикации откройте свойства следующей папки: Путь к папке зависит от версии SQL Server и имени экземпляра.
- C:\Программные файлы\Microsoft SQL Server\MSSQL15. MSSQLSERVER\MSSQL\ReplData
На вкладке Безопасность добавьте учетную запись "SERVICE" и установите для нее полный контроль.
Настройка дистрибутива
На этот раз дистрибутив создается на том же сервере, что и публикация.
Запустите среду SQL Server Management Studio, щелкните правой кнопкой мыши репликацию и выберите Настроить распространение.
Нажмите кнопку Далее.
Установите флажок «Создать свой собственный сервер > своего собственного дистрибьютора» <.
После этого нажмите «Далее», как есть, чтобы завершить его.
Создание публикации
Изначально он создается из мастера, как показано на следующем рисунке: В SQL Server 2019 создание из мастера не включает «возобновляемые подписки» и синхронизацию записей между таблицами.
Поэтому мы используем T-SQL для создания публикации здесь.
Ниже приведен SQL для создания публикации с проверкой подлинности SQL Server. Пожалуйста, измените пароль в соответствии с вашими настройками.
-- トランザクションパブリケーションを追加するための宣言
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'パブリケーションDB';
SET @publication = N'パブリケーション';
SET @login = 'sa';
SET @password = 'saパスワード';
USE [パブリケーションDB]
-- パブリケーションデータベースでトランザクションレプリケーションを有効にする。
EXEC sp_replicationdboption
@dbname=@publicationDB,
@optname=N'publish',
@value = N'true';
-- sp_addlogreader_agent を実行して、エージェントジョブを作成します。
EXEC sp_addlogreader_agent
@publisher_login = @login,
@publisher_password = @password,
@publisher_security_mode = 0;
-- 即時更新、キュー更新、およびプルサブスクリプションをサポートするトランザクションパブリケーションを作成します。
EXEC sp_addpublication
@publication = @publication,
@status = N'active',
@allow_sync_tran = N'true',
@allow_queued_tran = N'true',
@allow_pull = N'true',
@independent_agent = N'true',
-- 関連するデフォルトのプロパティを明示的に宣言する
@conflict_policy = N'pub wins';
-- デフォルトのスケジュールを使用して、パブリケーションの新しいスナップショットジョブを作成します。
EXEC sp_addpublication_snapshot
@publication = @publication,
@publisher_login = @login,
@publisher_password = @password,
@publisher_security_mode = 0;
GO
При использовании проверки подлинности Windows измените части «sp_addlogreader_agent» и «sp_addpublication_snapshot» следующим образом.
Проверка подлинности SQL Server
@publisher_login = @login,
@publisher_password = @password,
@publisher_security_mode = 0;
Проверка подлинности Windows
@job_login = @login,
@job_password = @password,
@publisher_security_mode = 1;
Если он создан успешно, вы увидите следующее:
Кроме того, откройте свойства созданной публикации и убедитесь, что включена «Возобновляемая подписка».
Указание статей
Изначально, если вы создадите его с помощью мастера, вы одновременно укажете статью, Поскольку приведенный выше скрипт не включает обработку статьи, он указывается из свойства.
Выберите «Статьи» в меню слева, проверьте таблицу, которую вы хотите синхронизировать, и нажмите кнопку OK.
В столбцы синхронизируемой таблицы добавляется msrepl_tran_version и одновременно добавляется триггер таблицы.
Создание подписки
Щелкните правой кнопкой мыши только что созданную публикацию и выберите Новая подписка.
Нажмите кнопку Далее.
Выберите созданную публикацию.
Установите флажок Запускать всех агентов на <заменование сервера>.
Нажмите кнопку Добавить подписчика SQL Server.
Задает сервер (+ имя экземпляра), регистрируемый в качестве подписчика.
Если у вас нет базы данных подписчиков, создайте новую. Если он уже существует, выберите его, так как отображается элемент выделения.
После указания базы данных нажмите кнопку Далее.
Если у вас более одного подписчика, вы можете зарегистрировать столько, сколько вам нужно здесь.
Нажмите кнопку "...".
Здесь агент запускается под учетной записью sa, но настройте его в соответствии с вашей средой.
Выберите Выполнять непрерывно.
Параметр «Возобновляемая подписка» должен быть работоспособным.
В случае «фиксации изменений одновременно», он синхронизируется немедленно, но все серверы должны быть запущены.
«Изменения очереди и фиксация, если это возможно» накапливает изменения в очереди, поэтому они фиксируются, когда сервер запущен, даже если сервер не запущен. Однако синхронизация выполняется медленно.
Установите флажок Использовать предопределенный связанный или удаленный сервер.
Выберите Сейчас.
Нажмите кнопку Далее.
Нажмите кнопку Готово.
Закрыть, если ошибок нет.
Через несколько минут вы увидите, что база данных была создана на стороне подписчика и что таблицы также были созданы.
Вы можете убедиться, что записи также синхронизированы.
Если через некоторое время он не синхронизируется, выполните следующие действия.
Щелкните правой кнопкой мыши созданную подписку и выберите Повторная инициализация.
Установите флажок «Использовать новый снимок» и нажмите кнопку «Настроить на повторную инициализацию».
При возникновении ошибки повторите попытку.
Проверка работы
Попробуйте добавить или изменить таблицы на стороне публикации.
Подождите несколько секунд или около того, чтобы убедиться, что он синхронизирован с подписчиком.
Теперь давайте изменим запись на стороне подписчика.
Вы можете убедиться, что он синхронизирован со стороной публикации.
Если у вас зарегистрировано несколько подписчиков, убедитесь, что они синхронизированы между подписчиками.