AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 187412
Accepted
Mike
Mike
Asked: 2017-10-02 22:19:58 +0800 CST2017-10-02 22:19:58 +0800 CST 2017-10-02 22:19:58 +0800 CST

Como posso configurar a replicação com o nome DNS em vez do nome do servidor

  • 772

Estamos usando certificados SSL de uma CA pública em cada SQL Server em nossa topologia de replicação transacional (push) e desejamos ter o EncryptionLevel = 2 para nossos Agentes Distribuidores. Atualmente EncryptionLevel está definido como 1 e funciona bem. (A diferença entre 1 e 2 é que 1 diz ao agente apenas para usar criptografia e 2 diz para ele também validar a cadeia de certificação dos certificados SSL)

Os certificados SSL são de uma CA pública. O Nome da Entidade é o FQDN completo do Windows do servidor (SERVER1.mywindowsdomain.com) e a lista Nomes Alternativos da Entidade contém o FQDN DNS completo (MYAPP.MYDOMAIN.COM).

Posso confirmar que, usando o SSMS, posso me conectar corretamente a cada SQL Server sem marcar 'Trust Server certificate' na caixa de diálogo de conexão, o que significa que a cadeia de certificados está sendo validada corretamente com sucesso.

Quando altero o EncryptionLevel para = 2, nossos Agentes de Distribuição não podem mais se conectar ao Publicador/Distribuidor em execução no mesmo servidor. Isso faria sentido porque eles estão tentando se conectar ao SERVER1\DEV, enquanto o certificado SSL é para um nome DNS público - MYAPP.MYDOMAIN.COM e, portanto, a validação da cadeia falha.

Portanto, estou procurando uma maneira de configurar a replicação do zero, mas usando o nome DNS (MYAPP.MYDOMAIN.COM) em vez do nome da máquina (SERVER1).

Porém, quando executo o seguinte comando:

exec sp_adddistributor @distributor = N'MYAPP.MYDOMAIN.COM\DEV', @password = N'12345'

Então recebo a seguinte mensagem de erro de volta:

Msg 18483, Level 14, State 1, Line 48 Não foi possível conectar ao servidor 'SERVER1\DEV' porque 'distributor_admin' não está definido como um logon remoto no servidor. Verifique se você especificou o nome de login correto. . Msg 14114, nível 16, estado 1, procedimento sp_adddistributiondb, linha 169 [Linha inicial do lote 65] O servidor 'SERVER1\DEV' não está configurado como um distribuidor.

Observe que este comando funcionou bem no passado quando era isso:

exec sp_adddistributor @distributor = N'SERVER1\DEV', @password = N'12345'

Depois de muito pesquisar, eu tentei muitas variações sobre isso. Eu tentei:

  • Usando aliases de cliente (32+64 bits) no editor
  • Variando como minha sessão SSMS está conectada ao servidor, ou seja, o nome do servidor de diálogo de conexão. Eu tentei usar SERVER1\DEV, MYAPP.MYDOMAIN.COM\DEV e também SERVER1.mywindowsdomain.com\DEV.

Qualquer sugestão sobre o que tentar a seguir seria apreciada. Eu ficaria feliz em explorar a) obter os Agentes de Distribuição para validar o certificado do servidor local [mas tendo em mente que não posso modificar os certificados SSL], ou b) recriar a replicação inteiramente do zero para que ele usa o DNS FQDN, ou seja. MYAPP.MYDOMAIN.COM\DEV.


Nota : Apenas para evitar qualquer pessoa que pesquise no Google essa mensagem de erro e sugira que nosso servidor SQL pode ter sido renomeado, esse definitivamente não é o caso. O problema é o nome da máquina versus o nome DNS.

sql-server replication
  • 1 1 respostas
  • 821 Views

1 respostas

  • Voted
  1. Best Answer
    Mike
    2017-10-09T19:41:41+08:002017-10-09T19:41:41+08:00

    Consegui fazer isso funcionar, mas com uma solução alternativa bastante insatisfatória - então, se alguém puder contribuir com uma solução melhor, faça. Estou preocupado que esta solução tenha efeitos colaterais desconhecidos.

    As etapas amplas são:

    1. Remova tudo relacionado à replicação do Publicador/Distribuidor, incluindo o banco de dados de distribuição.
    2. Renomeie a instância SQL usando o exemplo de código colado abaixo. O novo nome deve ser o FQDN da máquina ( não o FQDN do DNS). Isso é importante para que corresponda ao nome do certificado SSL. Reinicie o servidor (aparentemente, apenas reiniciar a instância SQL não é suficiente)
    3. Reimplante a configuração de replicação.
    4. Altere a configuração EncryptionLevel para = 2 para todos os Distribution Agents.
    5. Verifique se todos os Agentes de Distribuição estão funcionando bem.

    Agora, quando chego ao comando sp_adddistributor, funciona bem se eu usar o Machine FQDN, por exemplo:

    exec sp_adddistributor @distributor = N'SERVER1.mywindowsdomain.com\DEV', @password = N'12345'
    

    E, de fato, EncryptionLevel pode ser definido como 2 com sucesso para os Agentes de Distribuição.

    Efeitos colaterais conhecidos:

    • O Replication Monitor não se conecta mais automaticamente ao Publicador quando é iniciado a partir do SSMS. Devo observar que ele funciona bem ao ser iniciado no servidor Publicador/Distribuidor usando o Windows Auth, mas não se conecta quando eu o inicio do nosso Jump Host e tento conectar como 'sa'. Para fazer com que ele se conecte nessa situação, tenho que adicionar o Publisher e, posteriormente, editar as propriedades da conexão. Suspeito que esse problema possa ser de alguma forma complicado pelo fato de nossos servidores serem todos sensíveis a maiúsculas e minúsculas, mas não tenho evidências para apoiar essa suspeita.
    • Ao usar a Exibição do Distribuidor no Replication Monitor, a lista de Publicações do painel direito está sempre em branco. No entanto, as Publicações aparecem na visualização em árvore à esquerda. Não há problema em usar a Visualização de Publicadores.

    Código para renomear o servidor:

    sp_dropserver 'SERVER1\DEV'
    GO
    sp_addserver 'SERVER1.mywindowsdomain.com\DEV', local
    GO
    
    • 1

relate perguntas

  • Práticas recomendadas para executar a replicação atrasada do deslocamento de tempo

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

  • Qual é a diferença entre a replicação do PostgreSQL 9.0 e o Slony-I?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve