Gerir Colunas de Identidade

Aplica-se a: SQL ServerAzure SQL Managed Instance

Este tópico descreve como gerir colunas de identidade no SQL Server utilizando o SQL Server Management Studio ou Transact-SQL. Quando as inserções do Subscritor são replicadas de volta para o Publicador, as colunas de identidade têm de ser geridas para evitar a atribuição do mesmo valor de identidade quer no Subscritor quer no Publicador. A replicação pode gerir automaticamente os intervalos de identificadores ou também pode optar por efetuar manualmente a gestão dos intervalos de identificadores. Para informações sobre as opções de gestão de intervalo de identidade fornecidas pela replicação, consulte Colunas de Identidade Replicadas.

Recommendations

  • Ao publicar uma tabela em mais do que uma publicação, deve especificar as mesmas opções de gestão de intervalo de identidade para ambas as publicações. Para mais informações, consulte "Publicar Tabelas em Mais Do Que Uma Publicação" em Publicar Dados e Objetos de Base de Dados.

  • Para criar um número de incremento automático que pode ser usado em várias tabelas ou que pode ser chamado de aplicativos sem fazer referência a nenhuma tabela, consulte Números de sequência.

Usando o SQL Server Management Studio

Especifique uma opção de gestão da coluna de identidade no separador Propriedades da caixa de diálogo Propriedades do Artigo -<Artigo> do Assistente de Nova Publicação. Para mais informações sobre a utilização deste assistente, consulte Criar uma Publicação. No Novo Mago da Publicação:

  • Se selecionar Fundir publicação ou Publicação Transacional com subscrições atualizadas na página Tipo de Publicação , selecione gestão automática ou manual de intervalos de identidade (automática, o padrão, é recomendada). Após a publicação da tabela, a propriedade não pode ser modificada, mas outras propriedades relacionadas podem ser modificadas.

  • Se selecionar outros tipos de publicação, a gestão do intervalo de identidades deve ser configurada para manual.

Modificar intervalos de identidade e limites no separador Propriedades de Propriedades do Artigo -<Artigo>, disponível na caixa de diálogo Propriedades da Publicação - <Publicação>. Para mais informações sobre como aceder a esta caixa de diálogo, consulte Visualizar e Modificar Propriedades de Publicação.

Para especificar uma opção de gestão de uma coluna de identidade

  1. Se o Publisher estiver a executar uma versão do SQL Server anterior ao SQL Server 2005 (9.x), na página de Tipo de Publicação do Assistente de Nova Publicação, selecione Mesclar publicação ou Publicação Transacional com subscrições atualizadas.

  2. Na página de Artigos , selecione uma tabela com uma coluna de identidade.

  3. Clique em Propriedades do Artigo e depois em Definir Propriedades do Artigo da Tabela Destacada.

  4. No separador Propriedades da caixa de diálogo Propriedades do Artigo - <Artigo>, na secção Gestão de Intervalos de Identidade, defina a propriedade Gerir automaticamente intervalos de identidade para Automático ou Manual (para Editores a executar SQL Server 2005 (9.x) ou posterior), ou Verdadeiro ou Falso (para Editores a executar uma versão do SQL Server anterior a SQL Server 2005 (9.x)).

  5. Se selecionou Automático ou Verdadeiro no passo 4, introduza os valores das opções na tabela seguinte. Para obter mais informações sobre como estas definições são utilizadas, consulte a secção "Atribuir intervalos de identidade" de Replicar Colunas de Identidade.

    Option Value Description
    Tamanho do intervalo do publicador Valor inteiro para o tamanho do intervalo (por exemplo, 20000). Consulte a secção "Atribuir intervalos de identidade" de Replicar colunas de identidade.
    Tamanho do intervalo de assinantes Valor inteiro para o tamanho do intervalo (por exemplo, 10000). Consulte a secção "Atribuir intervalos de identidade" de Replicar colunas de identidade.
    Percentagem de limiar de distribuição Valor inteiro para o limiar percentual (por exemplo, 90 equivale a 90 por cento). Percentagem dos valores totais de identidade usados num nó antes de ser atribuído um novo intervalo de identidade.



    Nota: Este valor deve ser especificado, mas é usado apenas por: Assinantes que utilizam subscrições atualizadas em fila; e Assinantes para fundir publicações que executam SQL Server Compact ou versões anteriores de outras edições do SQL Server. Para mais informações, consulte a secção "Atribuir Intervalos de Identidade" em Replicar Colunas de Identidade.
    Valor inicial do próximo intervalo Valor inteiro. Somente leitura. O valor a partir do qual o próximo intervalo irá começar. Por exemplo, se o intervalo atual for 5001-6000, este valor será 6001.
    Valor máximo de identidade Valor inteiro. Somente leitura. O maior valor da coluna ID. Determinado pelo tipo de dados base da coluna.
    Increment Valor inteiro. Somente leitura. A quantidade pela qual o número na coluna de identidade deve aumentar ou diminuir para cada inserção: normalmente definida como 1.
  6. Selecione OK.

