Compartilhar via


Como gerenciar colunas de identidade (Programação Transact-SQL de replicação)

Quando as inserções de Assinante são replicadas de volta ao Publicador, as colunas de identidade devem ser gerenciadas para evitar a atribuição do mesmo valor de identidade para o Assinante e o Publicador. A Replicação pode gerenciar intervalos de identidade automaticamente ou você pode escolher controlar o gerenciamento de intervalo de identidade manualmente. Você pode usar os procedimentos armazenados de replicação para especificar as opções de gerenciamento de intervalo da identidade, quando um artigo é criado. Para obter mais informações sobre as opções de gerenciamento do intervalo da identidade fornecidas pela replicação, consulte Colunas de identidade de replicação.

ObservaçãoObservação

Ao publicar uma tabela em mais de uma publicação, você deve especificar as mesmas opções de gerenciamento do intervalo da identidade para ambas a publicações. Para obter mais informações, consulte "Publicando tabelas em mais de uma publicação” em Publicando dados e objetos de banco de dados.

Para habilitar o gerenciamento automático de intervalo de identidade ao definir artigos para uma publicação transacional

  • No Publicador do banco de dados de publicação, execute sp_addarticle. Se a tabela de origem que está sendo publicada tiver uma coluna de identidade, especifique um valor de auto para @identityrangemanagementoption, o intervalo dos valores da identidade atribuídos ao Publicador para @pub_identity_range, o intervalo dos valores de identidade atribuídos para cada Assinante para @identity_range e a porcentagem dos valores totais de identidade usados, antes que um novo intervalo de identidade seja atribuído para @threshold. Para obter mais informações sobre como definir artigos, consulte Como definir um artigo (Programação Transact-SQL de replicação).

    ObservaçãoObservação

    Certifique-se de que os tipos de dados da coluna de identidade é grande o suficiente para oferece suporte a todos os intervalos de identidades atribuídas a todos os Assinantes.

Para desabilitar o gerenciamento automático de intervalo de identidade ao definir artigos para uma publicação transacional

  1. No Publicador do banco de dados de publicação, execute sp_addarticle. Especifique um valor de manual para @ identityrangemanagementoption. Para obter mais informações sobre como definir artigos, consulte Como definir um artigo (Programação Transact-SQL de replicação).

  2. Atribua intervalos às colunas de artigo de identidade no Assinante para evitar conflitos ao atualizar Assinantes. Para obter mais informações, consulte a seção sobre como atribuir valores para o gerenciamento manual de intervalo da identidade no tópico Colunas de identidade de replicação.

Para habilitar o gerenciamento automático de intervalo de identidade ao definir artigos para uma publicação de mesclagem

  • No Publicador do banco de dados de publicação, execute sp_addmergearticle. Se a tabela de origem sendo publicada tiver uma coluna de identidade, especifique um valor de auto para @identityrangemanagementoption, o intervalo dos valores da identidade atribuídos à assinatura do servidor para @pub_identity_range, o intervalo dos valores de identidade atribuídos ao Publicador e cada assinatura de cliente para @identity_range, e a porcentagem dos valores totais de identidade usados antes que um novo intervalo de identidade seja atribuído para @threshold. Para obter mais informações sobre quando os novos intervalos de identidade são atribuídos, consulte Atribuindo intervalos de identidade, no tópico Colunas de identidade de replicação. Para obter mais informações sobre como definir artigos, consulte Como definir um artigo (Programação Transact-SQL de replicação).

    ObservaçãoObservação

    Certifique-se de que o tipo de dado da coluna de identidade é grande o suficiente para oferece suporte ao intervalo total de identidades atribuídas a todos os Assinantes, especialmente para Assinantes com assinaturas de servidor.

Para desabilitar o gerenciamento automático de intervalo de identidade ao definir artigos para uma publicação de mesclagem

  1. No Publicador do banco de dados de publicação, execute sp_addmergearticle. Especifique um dos valores a seguir para @identityrangemanagementoption:

    • manual - Os intervalos de identidade devem ser atribuídos manualmente para atualizar os Assinantes .

    • none - As colunas de identidade no Publicador não serão definidas como colunas de identidade no Assinante.

    Para obter mais informações sobre como definir artigos, consulte Como definir um artigo (Programação Transact-SQL de replicação).

  2. Atribua intervalos às colunas de artigo de identidade no Assinante para evitar conflitos ao atualizar Assinantes.

Para alterar as configurações de gerenciamento de intervalo da identidade para um artigo existente em um instantâneo ou publicação transacional

  1. No Publicador do banco de dados de publicação, execute sp_helparticle e observe o valor de identityrangemanagementoption no conjunto de resultados. Se esse valor for 0, o gerenciamento de intervalo de identidade automático não estará habilitado.

  2. Se o valor de identityrangemanagementoption no conjunto de resultados for 1, altere as configurações como segue:

    • Para alterar os intervalos de identidade atribuídos, execute sp_changearticle no Publicador do banco de dados de publicação. Especifique um valor de identity_range ou pub_identity_range para @property e o novo valor de intervalo para @value.

    • Para alterar o limite no qual os novos intervalos serão atribuídos, execute sp_changearticle no Publicador do banco de dados de publicação. Especifique um valor dethreshold para @property e o novo valor de limite para @value.

Para alterar automaticamente as configurações de gerenciamento de intervalo da identidade para um artigo existente em uma publicação de mesclagem

  1. No Publicador do banco de dados de publicação, execute sp_helpmergearticle e observe o valor de identity_support no conjunto de resultado. Se esse valor for 0, o gerenciamento de intervalo de identidade automático não estará habilitado.

  2. Se o valor de identity_support no conjunto de resultado é 1, altere as configurações como segue:

    • Para alterar os intervalos de identidade atribuídos, execute sp_changemergearticle no Publicador do banco de dados de publicação. Especifique um valor de identity_range ou pub_identity_range para @property e o novo valor de intervalo para @value.

    • Para alterar o limite no qual novos intervalos serão atribuídos, , execute sp_changemergearticle no Publicador do banco de dados de publicação. Especifique um valor dethreshold para @property e o novo valor de limite para @value. Para obter mais informações sobre quando os novos intervalos de identidade são atribuídos, consulte Atribuindo intervalos de identidade, no tópico Colunas de identidade de replicação.

    • Para desabilitar o gerenciamento automático de intervalo de identidade, execute sp_changemergearticle no Publicador do banco de dados de publicação. Especifique um valor de identityrangemanagementoption para @property e de manual ou nenhum para @value.