Compartilhar via


Criar assinatura para assinante que não utiliza SQL Server

Este tópico descreve como criar uma assinatura para um Assinante não SQL Server no SQL Server 2014 usando o SQL Server Management Studio ou o Transact-SQL. A replicação transacional e de instantâneo dá suporte à publicação de dados para assinantes que não utilizam o SQL Server. Para obter informações sobre plataformas suportadas de subscritores, consulte Subscritores não relacionados ao SQL Server.

Nesse Tópico

Como usar o SQL Server Management Studio.

Para criar uma assinatura para um assinante que não utiliza SQL Server:

  1. Instale e configure o software cliente apropriado e os provedores OLE DB no Distribuidor do SQL Server. Para obter mais informações, consulte Assinantes oracle e assinantes IBM DB2.

  2. Crie uma publicação usando o Assistente para Nova Publicação. Para obter mais informações sobre como criar publicações, consulte Criar uma publicação e criar uma publicação de um banco de dados Oracle. Especifique as seguintes opções no Assistente para Nova Publicação:

    • Na página Tipo de Publicação , selecione Publicação de instantâneo ou publicação transacional.

    • Na página Agente de Instantâneo, desmarque Criar um instantâneo imediatamente.

      Você cria o instantâneo após a habilitação da publicação para assinantes que não são do SQL Server, garantindo que o Snapshot Agent gere um instantâneo e scripts de inicialização apropriados para esses assinantes.

  3. Habilite a publicação para assinantes que não são do SQL Server usando a caixa de diálogo Propriedades da Publicação – <PublicationName> . Consulte Propriedades da Publicação, Opções de Assinatura para obter mais informações sobre esta etapa.

  4. Crie uma assinatura usando o Assistente para Nova Assinatura. Este tópico fornece mais informações sobre esta etapa.

  5. (Opcional) Altere a propriedade de artigo pre_creation_cmd para reter tabelas no Assinante. Este tópico fornece mais informações sobre esta etapa.

  6. Gere um instantâneo para a publicação. Este tópico fornece mais informações sobre esta etapa.

  7. Sincronize a assinatura. Para obter mais informações, consulte Synchronize a Push Subscription.

Para habilitar uma publicação para assinantes que não utilizam o SQL Server

  1. Conecte-se ao Publicador no SQL Server Management Studio e expanda o nó do servidor.

  2. Expanda a pasta Replicação e expanda a pasta Publicações Locais .

  3. Clique com o botão direito do mouse na publicação e clique em Propriedades.

  4. Na página Opções de Assinatura , selecione um valor true para a opção Permitir Assinantes que não são do SQL Server. Selecionar essa opção altera várias propriedades para que a publicação seja compatível com Assinantes não SQL Server.

    Observação

    Selecionar True define o valor da propriedade do artigo pre_creation_cmd como 'drop'. Essa configuração especifica que a replicação deve remover uma tabela no Assinante se corresponder ao nome da tabela no artigo. Se você tiver tabelas existentes no Assinante que deseja manter, use o procedimento armazenado sp_changearticle para cada artigo; especifique um valor 'none' para pre_creation_cmd: sp_changearticle @publication= 'MyPublication', @article= 'MyArticle', @property='pre_creation_cmd', @value='none'.

  5. Clique em OK. Você será solicitado a criar um novo instantâneo para a publicação. Se você não quiser criar um no momento, use as etapas descritas no próximo procedimento "como" em um momento posterior.

