Replicando tabelas e índices particionados
O particionamento facilita o gerenciamento de grandes tabelas ou índices, permitindo o acesso e o gerenciamento de subconjuntos de dados de forma rápida e eficaz, ao mesmo tempo em que mantém a integridade geral da coleção de dados. Para obter mais informações, consulte Tabelas e índices particionados. A replicação dá suporte ao particionamento fornecendo um conjunto de propriedades que especificam como tabelas e índices particionados devem ser tratados.
Propriedades de artigo para replicação transacional e de mesclagem
A tabela a seguir lista os objetos que são usados para particionar dados.
Objeto |
Criado com |
---|---|
Tabela ou índice particionado |
CREATE TABLE ou CREATE INDEX |
Função de partição |
CREATE PARTITION FUNCTION |
Esquema de partição |
CREATE PARTITION SCHEME |
O primeiro conjunto de propriedades relacionadas ao particionamento são as opções de esquema de artigo que determinam se os objetos de particionamento devem ser copiados para o Assinante. Essas opções de esquema podem ser definidas das seguintes formas:
Na página Propriedades do Artigo do Assistente para Nova Publicação ou na caixa de Propriedades de Publicação. Para copiar os objetos listados na tabela anterior, especifique um valor de true para as propriedades Copiar esquemas de particionamento de tabela e Copiar esquemas de particionamento de índice. Para obter informações sobre como acessar a página Propriedades do Artigo, consulte Como exibir e modificar propriedades de Artigo e Publicação (SQL Server Management Studio).
Usando o parâmetro schema_option de um dos procedimentos armazenados a seguir:
sp_addarticle ou sp_changearticle para replicação transacional
sp_addmergearticle ou sp_changemergearticle para replicação de mesclagem
Para copiar os objetos listados na tabela anterior, especifique os valores de opção de esquema apropriados. Para obter informações sobre como especificar opções de esquema, consulte Como especificar opções de esquema (Programação Transact-SQL de replicação).
A replicação copia objetos para o Assinante durante a sincronização inicial. Se o esquema de partição usar grupos de arquivo diferentes do grupo de arquivo PRIMARY, esses grupos deverão existir no Assinante antes da sincronização inicial.
Depois que o Assinante é inicializado, as alterações de dados são propagadas para o Assinante e aplicadas nas partições apropriadas. Porém, as alterações no esquema de partição não são suportadas. A replicação transacional e de mesclagem não dão suporte aos seguintes comandos: ALTER PARTITION FUNCTION, ALTER PARTITION SCHEME ou a instrução REBUILD WITH PARTITION de ALTER INDEX. A replicação de mesclagem não suporta o comando SWITCH PARTITION de ALTER TABLE, mas a replicação transacional dá suporte a esse comando, conforme descrito na seção a seguir. A replicação de instantâneo permite as alterações ao esquema de particionamento porque o instantâneo é reinicializado toda vez que o assinante sincroniza com a publicação.
A replicação transacional e de mesclagem suporta no máximo 1024 partições por tabela ou índice.
Suporte de replicação para alternância de partição
Um dos principais benefícios do particionamento de tabela é a possibilidade de mover subconjuntos de dados entre partições com rapidez e eficiência. Os dados são movidos com o comando SWITCH PARTITION. Para obter mais informações, consulte Transferindo dados de forma eficaz usando a alternância de partição. Por padrão, quando uma tabela é habilitada para replicação, as operações SWITCH PARTITION são bloqueadas pelos seguintes motivos:
Se os dados forem movidos para ou de uma tabela que existe no Publicador, mas não existe no Assinante, ambos ficarão inconsistentes entre si. Esse problema ocorre normalmente quando os dados são movidos para ou de uma tabela de preparação.
Se o Assinante tiver uma definição diferente para a tabela particionada da definição do Publicador, o Distribution Agent falhará ao tentar aplicar as alterações no Assinante. Isso também é um problema para Assinantes do SQL Server 2000, pois o SQL Server 2000 não dá suporte a tabelas particionadas.
Apesar destes possíveis problemas, a alternância de partição pode ser habilitada para replicação transacional. Antes de habilitá-la, verifique se todas as tabelas que estão envolvidas na alternância de partição existem no Publicador e no Assinante e verifique se as definições de tabela e de partição são iguais.
Quando as partições têm o esquema de partição exato nos publicadores e assinantes, você pode ativar o allow_partition_switch junto com replication_partition_switch, que somente replicará a instrução switch da partição para o assinante. Você também pode ativar o allow_partition_switch sem replicar o DDL. Isto é útil no caso em que você deseja reverter meses antigos da partição, mas persistir a partição replicada no local durante outro ano para fins de backup no assinante.
Cuidado |
---|
Você não deveria habilitar o switch de partição para publicações ponto a ponto, devido à coluna oculta que é usada para detectar e resolver conflitos. |
Habilitando a alternância de partição
As propriedades a seguir para publicações transacionais permitem que os usuários controlem o comportamento da alternância de partição em um ambiente replicado:
@allow_partition_switch, quando definido como true, SWITCH PARTITION pode ser executado no banco de dados de publicação.
@replicate_partition_switch determina se a instrução SWITCH PARTITION DDL deve ser replicada para Assinantes. Esta opção só é válida quando @allow_partition_switch é definido como true.
Você pode definir essas propriedades usando sp_addpublication quando a publicação é criada ou usando sp_changepublication depois da criação da publicação. Como observado anteriormente, a replicação de mesclagem não dá suporte à alternância de partição. Para executar SWITCH PARTITION em uma tabela que é habilitada para replicação de mesclagem, remova a tabela da publicação.