Abilitare le sottoscrizioni rinnovabili di replica transazionale in SQL Server 2019

Data di creazione della pagina :

Introduzione e precauzioni

Questo articolo è destinato alla replica in SQL Server 2019. Una delle funzioni in esso è "abbonamento rinnovabile" è abilitato.

Questa funzionalità era abilitata per impostazione predefinita nelle versioni precedenti di SQL Server, ma è stata disabilitata dal (probabilmente) 2017.

Le versioni future di SQL Server potrebbero rimuovere questa funzionalità. Fatta eccezione per l'aggiornamento di un ambiente esistente, è consigliabile sostituirlo con la nuova costruzione con la replica di tipo merge e così via.

riferimento

ambiente

Utilizzare due server, un server e due SQL Server. Windows Server si trova in uno stato in cui non sono state effettuate impostazioni aggiuntive immediatamente dopo l'installazione.

1a unità (lato pubblicazione)
  • Windows Server 2019 Standard Edition
  • SQL Server 2019 Developer Edition (è richiesta la Standard Edition o versione successiva)
  • SQL Server Management Studio 18.9.1
Seconda unità (lato abbonato)
  • Windows Server 2019 Standard Edition
  • SQL Server 2019 Express Edition
  • SQL Server Management Studio 18.9.1

scopo

Anche se i record di tabella nel primo o nel secondo database del server vengono aggiornati Assicurarsi che i record di tabella sui rispettivi server siano sincronizzati.

A proposito, uno sul lato della pubblicazione va bene, ma il lato abbonato può avere qualsiasi numero di unità. Funziona anche con più istanze di SQL Server in un singolo server.

Installazione di SQL Server

L'installazione di SQL Server non è la parte principale di questi suggerimenti, quindi non entrerò nei dettagli. Sono elencati solo quelli rilevanti per la replica.

L'installazione del lato pubblicazione richiede Standard Edition o versione successiva. Questo suggerimento installa Developer Edition come ambiente di test.

Gli abbonati vanno bene con Express Edition. Naturalmente, altre edizioni vanno bene, a seconda della configurazione del DB.

Per Selezione funzionalità, selezionare Servizio Motore di database e Replica SQL Server. Questo è lo stesso sia per il lato pubblicazione che per il lato abbonato.

Per impostazione predefinita, configurazione istanza viene impostata sia sul lato pubblicazione che sul lato sottoscrittore. Anche se si modifica il nome dell'istanza, la differenza è se si specifica o meno il nome dell'istanza nella specifica del server in un secondo momento.

Sul lato della pubblicazione, configurare SQL Server Agent per l'avvio automatico. È possibile modificare questa impostazione in un secondo momento.

Questo suggerimento autentica la replica con l'account SQL Server sa. Pertanto, abilitare l'autenticazione di SQL Server. Se non si desidera utilizzare l'account sa per motivi di sicurezza, sostituire la parte relativa all'autenticazione di SQL Server della spiegazione in un secondo momento con l'autenticazione di Windows o un altro account.

Rendere questa impostazione uguale su entrambi i server.

Installazione di SQL Server Management Studio

Installare SQL Server Management Studio scaricato. Poiché la schermata di installazione è solo per l'installazione, la spiegazione viene omessa.

Riavviare Windows se viene richiesto di riavviare dopo l'installazione. Inoltre, installare eventuali patch in Windows Update.

Creare un database e tabelle sul lato pubblicazione

Se si crea una tabella sul lato pubblicazione, il lato sottoscrittore replica automaticamente la tabella o il record.

Il metodo di creazione è lo stesso della normale procedura, quindi ometterò i dettagli.

Si sta creando un database denominato Database di pubblicazione in SQL Server Management Studio.

Creare una tabella denominata "Utenti" e registrare le colonne come segue: Tutto quello che devi fare è controllare la sincronizzazione dei record, in modo che il nome, il numero e il contenuto della colonna della tabella possano essere qualsiasi cosa. Tuttavia, è necessaria solo la chiave primaria.

Aggiungere alcuni record per assicurarsi che vengano sincronizzati dopo la creazione della replica.

Configurazione delle connessioni remote

Configurali per consentire l'accesso remoto ai database dei server degli altri. I dettagli sono riassunti nei seguenti suggerimenti.

Impostazione delle autorizzazioni per le cartelle

Sul server sul lato pubblicazione, aprire le proprietà della seguente cartella: Il percorso della cartella dipende dalla versione di SQL Server e dal nome dell'istanza.

  • C:\Programmi\Microsoft SQL Server\MSSQL15. MSSQLSERVER\MSSQL\ReplData