Para criar uma assinatura para um assinante de outro tipo que não seja SQL Server

  1. Expanda a pasta Replicação e expanda a pasta Publicações Locais .

  2. Clique com o botão direito do mouse na publicação apropriada e clique em Novas Assinaturas.

  3. Na página Local do Agente de Distribuição , verifique se a opção Executar todos os agentes no Distribuidor está selecionada. Subscritores que não utilizam o SQL Server não oferecem suporte para execução de agentes no Subscritor.

  4. Na página Assinantes, clique em Adicionar Assinante e, em seguida, clique em Adicionar Assinante não SQL Server.

  5. Na caixa de diálogo Adicionar Assinante Não SQL Server, selecione o tipo de assinante.

  6. Insira um valor no nome da fonte de dados:

    • Para o Oracle, esse é o nome TNS (substrato de rede transparente) configurado.

    • Para a IBM, isso pode ser qualquer nome. É comum especificar o endereço de rede do Assinante.

    O nome da fonte de dados inserido nesta etapa e as credenciais especificadas na etapa 9 não são validadas por esse assistente. Eles não são usados pela replicação, até o momento em que o Agente de Distribuição é executado para a assinatura. Certifique-se de que todos os valores foram testados ao se conectar ao usuário usando uma ferramenta de cliente (como sqlplus para Oracle). Para obter mais informações, consulte Assinantes oracle e assinantes IBM DB2.

  7. Clique em OK. Na página Assinantes do assistente, o Assinante agora é exibido na coluna Assinante como um campo somente leitura (destino padrão) na coluna Banco de Dados de Assinatura:

    • Para o Oracle, um servidor tem no máximo um banco de dados, portanto, não é necessário especificar o banco de dados.

    • Para IBM DB2, o banco de dados é especificado na propriedade Catálogo Inicial da cadeia de conexão DB2, que pode ser inserida no campo Opções de conexão adicionais descrito posteriormente neste processo.

  8. Na página Segurança do Agente de Distribuição , clique no botão de propriedades (...) ao lado do Assinante para acessar a caixa de diálogo Segurança do Agente de Distribuição .

  9. Na caixa de diálogo Segurança do Agente de Distribuição :

    • Nos campos Processo, Senha e Confirmação de senha , insira a conta e a senha do Microsoft Windows na qual o Agente de Distribuição deve ser executado e faça conexões locais com o Distribuidor.

      A conta requer as seguintes permissões mínimas: membro da função fixa de banco de dados db_owner na base de dados de distribuição; membro da lista de acesso à publicação (PAL); as permissões de leitura no compartilhamento de instantâneo; e a permissão de leitura no diretório de instalação do provedor OLE DB. Para obter mais informações sobre a PAL, consulte Secure the Publisher (Proteger o publicador).

    • Em Conectar-se ao Assinante, nos campos Logon, Senha e Confirmar senha , insira o logon e a senha que devem ser usados para se conectar ao Assinante. Esse logon já deve estar configurado e deve ter permissões suficientes para criar objetos no banco de dados de assinatura.

    • No campo Opções de conexão adicionais , especifique todas as opções de conexão para o Assinante na forma de uma cadeia de conexão (o Oracle não requer opções adicionais). Cada opção deve ser separada por ponto e vírgula. Veja a seguir um exemplo de uma cadeia de conexão DB2 (quebras de linha são para legibilidade):

      Provider=DB2OLEDB;Initial Catalog=MY_SUBSCRIBER_DB;Network Transport Library=TCP;Host CCSID=1252;  
      PC Code Page=1252;Network Address=MY_SUBSCRIBER;Network Port=50000;Package Collection=MY_PKGCOL;  
      Default Schema=MY_SCHEMA;Process Binary as Character=False;Units of Work=RUW;DBMS Platform=DB2/NT;  
      Persist Security Info=False;Connection Pooling=True;  
      

      A maioria das opções na cadeia de caracteres são específicas para o servidor DB2 que você está configurando, mas a opção Binário do Processo como Caractere sempre deve ser definida como False. Um valor é necessário para a opção Catálogo Inicial para identificar o banco de dados de assinatura.

  10. Na página Agendamento de Sincronização , selecione um agendamento para o Agente de Distribuição no menu Agendamento do Agente (o agendamento normalmente é executado continuamente).

  11. Na página Inicializar Assinaturas, especifique se a assinatura deve ser inicializada e, nesse caso, quando ela deve ser inicializada:

    • Limpe a inicialização somente se você tiver criado todos os objetos e adicionado todos os dados necessários no banco de dados de assinatura.

    • Selecione Imediatamente na lista suspensa na coluna Inicializar Quando para que o Agente de Distribuição transfira arquivos de instantâneo para o Assinante após a conclusão deste assistente. Selecione Na primeira sincronização para que o agente transfira os arquivos na próxima vez que for programado para execução.

  12. Na página Ações do Assistente, opcionalmente, escreva um script para a assinatura. Para obter mais informações, consulte Replicação de Scripts.

Para reter tabelas na base do Assinante

  • Por padrão, habilitar uma publicação para assinantes que não sejam do SQL Server define o valor da propriedade de artigo pre_creation_cmd como 'drop'. Essa configuração especifica que a replicação deve remover uma tabela no Assinante se corresponder ao nome da tabela no artigo. Se você tiver tabelas existentes no Assinante que deseja manter, use o procedimento armazenado sp_changearticle para cada artigo; especifique o valor 'none' para pre_creation_cmd. sp_changearticle @publication= 'MyPublication', @article= 'MyArticle', @property='pre_creation_cmd', @value='none'.

