Habilitar assinaturas renováveis de replicação transacional no SQL Server 2019

Data de criação de página :

Introdução e precauções

Este artigo destina-se à replicação no SQL Server 2019. Uma das funções nele é a "assinatura renovável" está habilitada.

Esse recurso foi ativado por padrão em versões anteriores do SQL Server, mas foi desativado desde (provavelmente) 2017.

Versões futuras do SQL Server podem remover esse recurso. Exceto para atualizar um ambiente existente, recomendamos que você o substitua por uma nova construção com replicação de mesclagem etc.

referência

ambiente

Use dois servidores, um servidor e dois SQL Server. O Windows Server está em um estado onde nenhuma configuração adicional foi feita imediatamente após a instalação.

1ª unidade (lado da publicação)
  • Windows Server 2019 Standard Edition
  • SQL Server 2019 Developer Edition (Standard Edition ou superior obrigatório)
  • SQL Server Management Studio 18.9.1
Segunda unidade (lado do assinante)
  • Windows Server 2019 Standard Edition
  • SQL Server 2019 Express Edition
  • SQL Server Management Studio 18.9.1

propósito

Mesmo que os registros de tabelas no primeiro ou segundo bancos de dados do servidor sejam atualizados Certifique-se de que os registros de tabela nos servidores uns dos outros sejam sincronizados.

A propósito, uma do lado da publicação está bem, mas o lado assinante pode ter qualquer número de unidades. Ele também funciona com várias instâncias do SQL Server em um único servidor.

Instalação do SQL Server

Instalar o SQL Server não é a parte principal dessas Dicas, então não vou entrar em detalhes. Apenas aqueles relevantes para a replicação estão listados.

A instalação do lado de publicação requer a Standard Edition ou superior. Esta dica instala o Developer Edition como um ambiente de teste.

Os assinantes estão bem com o Express Edition. Claro, outras edições são boas, dependendo da configuração db.

Para seleção de recursos, selecione Serviço de mecanismo de banco de dados e replicação do servidor SQL. Isso é o mesmo tanto para o lado da publicação quanto para o lado do assinante.

A configuração da instância é padrão tanto para o lado da publicação quanto para o lado do assinante. Mesmo que você altere o nome da instância, a diferença é se você especifica ou não o nome da instância na especificação do servidor mais tarde.

No lado da publicação, configure o SQL Server Agent para iniciar automaticamente. Você pode alterar esta configuração mais tarde.

Esta dica autentica a replicação com a conta SA DO SQL Server. Portanto, habilite a autenticação do SQL Server. Se você não quiser usar a conta sa por razões de segurança, substitua a parte de autenticação do SQL Server da explicação posteriormente com autenticação do Windows ou outra conta.

Faça com que esta configuração seja a mesma em ambos os servidores.

Instalando o SQL Server Management Studio

Instale o SQL Server Management Studio que você baixou. Como a tela de instalação é apenas para instalar, a explicação é omitida.

Reinicie o Windows se você for solicitado a reiniciar após a instalação. Além disso, instale quaisquer patches no Windows Update.

Crie um banco de dados e tabelas do lado da publicação

Se você criar uma tabela no lado da publicação, o lado do assinante replica automaticamente a tabela ou o registro.

O método de criação é o mesmo que o procedimento normal, então vou omitir os detalhes.

Você está criando um banco de dados chamado Publication DB no SQL Server Management Studio.

Crie uma tabela chamada "Usuários" e registre as colunas da seguinte forma: Tudo o que você precisa fazer é verificar a sincronização dos registros, para que o nome, o número e o conteúdo da coluna da tabela possam ser qualquer coisa. No entanto, apenas a chave principal é necessária.

Adicione alguns registros para garantir que os registros sejam sincronizados após a reprodução da replicação.

Configuração de conexões remotas

Configure-os para permitir acesso remoto aos bancos de dados dos servidores uns dos outros. Os detalhes são resumidos nas seguintes dicas.

Definindo permissões de pasta