Modificar intervalos de identidade e limiares após a publicação de uma tabela

  1. Na página de Artigos da caixa de diálogo Propriedades de Publicação - <Publicação> , selecione uma tabela com uma coluna de identidade.

  2. Clique em Propriedades do Artigo e depois em Definir Propriedades do Artigo da Tabela Destacada.

  3. No separador Propriedades da caixa de diálogo Propriedades do Artigo - <Artigo>, na secção Gestão do intervalo de identidades, introduza valores para uma ou mais das seguintes propriedades: Tamanho do intervalo do Publicador, Tamanho do intervalo do Subscritor e Percentagem do limiar do intervalo.

  4. Selecione OK.

  5. Clique em OK na caixa de diálogo Propriedades de Publicação - <Publicação> .

Usando Transact-SQL

Pode usar procedimentos armazenados de replicação para especificar opções de gestão de intervalo de identidade quando um artigo é criado.

Para permitir a gestão automática do intervalo de identidade ao definir artigos para uma publicação transacional

  1. No Publisher da base de dados de publicações, execute sp_addarticle. Se a tabela de origem que está a ser publicada tiver uma coluna de identidade, especifique o valor auto para @identityrangemanagementoption, o intervalo de valores de identidade atribuído ao Publicador para @pub_identity_range, o intervalo de valores de identidade atribuído a cada Subscritor para @identity_range e a percentagem do total de valores de identidade utilizada antes de ser atribuído um novo intervalo de identidade para @threshold. Para mais informações sobre como definir artigos, veja Definir um Artigo.

    Observação

    Garantir que o tipo de dados da coluna de identidade é suficientemente grande para suportar a gama total de identidades atribuídas a todos os Assinantes.

Para desativar a gestão automática de intervalos de identidade ao definir artigos para uma publicação transacional

  1. No Publisher da base de dados de publicações, execute sp_addarticle. Especifique um valor de manual para @identityrangemanagementoption. Para mais informações sobre como definir artigos, veja Definir um Artigo.

  2. Atribuir intervalos às colunas de artigos de identidade no Assinante para evitar gerar conflitos na atualização dos Assinantes. Para mais informações, consulte a secção sobre atribuição de intervalos para gestão manual de intervalos de identidade no tópico Replicar Colunas de Identidade.

Para permitir a gestão automática do intervalo de identidade ao definir artigos para uma publicação de fusão

  1. No Publisher da base de dados de publicações, execute sp_addmergearticle. Se a tabela de origem que está a ser publicada tiver uma coluna de identidade, especifique um valor de auto para @identityrangemanagementoption, o intervalo de valores de identidade atribuídos a uma subscrição do servidor para @pub_identity_range, o intervalo de valores de identidade atribuídos ao Publicador e a cada subscrição de cliente para @identity_range, e a percentagem do total de valores de identidade utilizada antes de ser atribuído um novo intervalo de identidade para @threshold. Para mais informações sobre quando novos intervalos de identidade são atribuídos, consulte Atribuição de Intervalos de Identidade no tópico Replicar Colunas de Identidade. Para mais informações sobre como definir artigos, veja Definir um Artigo.

    Observação

    Certifique-se de que o tipo de dados da coluna de identidade é suficientemente grande para suportar a gama total de identidades atribuídas a todos os Assinantes, especialmente para os Assinantes com subscrições de servidor.

Para desativar a gestão automática de intervalos de identidade ao definir artigos para uma publicação de fusão

  1. No Publisher da base de dados de publicações, execute sp_addmergearticle. Especifique um dos seguintes valores 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 Subscritor.

    Para mais informações sobre como definir artigos, veja Definir um Artigo.

  2. Atribuir intervalos às colunas de artigos de identidade no Assinante para evitar gerar conflitos na atualização dos Assinantes.

Para alterar as definições automáticas de gestão de intervalo de identidade para um artigo existente numa publicação instantânea ou transacional

  1. No Publicador, na base de dados de publicação, execute sp_helparticle e anote o valor de identityrangemanagementoption no conjunto de resultados. Se este valor for 0, a gestão automática do intervalo de identidade não está ativada.

  2. Se o valor de identityrangemanagementoption no conjunto de resultados for 1, altere as definições da seguinte forma:

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

    • Para alterar o limiar a partir do qual novos intervalos são atribuídos, execute sp_changearticle no Publisher na base de dados de publicação. Especifique um valor de limiar para @property e o novo valor de limiar para @value.

Para alterar as definições automáticas de gestão de intervalo de identidade para um artigo existente numa publicação de fusão

  1. No Publicador, na base de dados de publicação, execute sp_helpmergearticle e anote o valor de identity_support no conjunto de resultados. Se este valor for 0, a gestão automática do intervalo de identidade não está ativada.

  2. Se o valor de identity_support no conjunto de resultados for 1, altere as definições da seguinte forma:

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

    • Para alterar o limiar a partir do qual novos intervalos são atribuídos, execute sp_changemergearticle no Publisher na base de dados de publicação. Especifique um valor de limiar para @property e o novo valor de limiar para @value. Para mais informações sobre quando novos intervalos de identidade são atribuídos, consulte Atribuição de Intervalos de Identidade no tópico Replicar Colunas de Identidade.

    • Para desativar a gestão automática de intervalos de identidade, execute sp_changemergearticle no Publisher na base de dados de publicações. Especifique um valor de identityrangemanagementoption para @property e um de manual ou none para @value.