Usuários e grupos: mudanças na replicação inicial

Atenção

Essa mudança de comportamento está no pacote 2023_04.

Para saber o status atual do pacote, consulte Histórico do pacote.

Se você estiver usando um grupo de replicação ou failover para replicar USERS e/ou ROLES de uma conta de origem para uma conta de destino e houver usuários/funções existentes nessa conta que foram criados por meios diferentes da replicação, a operação de atualização inicial desses tipos de objeto resultará na exclusão de todos os usuários e/ou funções na conta de destino.

Se a atualização inicial excluir usuários e/ou funções na conta de destino, isso poderá resultar em perda de dados e metadados:

  • Se USERS estiverem incluídos na lista OBJECT_TYPES para o grupo de replicação ou failover:

    • As planilhas são perdidas

    • O histórico de consultas é perdido

  • Se USERS estiverem incluídos na lista OBJECT_TYPES, mas ROLES não:

    • As concessões de privilégios aos usuários são perdidas

  • Se ROLES estiverem incluídos na lista OBJECT_TYPES:

    • Concessões de privilégio para compartilhar objetos são perdidas

Em uma versão futura, esse comportamento será alterado da seguinte forma:

Anteriormente:

Se um grupo de replicação ou failover incluir USERS e/ou ROLES na lista OBJECT_TYPES, a operação de atualização inicial desses tipos de objeto resultará na eliminação de usuários e/ou funções na conta de destino.

Atualmente:

Se um grupo de replicação ou failover incluir USERS e/ou ROLES na lista OBJECT_TYPES, a operação de atualização inicial desses tipos de objeto falhará com uma mensagem de erro se:

  • Houver usuários e/ou funções existentes na conta de destino que correspondem a objetos com o mesmo nome na conta de origem e

  • USERS e/ou ROLES não foram replicados anteriormente para a conta de destino

A mensagem de erro solicitará ao usuário duas opções:

  • Forçar a operação de atualização e permitir que quaisquer usuários e/ou funções existentes na conta de destino sejam excluídos. Os usuários/funções na conta de origem serão recriados na conta de destino.

    Para forçar uma atualização, você executaria a seguinte instrução:

    ALTER ( { FAILOVER | REPLICATION } ) GROUP <rg_name> REFRESH FORCE;
    
    Copy
  • Vincule os objetos de conta por nome: usuários e/ou funções com o mesmo nome na conta de destino e na conta de origem serão vinculados. Os usuários/funções na conta de destino que estão vinculados não serão excluídos.

    Para vincular objetos de conta por nome, execute a seguinte instrução:

    SELECT SYSTEM$LINK_ACCOUNT_OBJECTS_BY_NAME('<rg_name>');
    
    Copy

Nota

Qualquer usuário/função na conta de destino que não tenha um objeto correspondente na conta de origem com o mesmo nome será descartado.

Para obter mais informações, consulte Aplicação de IDs globais a objetos criados por scripts em contas de destino.

Ref: 1044