No servidor do lado da publicação, abra as propriedades da seguinte pasta: O caminho da pasta depende da versão do SQL Server e do nome da instância.

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

Na guia Segurança, adicione a conta "SERVICE" e defina-a para o controle total.

Configurando a Distribuição

Desta vez, a distribuição é criada no mesmo servidor da publicação.

Inicie o SQL Server Management Studio, clique com o botão direito do mouse na replicação e selecione Configurar distribuição.

Clique em Next.

Verifique "Faça seu próprio servidor > seu próprio distribuidor" <.

Depois disso, clique em "Next" como é para completá-lo.

Criando uma publicação

Originalmente, ele é criado a partir do assistente como mostrado na figura a seguir, No SQL Server 2019, criar a partir de um assistente não permite "assinaturas renováveis" e não permite a sincronização de registros entre tabelas.

Portanto, usamos o T-SQL para criar a publicação aqui.

A seguir, o SQL para criar uma publicação com autenticação do SQL Server: Por favor, altere a senha de acordo com suas configurações.

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

Ao usar a autenticação do Windows, altere as partes "sp_addlogreader_agent" e "sp_addpublication_snapshot" da seguinte forma.

Autenticação do servidor SQL

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

Autenticação do Windows

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

Se for criado com sucesso, você verá o seguinte:

Além disso, abra as propriedades da publicação criada e certifique-se de que a "assinatura renovável" esteja ativada.

Especificando artigos

Originalmente, se você criá-lo com um assistente, você especificará o artigo ao mesmo tempo, Como o script acima não inclui o processamento do artigo, ele é especificado a partir da propriedade.

Selecione "Artigos" no menu à esquerda, verifique a tabela deseja sincronizar e clique no botão OK.

Uma msrepl_tran_version é adicionada às colunas da tabela para ser sincronizada, e um gatilho de tabela é adicionado ao mesmo tempo.

Crie uma assinatura

Clique com o botão direito da publicação que você acabou de criar e selecione Nova Assinatura.

Clique em Next.

Selecione a publicação que você criou.

Verifique Executar todos os agentes no nome do servidor < Distribuidor>.

Clique no botão Adicionar usuário do servidor SQL.

Especifica o servidor (+ nome da ocorrência) para se registrar como assinante.

Se você não tem um banco de dados de assinantes, crie um novo. Se ele já existir, selecione-o porque o item de seleção é exibido.

Depois de especificar o banco de dados, clique em Avançar.

Se você tem mais de um assinante, você pode se cadastrar quantas precisar aqui.

Clique no botão "..."

Aqui, o agente corre sob a conta sa, mas por favor, defina de acordo com o seu ambiente.

Selecione Executar continuamente.

A configuração "Assinatura Renovável" deve estar operacional.

No caso de "cometer alterações ao mesmo tempo", ele é sincronizado imediatamente, mas todos os servidores devem estar em execução.

"A fila muda e se compromete se possível" acumula alterações na fila, para que sejam comprometidas quando o servidor estiver em execução, mesmo que o servidor não esteja em execução. No entanto, o tempo de sincronização é lento.

Verificar Use um servidor vinculado ou remoto predefinido.

Selecione Agora.

Clique em Next.

Clique no botão Terminar.

Feche se não houver erros.

Após alguns momentos, você pode ver que o banco de dados foi criado no lado do assinante e que as tabelas também foram criadas.

Você pode verificar se os registros também estão sincronizados.

Se ele não sincronizar depois de um tempo, por favor faça o seguinte.

Clique com o botão direito da assinatura criada e selecione Reinitialize.

Verifique "Use novo instantâneo" e clique no botão "Definir para reiniciar".

Se ocorrer um erro, tente novamente.

Verificação de operação

Tente adicionar ou modificar tabelas no lado da publicação.

Espere alguns segundos ou mais para ter certeza de que está sincronizado com o assinante.

Agora vamos modificar o registro no lado do assinante.

Você pode verificar se ele está sincronizado com o lado da publicação.

Se você tiver vários assinantes registrados, certifique-se de que eles estão sincronizados entre os assinantes.