Habilita les subscripcions renovables de replicació transaccional a l'SQL Server 2019

Data de creació de la pàgina :

Introducció i precaucions

Aquest article està pensat per a la replicació a l'SQL Server 2019. Una de les funcions que s'hi ha habilitat és la "subscripció renovable".

Aquesta característica s'ha habilitat per defecte en versions anteriors de l'SQL Server, però s'ha inhabilitat des de (probablement) 2017.

Les versions futures de l'SQL Server poden suprimir aquesta característica. A excepció de l'actualització d'un entorn existent, us recomanem que el substituïu per una nova construcció per replicació de fusió, etc.

referència

entorn

Utilitzeu dos servidors, un servidor i dos SQL Server. El Windows Server es troba en un estat en què no s'ha fet cap configuració addicional immediatament després de la instal·lació.

1a unitat (costat de publicació)
  • Edició estàndard del Windows Server 2019
  • Edició per a desenvolupadors de l'SQL Server 2019 (es requereix edició estàndard o superior)
  • Estudi d'administració del servidor SQL 18.9.1
Segona unitat (costat abonat)
  • Edició estàndard del Windows Server 2019
  • Edició Express SQL Server 2019
  • Estudi d'administració del servidor SQL 18.9.1

propòsit

Fins i tot si s'actualitzen els registres de taula a la primera o segona base de dades de servidors Assegureu-vos que els registres de taula dels servidors de l'altre estiguin sincronitzats.

Per cert, un al costat de la publicació està bé, però el costat del subscriptor pot tenir qualsevol nombre d'unitats. També funciona amb múltiples instàncies de SQL Server en un sol servidor.

S'està instal·lant l'SQL Server

La instal·lació de l'SQL Server no és la part principal d'aquests consells, de manera que no entraré en detalls. Només s'enumeren els rellevants per a la replicació.

La instal·lació del costat de publicació requereix edició estàndard o superior. Aquest Consell instal·la Developer Edition com a entorn de prova.

Els subscriptors estan bé amb l'edició express. Per descomptat, altres edicions estan bé, depenent de la configuració de DB.

Per a la selecció de característiques, seleccioneu Servei de motor de base de dades i replicació de l'SQL Server. El mateix passa tant amb la part de la publicació com per a la part del subscriptor.

La configuració de la instància per defecte és per defecte tant al costat de la publicació com al costat del subscriptor. Fins i tot si canvieu el nom de la instància, la diferència és si especifiqueu o no el nom de la instància a l'especificació del servidor més endavant.

Al costat de la publicació, configureu l'agent de l'SQL Server perquè s'iniciï automàticament. Podeu canviar aquesta configuració més endavant.

Aquest consell autentica la replicació amb el compte de l'SQL Server sa. Per tant, habiliteu l'autenticació de l'SQL Server. Si no voleu utilitzar el compte sa per motius de seguretat, substituïu la part d'autenticació de l'SQL Server de l'explicació més endavant per l'autenticació del Windows o un altre compte.

Feu que aquesta configuració sigui la mateixa en ambdós servidors.

S'està instal·lant l'estudi d'administració de l'SQL Server

Instal·leu l'estudi d'administració de l'SQL Server que heu baixat. Com que la pantalla d'instal·lació només s'ha d'instal·lar, s'omet l'explicació.

Reinicieu el Windows si se us demana que reinicieu després de la instal·lació. A més, instal·leu qualsevol pedaç al Windows Update.

Crear una base de dades i taules de publicació

Si creeu una taula al costat de la publicació, el costat del subscriptor replica automàticament la taula o el registre.

El mètode de creació és el mateix que el procediment normal, de manera que ometo els detalls.

Esteu creant una base de dades anomenada Publication DB a l'SQL Server Management Studio.

Creeu una taula anomenada "Usuaris" i registreu les columnes de la manera següent: Tot el que heu de fer és comprovar la sincronització dels registres, de manera que el nom, el número i el contingut de la columna de la taula poden ser qualsevol cosa. No obstant això, només es requereix la clau primària.

Afegiu uns quants registres per assegurar-vos que els registres se sincronitzen després de crear la replicació.

S'estan configurant les connexions remotes

Configureu-los per permetre l'accés remot a les bases de dades dels servidors de l'altre. Els detalls es resumeixen en els següents consells.

S'estan definint els permisos de la carpeta

Al servidor del costat de la publicació, obriu les propietats de la carpeta següent: El camí de la carpeta depèn de la versió de l'SQL Server i del nom de la instància.

  • C:\Fitxers de programa\Microsoft SQL Server\MSSQL15. MSSQLSERVER\MSSQL\ReplData

Des de la pestanya Seguretat, afegiu el compte "SERVEI" i establiu-lo al control total.

Configuració de la distribució

Aquesta vegada, la distribució es crea al mateix servidor que la publicació.

Inicieu l'SQL Server Management Studio, feu clic amb el botó dret del ratolí Replicació i seleccioneu Configura la distribució.

Feu clic a Endavant.

Marqueu "Fes el teu propi servidor > el teu propi distribuïdor" <.

Després d'això, feu clic a "Següent" com ho és per completar-lo.

Creació d'una publicació

Originalment, es crea a partir de l'auxiliar com es mostra a la figura següent, A l'SQL Server 2019, crear a partir d'un assistent no habilita "subscripcions renovables" i no permet la sincronització de registres entre taules.

Per tant, utilitzem T-SQL per crear la publicació aquí.

El següent és l'SQL per crear una publicació amb autenticació de l'SQL Server: Canvieu la contrasenya segons la configuració.

-- トランザクションパブリケーションを追加するための宣言
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

Quan utilitzeu l'autenticació del Windows, canvieu les parts "sp_addlogreader_agent" i "sp_addpublication_snapshot" de la manera següent.

Autenticació del servidor SQL

    @publisher_login = @login, 
    @publisher_password = @password,
    @publisher_security_mode = 0;

Autenticació del Windows

    @job_login = @login, 
    @job_password = @password,
    @publisher_security_mode = 1;

Si es crea correctament, veureu el següent:

A més, obriu les propietats de la publicació creada i assegureu-vos que "Subscripció renovable" està habilitada.

S'estan especificant els articles

Originalment, si el creeu amb un auxiliar, especificareu l'article al mateix temps, Com que l'script anterior no inclou el processament d'articles, s'especifica des de la propietat.

Seleccioneu "Articles" al menú de l'esquerra, comproveu la taula que voleu sincronitzar i feu clic al botó D'acord.

S'afegeix un msrepl_tran_version a les columnes de la taula que s'ha de sincronitzar i s'afegeix un disparador de taula al mateix temps.

Crear una subscripció

Feu clic amb el botó dret del ratolí a la publicació que acabeu de crear i seleccioneu Subscripció nova.

Feu clic a Endavant.

Seleccioneu la publicació que heu creat.

Marqueu Executa tots els agents al < nom del servidor distribuïdor>.

Feu clic al botó Afegeix subscriptors de l'SQL Server.

Especifica el servidor (+ nom de la instància) per registrar-se com a subscriptor.

Si no teniu una base de dades de subscriptors, creeu-ne una de nova. Si ja existeix, seleccioneu-lo perquè es mostra l'element de selecció.

Després d'especificar la base de dades, feu clic a Endavant.

Si teniu més d'un subscriptor, podeu registrar-vos tants com necessiteu aquí.

Feu clic al botó "...".

Aquí, l'agent s'executa sota el compte sa, però si us plau, establiu-lo segons el vostre entorn.

Seleccioneu Executa contínuament.

L'opció "Subscripció renovable" ha d'estar operativa.

En el cas de "confirmar canvis al mateix temps", se sincronitza immediatament, però tots els servidors han d'estar executant-se.

"La cua canvia i es publica si és possible" acumula canvis a la cua, de manera que s'envien quan el servidor s'està executant, fins i tot si el servidor no s'està executant. No obstant això, el temps de sincronització és lent.

Marqueu Utilitza un servidor enllaçat o remot predefinit.

Seleccioneu Ara.

Feu clic a Endavant.

Feu clic al botó Final.

Tanqueu si no hi ha errors.

Al cap d'uns instants, podeu veure que la base de dades s'ha creat al costat dels subscriptors i que les taules també s'han creat.

Podeu verificar que els registres també estan sincronitzats.

Si no se sincronitza al cap d'un temps, feu el següent.

Feu clic amb el botó dret del ratolí a la subscripció creada i seleccioneu Torna a marcar.

Marqueu "Utilitza una instantània nova" i feu clic al botó "Defineix per tornar a marcar".

Si es produeix un error, torneu-ho a provar.

Comprovació de l'operació

Proveu d'afegir o modificar taules al costat de la publicació.

Espereu uns segons més o menys per assegurar-vos que estigui sincronitzat amb el subscriptor.

Ara modifiquem el registre a la part del subscriptor.

Podeu verificar que està sincronitzat amb el costat de la publicació.

Si teniu diversos subscriptors registrats, assegureu-vos que estiguin sincronitzats entre subscriptors.