Para gerar um instantâneo para a publicação

  1. Expanda a pasta Replicação e expanda a pasta Publicações Locais .

  2. Clique com o botão direito do mouse na publicação e clique em Exibir Status do Agente de Instantâneo.

  3. Na caixa de diálogo Visualizar Status do Agente de Instantâneo – <Publicação>, clique em Iniciar.

Quando o Snapshot Agent termina de gerar o instantâneo, uma mensagem é exibida, como "[100%] Um instantâneo de 17 artigos foi gerado".

Usando Transact-SQL

Você pode criar assinaturas push para assinantes que não usam o SQL Server programaticamente, utilizando procedimentos armazenados de replicação.

Importante

Quando possível, solicite aos usuários que insiram credenciais de segurança no runtime. Se você precisar armazenar credenciais em um arquivo de script, deverá proteger o arquivo para impedir o acesso não autorizado.

Para criar uma assinatura push para uma publicação transacional ou de instantâneo para um assinante que não utiliza SQL Server

  1. Instale o provedor OLE DB mais recente para o Assinante que não usa SQL Server no Publicador e Distribuidor. Para obter os requisitos de replicação para um provedor OLE DB, consulte Assinantes de provedores não SQL Server, Assinantes Oracle, Assinantes IBM DB2.

  2. No Publicador do banco de dados de publicação, verifique se a publicação dá suporte a Assinantes não SQL Server executando sp_helppublication (Transact-SQL).

    • Se o valor for enabled_for_het_sub 1, não há suporte para Assinantes do SQL Server.

    • Se o valor for enabled_for_het_sub 0, execute sp_changepublication (Transact-SQL), especificando enabled_for_het_sub para @property e true para @value.

      Observação

      Antes de alterar enabled_for_het_sub para true, você deve remover todas as assinaturas existentes para a publicação. Você não pode definir enabled_for_het_sub para true quando a publicação também dá suporte à atualização de assinaturas. A alteração enabled_for_het_sub afetará outras propriedades de publicação. Para obter mais informações, consulte Assinantes que não são do SQL Server.

  3. Na base de dados do Publicador, execute sp_addsubscription (Transact-SQL). Especifique @publication, @subscriber, um valor (destino padrão) para @destination_db, um valor de push para @subscription_type e um valor de 3 para @subscriber_type (especifica um provedor OLE DB).

  4. No Publicador no banco de dados de publicação, execute sp_addpushsubscription_agent (Transact-SQL). Especifique o seguinte:

    • Os parâmetros @subscribere @publication .

    • Um valor de (destino padrão) para @subscriber_db,

    • As propriedades da fonte de dados não SQL Server para @subscriber_provider, @subscriber_datasrc, @subscriber_location, @subscriber_provider_string e @subscriber_catalog.

    • As credenciais do Microsoft Windows nas quais o Agente de Distribuição no Distribuidor é executado para @job_login e @job_password.

      Observação

      As conexões feitas usando a Autenticação Integrada do Windows sempre usam as credenciais do Windows especificadas por @job_login e @job_password. O Agente de Distribuição sempre faz a conexão local com o Distribuidor usando a Autenticação Integrada do Windows. Por padrão, o agente se conectará ao Assinante usando a Autenticação Integrada do Windows.

    • Um valor 0 para @subscriber_security_mode e as informações de logon do provedor OLE DB para @subscriber_login e @subscriber_password.

    • Um agendamento para o trabalho do Agente de Distribuição para esta assinatura. Para obter mais informações, consulte Especificar Agendamentos de Sincronização.

    Importante

    Ao criar uma assinatura push em um Publicador com um Distribuidor remoto, os valores fornecidos para todos os parâmetros, incluindo job_login e job_password, são enviados ao Distribuidor como texto sem formatação. Você deve criptografar a conexão entre o Publicador e seu Distribuidor remoto antes de executar esse procedimento armazenado. Para obter mais informações, confira Habilitar conexões criptografadas para o mecanismo de banco de dados (SQL Server Configuration Manager).

Consulte Também

Assinantes do IBM DB2
Assinantes do Oracle
Outros assinantes que não são do SQL Server
Conceitos de procedimentos armazenados do sistema de replicação
Práticas recomendadas de segurança de replicação