Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server
Azure SQL Managed Instance
A partição torna tabelas ou índices grandes mais geríveis porque a partição permite gerir e aceder a subconjuntos de dados de forma rápida e eficiente, mantendo ao mesmo tempo a integridade de uma coleção de dados. Para obter mais informações, consulte Tabelas Particionadas e Índices. A replicação suporta particionamento fornecendo um conjunto de propriedades que especificam como as tabelas e índices particionados devem ser tratados.
Propriedades do Artigo para Replicação Transacional e de Fusão
A tabela seguinte lista os objetos que são usados para particionar os dados.
| Objeto | Criado usando |
|---|---|
| Tabela ou índice particionado | CREATE TABLE ou CREATE INDEX |
| Função de partição | CREATE PARTITION FUNCTION |
| Esquema de partição | CREATE PARTITION SCHEME |
As propriedades de partição são as opções do esquema do artigo que determinam se os objetos de partição devem ser copiados para o Assinante. Estas opções de esquema podem ser definidas das seguintes formas:
Na página de Propriedades do Artigo do Assistente de Novas Publicações ou na caixa de diálogo Propriedades de Publicação. Para copiar os objetos listados na tabela anterior, especifique o valor true para as propriedades Copiar esquemas de particionamento da tabela e Copiar esquemas de particionamento do índice. Para informações sobre como aceder à página de Propriedades do Artigo , consulte Visualizar e Modificar Propriedades de Publicação.
Utilizando o parâmetro schema_option de um dos seguintes procedimentos armazenados:
sp_addarticle ou sp_changearticle para replicação transacional
sp_addmergearticle ou sp_changemergearticle para replicação de fusão
Para copiar os objetos listados na tabela anterior, especifique os valores apropriados das opções de esquema. Para informações sobre como especificar opções de esquema, consulte Especificar Opções de Esquema.
A replicação copia os objetos para o Assinante durante a sincronização inicial. Se o esquema de partição usar grupos de ficheiros diferentes do grupo PRINCIPAL, esses grupos de ficheiros devem existir no Assinante antes da sincronização inicial.
Após a inicialização do Assinante, as alterações nos dados são propagadas para o Assinante e aplicadas às partições apropriadas. No entanto, alterações ao esquema de partição não são suportadas. A replicação transacional e a fusão não suportam replicar os seguintes comandos: ALTER PARTITION FUNCTION, ALTER PARTITION SCHEME, ou a instrução REBUILD WITH PARTITION de ALTER INDEX. As alterações associadas a elas não serão automaticamente replicadas para o Assinante. É da responsabilidade do utilizador fazer manualmente alterações semelhantes no subscritor.
Suporte de Replicação para Comutação de Partições
Um dos principais benefícios da partição de tabelas é a capacidade de mover rápida e eficientemente subconjuntos de dados entre partições. Os dados são movidos usando o comando SWITCH PARTITION. Por defeito, quando uma tabela está ativada para replicação, as operações de SWITCH PARTITION são bloqueadas pelas seguintes razões:
Se os dados forem movidos para dentro ou fora de uma tabela que existe no Publisher mas não existe no Subscritor, o Publisher e o Subscritor podem tornar-se inconsistentes entre si. Este problema ocorre tipicamente quando os dados são movidos para dentro ou fora de uma tabela de staging.
Se o Assinante tiver uma definição diferente para a tabela particionada da do Publisher, o Distribution Agent falhará quando tentar aplicar alterações ao Assinante.
Apesar destes potenciais problemas, a comutação de partições pode ser ativada para replicação transacional. Antes de ativar a troca de partições, certifique-se de que todas as tabelas envolvidas na troca de partições existem no Publisher e no Subscriber, e que as definições de tabela e partição são as mesmas.
Quando as partições têm exatamente o mesmo esquema de partição nos editores e assinantes, podes ativar allow_partition_switch juntamente com replication_partition_switch, o que só replica a instrução de troca de partição para o assinante. Também podes ativar allow_partition_switch sem replicar o DDL. Isto é útil no caso de querer extrair os meses antigos da partição, mas manter a partição replicada por mais um ano para efeitos de backup junto do assinante.
Se ativares a troca de partições no SQL Server 2008 R2 até à versão atual, poderás também precisar de operações de divisão e fusão num futuro próximo. Antes de executar uma operação de divisão ou fusão numa tabela replicada ou com CDC, certifique-se de que a partição em questão não tem comandos replicados pendentes. Deve também garantir que nenhuma operação DML é executada na partição durante as operações de divisão e fusão. Se houver transações que o leitor de registo ou o trabalho de captura CDC não tenham processado, ou se operações DML forem realizadas numa partição de uma tabela replicada ou habilitada por CDC enquanto uma operação de divisão ou fusão é executada (envolvendo a mesma partição), pode levar a um erro de processamento (erro 608 - Não foi encontrada entrada de catálogo para o ID da partição) com agente do leitor de registo ou trabalho de captura CDC. Para corrigir o erro, pode ser necessário reinicializar a subscrição ou desativar o CDC nessa tabela ou base de dados.
Cenários não suportados
Os seguintes cenários não são suportados quando se utiliza replicação com comutação de partições:
Replicação entre pares
A replicação peer-to-peer não é suportada com comutação de partições.
Utilização de variáveis com comutação de partição
A utilização de variáveis com mudança de partição em tabelas publicadas com replicação transacional ou Captura de Alterações de Dados (CDC) não é suportada na instrução ALTER TABLE ... SWITCH TO ... PARTITION ....
Por exemplo, o seguinte código de comutação de partições não funcionará com o CDC ativado na base de dados, nem com a Tabela A a participar numa publicação transacional:
DECLARE @SomeVariable INT = $PARTITION.pf_test(10);
ALTER TABLE dbo.TableA
SWITCH TO dbo.TableB
PARTITION @SomeVariable;
Em vez disso, troque a sua partição usando diretamente a função de partição, como no seguinte exemplo:
ALTER TABLE NonPartitionedTable
SWITCH TO PartitionedTable PARTITION $PARTITION.pf_test(10);
Ativar a Comutação de Partições
As seguintes propriedades para publicações transacionais permitem aos utilizadores controlar o comportamento da troca de partições num ambiente replicado:
@allow_partition_switch, quando definido paratrue, SWITCH PARTITION pode ser executado contra a base de dados de publicação.@replicate_partition_switchdetermina se a instrução DDL SWITCH PARTITION deve ser replicada para os subscritores. Esta opção só é válida quando@allow_partition_switchestá definida comotrue.
Pode definir estas propriedades usando sp_addpublication quando a publicação é criada, ou usando sp_changepublication depois de a publicação estar criada. Como referido anteriormente, a replicação por fusão não suporta comutação de partições. Para executar a PARTIÇÃO SWITCH numa tabela que esteja ativada para replicação de fusão, remova a tabela da publicação.