Criar uma assinatura para um Assinante não SQL Server

Aplica-se: SQL Server

Este tópico descreve como criar uma assinatura para um não Assinante do SQL Server no SQL Server usando o SQL Server Management Studio ou o Transact-SQL. A replicação transacional e de instantâneos dá suporte à publicação de dados para não Assinantes do SQL Server. Para obter mais informações sobre plataformas de Assinantes com suporte, consulte Non-SQL Server Subscribers.

Neste tópico

Como usar o SQL Server Management Studio.

Para criar uma assinatura para um não Assinante do SQL Server:

  1. Instale e configure o software de cliente Oracle e o provedor OLE DB apropriados no Distribuidor do SQL Server. Para obter mais informações, consulte Oracle Subscribers e IBM DB2 Subscribers.

  2. Crie uma publicação usando o Assistente para Nova Publicação. Para obter mais informações sobre a criação de publicações, consulte Create a Publication (Criar uma publicação) e Criar uma publicação de um banco de dados Oracle. Especifique as opções a seguir 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 Snapshot Agent , desmarque Criar um instantâneo imediatamente.

      Você cria o instantâneo após a publicação estar habilitada para não Assinantes do SQL Server para garantir que o Agente de Instantâneo gere scripts de instantâneo e de inicialização adequados para os não Assinantes do SQL Server.

  3. Habilite a publicação para não assinantes do SQL Server usando a caixa de diálogo Propriedades da publicação - <PublicationName>. Consulte Publication Properties, Subscription Options para obter mais informações sobre essa etapa.

  4. Crie uma assinatura usando o Assistente para Nova Assinatura. Esse tópico proporciona mais informações sobre essa etapa.

  5. (Opcional) Altere a propriedade do artigo de pre_creation_cmd para reter as tabelas no Assinante. Esse tópico proporciona mais informações sobre essa etapa.

  6. Gere um instantâneo para a publicação. Esse tópico proporciona mais informações sobre essa etapa.

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

Para habilitar uma publicação para Assinantes não SQL Server

  1. Conecte-se ao Publicador no Microsoft SQL Server Management Studio e, em seguida, expanda o nó de servidor.

  2. Expanda a pasta Replicação e, em seguida, a pasta Publicações Locais .

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

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

    Observação

    Selecionando Verdadeiro define o valor da propriedade do artigo pre_creation_cmd para 'descartar'. Essa definição especifica que a replicação deve descartar uma tabela no Assinante se coincidir com o nome de tabela no artigo. Se tiver tabelas existentes no Assinante que deseja manter, use o procedimento armazenado sp_changearticle para cada artigo, especifique o valor 'nenhum' para pre_creation_cmd: sp_changearticle @publication= 'MyPublication', @article= 'MyArticle', @property='pre_creation_cmd', @value='none'.

  5. Selecione OK. Você será solicitado a criar um novo instantâneo para a publicação. Se não quiser criar um neste momento, use mais tarde as etapas descritas no próximo procedimento “Como”.

Para criar uma assinatura para um Assinante não SQL Server

  1. Expanda a pasta Replicação e, em seguida, a pasta Publicações Locais .

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

  3. Na página Local do Distribution Agent , certifique-se de que Executar todos os agentes no Distribuidor esteja selecionado. Os não Assinantes do SQL Server não oferecem suporte à execução de agentes no Assinante.

  4. Na página Assinantes , clique em Adicionar Assinante e 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. Digite um valor no Nome da fonte de dados:

    • Para o Oracle, esse é o nome do substrato transparente de rede (TNS) que você configurou.

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

    O nome da fonte de dados digitado nesta etapa e as credenciais especificadas na etapa 9 não são validados por este assistente. Não são usados pela replicação até que o Distribution Agent execute para uma assinatura. Certifique-se de que todos os valores tenham sido testados por meio de conexão ao Assinante usando uma ferramenta de cliente (como sqlplus para o Oracle). Para obter mais informações, consulte Oracle Subscribers e IBM DB2 Subscribers.

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

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

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

  8. Na página Segurança do Distribution Agent , clique no botão de propriedades () próximo ao Assinante para acessar a caixa de diálogo Segurança do Distribution Agent .

  9. Na caixa de diálogo Segurança do Distribution Agent :

    • Nos campos Processar conta, Senha e Confirmar senha, digite a conta e a senha do Windows sob as quais o Distribution Agent deve executar e realizar conexões locais ao Distribuidor.

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

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

    • No campo Opções de conexões adicionais , especifique as opções de conexão para o Assinante na forma de uma cadeia de caracteres para conexão (Oracle não necessita de opções adicionais). Cada opção deverá estar separada por um ponto-e-vírgula. A seguir um exemplo de uma cadeia de conexão DB2 (as quebras de linha são para facilitar a leitura):

      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 é específica do servidor DB2 que você está configurando, mas a opção Processar Binário 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 Agenda de Sincronização , selecione uma agenda para o Distribution Agent no menu Agenda do Agente (a agenda é tipicamente Executar continuamente).

  11. Na página Inicializar Assinaturas , especifique se a assinatura deve ser inicializada e caso positivo, onde deve ser inicializada.

    • Desmarque Inicializar só se você criou todos os objetos e adicionou todos os dados necessários no banco de dados de assinatura.

    • Selecione Imediatamente na lista suspensa na coluna Inicializar Quando para que o Distribution Agent transfira os arquivos de instantâneos para o Assinante após a conclusão desse assistente. Selecione Na primeira sincronização para que o agente transfira os arquivos da próxima vez em que for agendado para executar.

  12. Na página Ações do Assistente , opcionalmente faça o script da assinatura. Para obter mais informações, consulte Scripting Replication.

Para reter tabelas no Assinante

  • Por padrão, habilitando uma publicação para não Assinantes do SQL Server - define o valor da propriedade do artigo de pre_creation_cmd como 'drop'. Essa definição especifica que a replicação deve descartar uma tabela no Assinante se coincidir com o nome de tabela no artigo. Se tiver tabelas existentes no Assinante que deseja manter, use o procedimento armazenado sp_changearticle para cada artigo, especifique um valor 'nenhum' 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, em seguida, a pasta Publicações Locais .

  2. Clique com o botão direito do mouse em uma publicação e clique em Exibir Status do Snapshot Agent.

  3. Na caixa de diálogo Exibir Status do Snapshot Agent – <Publicação>, clique em Iniciar.

Quando o Agente de Instantâneo terminar de gerar o instantâneo, uma mensagem será exibida, como "[100%] Um instantâneo de 17 artigos foi gerado".

Usando o Transact-SQL

Crie assinaturas push para não Assinantes do SQL Server de forma programática, usando procedimentos armazenados de replicação.

Importante

Quando possível, solicite que os usuários insiram as credenciais de segurança em tempo de execução. Se for necessário armazenar credenciais em um arquivo de script, você deverá proteger o arquivo para impedir acesso não autorizado.

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

  1. Instale o mais recente provedor OLE DB para o não Assinante do SQL Server no Publicador e no Distribuidor. Para os requisitos de replicação de um fornecedor OLE DB, consulte Non-SQL Server Subscribers, Oracle Subscribers, IBM DB2 Subscribers.

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

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

    • Se o valor de enabled_for_het_sub for 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, é preciso ignorar todas as assinaturas existentes para a publicação. Não é possível definir enabled_for_het_sub como true quando a publicação oferecer suporte também a assinaturas de atualização. Alterar enabled_for_het_sub afetará outras propriedades de publicação. Para obter mais informações, consulte Non-SQL Server Subscribers.

  3. No Publicador do banco de dados de publicação, execute sp_addsubscription (Transact-SQL). Especifique @publication, @subscriber, um valor igual a (default destination) para @destination_db, um valor igual a push para @subscription_type e um valor igual a 3 para @subscriber_type (especifica um provedor OLE DB).

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

    • Os parâmetros @subscriber e @publication.

    • Um valor igual a (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 sob as quais o Agente de Distribuição no Distribuidor é executado pata @job_login e @job_password.

    Observação

    As conexões feitas por meio da Autenticação Integrada do Windows sempre usam as credenciais do Windows especificadas por @job_login e @job_password. O Distribution Agent sempre faz a conexão local com o Distribuidor usando a Autenticação Integrada do Windows. Por padrão, o agente se conecta ao Assinante usando a Autenticação Integrada do Windows.

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

    • Agenda para o trabalho do Distribution Agent para essa assinatura. Para obter mais informações, consulte Specify Synchronization Schedules.

    Importante

    Ao criar uma assinatura push em um Publicador com um Distribuidor remoto, os valores especificados para todos os parâmetros, inclusive job_login e job_passwordsão enviados para o 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).