Este tópico ainda não foi avaliado como - Avalie este tópico

ALTER FEDERATION (Banco de Dados SQL do Windows Azure)

Modifica a distribuição de dados em uma federação.

Convenções de sintaxe (Banco de Dados SQL do Windows Azure)


ALTER FEDERATION federation_name
{
    SPLIT AT (distribution_name = boundary_value)
    | DROP AT ([LOW|HIGH] distribution_name = boundary_value)
}[;]
federation_name
O nome da federação a ser criada. O nome deve ser exclusivo dentro do Banco de dados SQL, obedecer às regras de identificadores e ser do tipo sysname.

distribution_name
O nome da chave da federação. O nome é um identificador usado para fazer referência à chave da federação. É feita referência a ela quando instruções relacionadas à federação, como CREATE TABLE … FEDERATED ON(...) ou USE FEDERATION ON. Distribution_name deve atender às regras de identificadores e ser do tipo sysname.

Boundary_value é o ponto de divisão para a operação de reparticionamento. O valor de limite deve ser um valor válido para o tipo de dados especificado pela chave da federação. No caso de SPLIT, o valor se torna range_low e range_high para os novos membros da federação criados como parte dessa operação.

SPLIT AT (distribution_name = boundary_value)
Move os dados no membro da federação que atualmente contém o valor de limite em dois novos membros da federação. Todas as linhas das tabelas federadas com as instâncias da chave da federação < boundary_value são copiados em um dos novos membros da federação de destino. As instâncias >= valor de limite são copiadas no outro novo membro da federação. Todos os outros objetos como tabelas de referência, procedimentos armazenados, funções, usuários e permissões definidos em objetos são clonados para os novos membros da federação.

DROP AT ([LOW|HIGH] distribution_name = boundary_value)
Remove um membro da federação e amplia o intervalo de um membro adjacente para cobrir a lacuna criada pela operação DROP. Essa operação afeta o membro que está sendo removido e o membro adjacente que será ampliado para cobrir a lacuna. LOW ou HIGH determina o membro da federação que será removido na federação boundary_value determinada. O valor de limite deve corresponder a um valor de partição existente (range-high ou range_low de membros da federação) na federação.

Durante a operação DROP, não há comparação de esquemas entre os membros afetados da federação. DROP não requer uma cópia física dos dados; ela redefine as conexões e altera o db_name() dos membros da federação afetados.

DROP é uma operação assíncrona.

Propriedades da operação SPLIT

  • A instrução ALTER FEDERATION ... SPLIT deve ser a única instrução no lote e não pode fazer parte de uma transação externa.

  • A instrução ALTER FEDERATION ... SPLIT pode ser executada somente durante a conexão com o banco de dados de raiz da federação.

  • Somente um comando DROP ou SPLIT pode estar ativo em qualquer momento nos membros afetados da federação. Pode haver muitos comandos DROP e SPLIT ativos ao mesmo tempo, desde que eles estejam operando em diferentes membros de uma federação.

  • Todos os membros da federação de destino (os membros da federação criados devido a uma operação SPLIT) herdam as propriedades MAXSIZE e EDITION do membro da federação de origem.

  • SPLIT é uma operação atômica. Todos os membros de destino devem ser criados e sincronizados com êxito para que a operação SPLIT seja concluída.

  • SPLIT é uma operação assíncrona.

    Durante a execução de SPLIT

    • Todos os objetos regulares (não federados), esquemas e metadados do sistema são copiados do membro da federação de origem submetido à operação SPLIT no membro da federação de destino. Essa lista inclui usuários, funções, permissões de objetos, sprocs, exibições, tabelas federadas ou de referência, índices, etc. A única exceção é a estatística de distribuição marcada para recompilação. A estatística marcada com NORECOMPUTE é mantida e não é recalculada nas tabelas federadas após as operações de reparticionamento.

    • Todos os esquemas de tabelas federadas são copiados do membro da federação de origem submetido à operação SPLIT no membro da federação de destino.

    • Os dados de usuários nas tabelas federadas são movidos para os membros da federação de destino com base no valor de limite.

    • Os dados de usuários em todas as tabelas de referência são clonados e movidos para o membro da federação de destino.

    Após a conclusão de SPLIT

    • O novo membro da federação contém todos os dados atualizados nos membros da federação de destino correspondente.

    • A exibição sys.federation_members é atualizada para incluir os novos membros da federação de destino com seus valores de intervalo. O membro da federação de origem é removido e deixa de existir em sys.databases e em sys.federation_members.

    • Todas as conexões existentes com os membros da federação de origem são desconectadas. Em caso de nova tentativa, as novas conexões são roteadas para os novos membros da federação.

Propriedades da operação DROP

  • A instrução ALTER FEDERATION ... DROP deve ser a única instrução no lote e não pode fazer parte de uma transação externa.

  • A instrução ALTER FEDERATION ... DROP pode ser executada somente durante a conexão com o banco de dados raiz da federação.

  • O valor de limite especificado precisa corresponder a um limite de intervalo (range_high, range_low) existente na federação.

  • DROP é uma operação assíncrona.

    Quando a operação DROP é iniciada, a opção LOW ou HIGH e o valor de limite especificado determinam o membro da federação que será removido. Um membro da federação adjacente é expandido para cobrir o intervalo do membro da federação removido.

    Durante a execução de DROP, nenhuma transferência de dados é executada e não ocorre nenhuma comparação de esquemas.

    Após a conclusão de DROP

    • O membro da federação restante é renomeado.

    • A tabela sys.federation_members não inclui mais o membro da federação removido e tem o intervalo atualizado para o membro da federação restante.

    • Todas as conexões existentes com os membros da federação são desconectadas. O membro da federação removido deixa de aceitar conexões. O membro da federação restante anula todas as conexões existentes.

Considerações sobre segurança para operações em federações

Para executar as instruções CREATE, ALTER e DROP em federações, é necessário estar conectado com a raiz da federação e ser membro da função dbmanager no servidor. Você também deve ser membro do grupo dbo do banco de dados.

As instruções SPLIT e DROP exigem que você tenha as permissões CREATE e DROP DATABASE nos membros da federação de origem e no servidor ao qual você está conectado. No Banco de dados SQL do Windows Azure, isso é restrito aos membros da função de servidor dbmanager. O proprietário do membro da federação de origem se torna o proprietário do membro da federação de destino, seja qual for a conta de usuário que estiver executando a operação.

Simultaneidade de operações SPLIT e DROP

É permitido executar várias operações DROP ou SPLIT simultaneamente, desde que nenhum dos membros da federação de origem nem de destino se sobreponha.

  • DROP AT (LOW distribution_name = boundary_value)

    Remove o membro da federação para o limite INFERIOR do valor limite e amplia o membro da federação para o valor SUPERIOR do valor de limite. Por exemplo, uma determinada federação (fed1) contendo três membros da federação que cobrem 0,100 (db1), 100,200 (db2) e 200,300 (db3), emitindo ALTER FEDERATION fed1 DROP AT (LOW customer_id=200), executará o seguinte:

    1. DROP db2 e todos os dados entre 100,200

    2. db3 é renomeado para db4. Dbid de Db4 permanece o mesmo.

    3. Db4 agora cobre o intervalo de 100,300

  • DROP AT (HIGH distribution_name = boundary_value)

    Remove o membro da federação para o limite SUPERIOR do valor de limite e amplia o membro da federação para o valor INFERIOR do valor de limite. Por exemplo, uma determinada federação (fed1) contendo três membros da federação que cobrem 0,100 (db1), 100,200 (db2) e 200,300 (db3), emitindo ALTER FEDERATION fed1 DROP AT (HIGH customer_id=200), executará o seguinte:

    1. DROP db3 e todos os dados entre 200,300

    2. db2 é renomeado para db4. Dbid de Db4 permanece o mesmo que db2.

    3. Db4 agora cobre o intervalo de 100,300

Isso foi útil para você?
(1500 caracteres restantes)

Contribuições da comunidade

ADICIONAR
© 2013 Microsoft. Todos os direitos reservados.
facebook page visit twitter rss feed newsletter