Replica di tabelle e indici partizionati

Il partizionamento semplifica la gestione di indici e tabelle di grandi dimensioni, in quanto consente di gestire e accedere in modo rapido ed efficace a subset di dati, preservando al contempo l'integrità di una raccolta dati. Per ulteriori informazioni, vedere Tabelle e indici partizionati. La replica supporta il partizionamento fornendo un set di proprietà che specificano la modalità di gestione di tabelle e indici partizionati.

Proprietà degli articoli per la replica transazionale e di tipo merge

Nella tabella seguente sono inclusi gli oggetti utilizzati per partizionare i dati.

Oggetto

Creato tramite

Tabella o indice partizionato

CREATE TABLE o CREATE INDEX

Funzione di partizione

CREATE PARTITION FUNCTION

Schema di partizione

CREATE PARTITION SCHEME

Il primo set di proprietà correlato al partizionamento è costituito dalle opzioni dello schema dell'articolo che determinano se gli oggetti di partizionamento devono essere copiati nel Sottoscrittore. È possibile impostare tali opzioni nei modi seguenti:

Tramite la replica vengono copiati gli oggetti nel Sottoscrittore durante la sincronizzazione iniziale. Se lo schema di partizione utilizza filegroup diversi dal filegroup PRIMARY, tali filegroup devono essere presenti nel Sottoscrittore prima della sincronizzazione iniziale.

Al termine dell'inizializzazione del Sottoscrittore, le modifiche dei dati vengono propagate al Sottoscrittore e applicate alle partizioni appropriate. Non sono tuttavia supportate le modifiche allo schema di partizione. La replica transazionale e di tipo merge non supportano i comandi seguenti: ALTER PARTITION FUNCTION, ALTER PARTITION SCHEME e l'istruzione REBUILD WITH PARTITION di ALTER INDEX. La replica di tipo merge non supporta il comando SWITCH PARTITION di ALTER TABLE, supportato invece dalla replica transazionale, come descritto nella sezione seguente. La replica snapshot permette modifiche allo schema di partizionamento perché lo snapshot viene reinizializzato ogni volta che il sottoscrittore esegue la sincronizzazione con la pubblicazione.

La replica transazionale e la replica di tipo merge supportano al massimo 1024 partizioni per tabella o indice.

Supporto della replica per il cambio della partizione

Uno dei vantaggi principali del partizionamento di tabelle consiste nella possibilità di spostare in modo rapido ed efficiente subset di dati tra partizioni. I dati vengono spostati utilizzando il comando SWITCH PARTITION. Per ulteriori informazioni, vedere Trasferimento efficiente dei dati mediante lo spostamento di partizioni. Per impostazione predefinita, quando una tabella è abilitata per la replica, le operazioni SWITCH PARTITION sono bloccate per i motivi seguenti:

  • Se i dati vengono spostati all'interno o all'esterno di una tabella presente nel server di pubblicazione ma non nel Sottoscrittore, il server di pubblicazione e il Sottoscrittore potrebbero risultare incoerenti uno rispetto all'altro. Questo problema si verifica in genere quando i dati vengono spostati all'interno o all'esterno di una tabella di gestione temporanea.

  • Se il Sottoscrittore ha una definizione diversa per la tabella partizionata rispetto al server di pubblicazione, l'esecuzione dell'agente di distribuzione verrà interrotta quando questo tenta di applicare le modifiche nel Sottoscrittore. Questo problema si verifica anche in Sottoscrittori SQL Server 2000, perché SQL Server 2000 non supporta le tabelle partizionate.

Nonostante questi possibili problemi, il cambio della partizione può essere abilitato per la replica transazionale. Prima di abilitare il cambio della partizione, assicurarsi che tutte le tabelle interessate siano presenti nel server di pubblicazione e nel Sottoscrittore e verificare che le definizioni di tabella e di partizione siano identiche.

Se lo schema delle partizioni è uguale nei server di pubblicazione e nei Sottoscrittori, è possibile abilitare il parametro allow_partition_switch insieme a replication_partition_switch; in questo modo verrà replicata solo l'istruzione switch della partizione nel Sottoscrittore. È anche possibile abilitare il parametro allow_partition_switch senza replicare l'istruzione DDL. Questa operazione è utile se si desidera implementare i mesi precedenti nella partizione mantenendo però la partizione replicata nella sua posizione per un altro anno per motivi di backup nel Sottoscrittore.

Nota di attenzioneAttenzione

A causa della colonna nascosta utilizzata per rilevare e risolvere eventuali conflitti, non è consigliabile abilitare il cambio della partizione per le pubblicazioni peer-to-peer.

Abilitazione del cambio della partizione

Le proprietà seguenti per le pubblicazioni transazionali consentono agli utenti di controllare il comportamento del cambio della partizione in un ambiente replicato:

  • @ allow_partition_switch: se impostata su true, è possibile eseguire SWITCH PARTITION sul database di pubblicazione.

  • @ replicate_partition_switch: determina se l'istruzione SWITCH PARTITION DDL deve essere replicata ai Sottoscrittori. Questa opzione è valida solo quando @ allow_partition_switch è impostata su true.

È possibile impostare queste proprietà utilizzando sp_addpublication durante la creazione della pubblicazione oppure sp_changepublication al termine della creazione della pubblicazione. Come notato in precedenza, la replica di tipo merge non supporta il cambio della partizione. Per eseguire SWITCH PARTITION in una tabella abilitata per la replica di tipo merge, rimuovere la tabella dalla pubblicazione.