Dalla scheda Sicurezza, aggiungi l'account "SERVICE" e impostalo sul controllo completo.

Configurazione della distribuzione

Questa volta, la distribuzione viene creata sullo stesso server della pubblicazione.

Avviare SQL Server Management Studio, fare clic con il pulsante destro del mouse su Replica e scegliere Configura distribuzione.

Fare clic su Avanti.

Seleziona "Crea il tuo server > il tuo distributore" <.

Successivamente, fai clic su "Avanti" così com'è per completarlo.

Creazione di una pubblicazione

Originariamente, viene creato dalla procedura guidata, come illustrato nella figura riportata di seguito. In SQL Server 2019, la creazione da una procedura guidata non abilita le "sottoscrizioni rinnovabili" e non consente la sincronizzazione dei record tra tabelle.

Pertanto, utilizziamo T-SQL per creare la pubblicazione qui.

Di seguito è riportato SQL per la creazione di una pubblicazione con autenticazione di SQL Server: Si prega di modificare la password in base alle proprie impostazioni.

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

Quando si utilizza l'autenticazione di Windows, modificare le parti "sp_addlogreader_agent" e "sp_addpublication_snapshot" come segue.

Autenticazione di SQL Server

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

Autenticazione di Windows

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

Se viene creato correttamente, verrà visualizzato quanto segue:

Inoltre, aprire le proprietà della pubblicazione creata e assicurarsi che "Sottoscrizione rinnovabile" sia abilitato.

Specifica degli articoli

Originariamente, se lo crei con una procedura guidata, specificherai l'articolo allo stesso tempo, Poiché lo script precedente non include l'elaborazione dell'articolo, viene specificato dalla proprietà.

Seleziona "Articoli" dal menu a sinistra, controlla la tabella che desideri sincronizzare e fai clic sul pulsante OK.

Un msrepl_tran_version viene aggiunto alle colonne della tabella da sincronizzare e contemporaneamente viene aggiunto un trigger di tabella.

Creare un abbonamento

Fare clic con il pulsante destro del mouse sulla pubblicazione appena creata e selezionare Nuova sottoscrizione.

Fare clic su Avanti.

Selezionare la pubblicazione creata.

Selezionare Esegui tutti gli agenti sul nome del server di distribuzione <>.

Fare clic sul pulsante Aggiungi sottoscrittore di SQL Server.

Specifica il server (+ nome istanza) da registrare come sottoscrittore.

Se non si dispone di un database del sottoscrittore, crearne uno nuovo. Se esiste già, selezionarlo perché viene visualizzato l'elemento di selezione.

Dopo aver specificato il database, fare clic su Avanti.

Se hai più di un abbonato, puoi registrarne tutti quelli di cui hai bisogno qui.

Fare clic sul pulsante "...".

Qui, l'agente viene eseguito con l'account sa, ma impostalo in base al tuo ambiente.

Selezionare Esegui continuamente.

L'impostazione "Sottoscrizione rinnovabile" dovrebbe essere operativa.

Nel caso di "commit modifiche allo stesso tempo", viene sincronizzato immediatamente, ma tutti i server devono essere in esecuzione.

"Queue changes and commit if possible" accumula le modifiche nella coda, in modo che vengano salvate quando il server è in esecuzione, anche se il server non è in esecuzione. Tuttavia, la temporizzazione della sincronizzazione è lenta.

Selezionare Usa un server collegato o remoto predefinito.

Seleziona Ora.

Fare clic su Avanti.

Fare clic sul pulsante Fine.

Chiudi se non ci sono errori.

Dopo alcuni istanti, puoi vedere che il database è stato creato sul lato sottoscrittore e che anche le tabelle sono state create.

È possibile verificare che anche i record siano sincronizzati.

Se non si sincronizza dopo un po ', fai quanto segue.

Fare clic con il pulsante destro del mouse sulla sottoscrizione creata e selezionare Reinizialize.

Seleziona "Usa nuova istantanea" e fai clic sul pulsante "Imposta per reinizializzare".

Se si verifica un errore, riprovare.

Controllo del funzionamento

Provare ad aggiungere o modificare tabelle sul lato pubblicazione.

Attendi qualche secondo o giù di lì per assicurarti che sia sincronizzato con l'abbonato.

Ora modifichiamo il record sul lato abbonato.

È possibile verificare che sia sincronizzato con il lato pubblicazione.

Se hai più abbonati registrati, assicurati che siano sincronizzati tra gli abbonati.