Разрешаване на транзакции репликация възобновяеми абонаменти в SQL Server 2019

Дата на създаване на страница :

Въведение и предпазни мерки

Тази статия е предназначена за репликация в SQL Server 2019. Една от функциите в него е "абонамент за възобновяеми източници" е разрешена.

Тази функция е активирана по подразбиране в предишни версии на SQL Server, но е заличена от (вероятно) 2017.

Бъдещите версии на SQL Server може да премахнат тази функция. С изключение на надстройването на съществуваща среда, препоръчваме да я заместите за ново строителство с репликация на обединяване и т.н.

препратка

околна среда

Използвайте два сървъра, един сървър и два SQL Сървъра. Windows Server е в състояние, в което не са направени допълнителни настройки веднага след инсталирането.

1-ва единица (страна на публикацията)
  • Стандартно издание на Windows Server 2019
  • SQL Server 2019 разработчик издание (стандартно издание или по-висока изисква)
  • Студио за управление на SQL сървър 18.9.1
Втора единица (страна на абоната)
  • Стандартно издание на Windows Server 2019
  • SQL Server 2019 експресно издание
  • Студио за управление на SQL сървър 18.9.1

цел

Дори ако записите в таблицата или в бази данни на първия или втория сървър се актуализират Гарантирайте, че записите в таблицата на сървърите на другия са синхронизирани.

Между другото, един от страната на публикацията е добре, но страната на абоната може да има произволен брой единици. Той също така работи с няколко екземпляра на SQL Server на един сървър.

Инсталиране на SQL Сървър

Инсталирането на SQL Server не е основната част от тези Съвети, така че няма да влизам в подробности. Изброени са само тези, които са от значение за репликацията.

Инсталирането на страната на публикацията изисква Стандартно издание или по-високо. Този Съвети инсталира Developer Edition като тестова среда.

Абонатите са добре с Express Edition. Разбира се, други издания са добре, в зависимост от конфигурацията на DB.

За избор на функции изберете Услуга за двигатели на база данни и репликация на SQL Server. Това е същото както за страната на публикацията, така и за страната на абоната.

Instance Configuration по подразбиране както на страната на публикацията, така и на страната на абоната. Дори ако промените името на екземпляра, разликата е дали или не зададете името на екземпляра в спецификацията на сървъра по-късно.

От страна на публикацията конфигурирайте SQL Server Agent да се стартира автоматично. Можете да промените тази настройка по-късно.

Този съвет удостоверява репликация с SQL Server sa акаунт. Затова разрешаване на удостоверяване на SQL Server. Ако не искате да използвате sa акаунт от съображения за сигурност, заменете SQL Server удостоверяване част от обяснението по-късно с Windows удостоверяване или друг акаунт.

Направете тази настройка еднаква и на двата сървъра.

Инсталиране на студио за управление на SQL Server

Инсталирайте SQL Server студио за управление, който сте изтеглили. Тъй като инсталационният екран е само за инсталиране, обяснението се пропуска.

Рестартирайте Windows, ако получите подкана да рестартирате след инсталирането. Също така, инсталирайте всякакви корекции в Windows Update.

Създаване на база данни и таблици от страна на публикуване

Ако създадете таблица от страната на публикацията, страната на абоната автоматично възпроизвежда таблицата или записа.

Методът на създаване е същият като нормалната процедура, така че ще пропусна детайлите.

Създавате база данни с име Публикация DB в SQL Server management Studio.

Създайте таблица с име "Потребители" и регистрирайте колоните, както следва: Всичко, което трябва да направите, е да проверите синхронизацията на записите, така че името, номерът и съдържанието на колоната на таблицата могат да бъдат всичко. Въпреки това е необходим само първичният ключ.

Добавете няколко записа, за да се уверите, че записите са синхронизирани след създаването на репликацията.

Конфигуриране на отдалечени връзки

Конфигурирайте ги да позволяват отдалечен достъп до базите данни на сървърите на другия. Подробностите са обобщени в следните съвети.

Задаване на разрешения за папки

На сървъра от страната на публикацията отворете свойствата на следната папка: Пътят на папката зависи от версията на SQL Server и името на екземпляра.

  • C:\Програмни файлове\Microsoft SQL Server\MSSQL15. MSSQLSERVER\MSSQL\ReplData

От раздела Защита добавете акаунта "УСЛУГА" и го задайте на пълен контрол.

Конфигуриране на разпределението

Този път разпространението се създава на същия сървър като публикацията.

Стартирайте SQL Server management Studio, щракнете с десния бутон върху репликация и изберете Конфигуриране на разпространение.

Щракнете върху напред.

Проверете "Направете свой собствен сървър > собствения си дистрибутор" <.

След това кликнете върху "Next", както е, за да го завършите.

Създаване на публикация

Първоначално тя е създадена от съветника, както е показано на следната фигура, В 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 сървър

    @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, но моля, задайте го според вашата среда.

Изберете Изпълнение непрекъснато.

Настройката "Абонамент за възобновяеми източници" следва да функционира.

В случай на "къмит промени едновременно", той се синхронизира незабавно, но всички сървъри трябва да се изпълняват.

"Опашка се променя и къмит, ако е възможно" натрупва промени в опашката, така че те са извършени, когато сървърът се изпълнява, дори ако сървърът не се изпълнява. Времето за синхронизация обаче е бавно.

Проверка Използвайте предварително зададен свързан или отдалечен сървър.

Изберете Сега.

Щракнете върху напред.

Кликнете върху бутона "Готово".

Затворете, ако няма грешки.

След няколко момента можете да видите, че базата данни е създадена от страна на абоната и че таблиците също са създадени.

Можете да проверите дали записите също са синхронизирани.

Ако не се синхронизира след известно време, моля, направете следното.

Щракнете с десния бутон върху създадения абонамент и изберете Reinitialize.

Проверете "Използване на нова снимка" и кликнете върху бутона "Задаване за повторно инициализиране".

Ако възникне грешка, опитайте отново.

Проверка на операцията

Опитайте се да добавите или модифицирате таблици от страната на публикацията.

Изчакайте няколко секунди или така, за да се уверите, че е синхронизиран с абоната.

Сега нека модифицираме записа от страна на абоната.

Можете да проверите дали е синхронизиран към страната на публикацията.

Ако имате регистрирани няколко абоната, уверете се, че те са синхронизирани между абонатите.