Replica di tabelle e indici partizionatiReplicate Partitioned Tables and Indexes

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.Partitioning makes large tables or indexes more manageable because partitioning enables you to manage and access subsets of data quickly and efficiently, and maintain the integrity of a data collection at the same time. Per ulteriori informazioni, vedere Partitioned Tables and Indexes.For more information, see Partitioned Tables and Indexes. La replica supporta il partizionamento fornendo un set di proprietà che specificano la modalità di gestione di tabelle e indici partizionati.Replication supports partitioning by providing a set of properties that specify how partitioned tables and indexes should be treated.

Proprietà degli articoli per la replica transazionale e di tipo mergeArticle Properties for Transactional and Merge Replication

Nella tabella seguente sono inclusi gli oggetti utilizzati per partizionare i dati.The following table lists the objects that are used to partition data.

OggettoObject Creato tramiteCreated by using
Tabella o indice partizionatoPartitioned table or index CREATE TABLE o CREATE INDEXCREATE TABLE or CREATE INDEX
Funzione di partizionePartition function CREATE PARTITION FUNCTIONCREATE PARTITION FUNCTION
Schema di partizionePartition scheme CREATE PARTITION SCHEMECREATE 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.The first set of properties related to partitioning are the article schema options that determine whether partitioning objects should be copied to the Subscriber. È possibile impostare tali opzioni nei modi seguenti:These schema options can be set in the following ways:

  • Nella pagina Proprietà articolo della Creazione guidata nuova pubblicazione o nella finestra di dialogo Proprietà pubblicazione.In the Article Properties page of the New Publication Wizard or the Publication Properties dialog box. Per copiare gli oggetti elencati nella tabella precedente, specificare un valore true per le proprietà Copia schemi di partizione delle tabelle e Copia schemi di partizione dell'indice.To copy the objects listed in the previous table, specify a value of true for the properties Copy table partitioning schemes and Copy index partitioning schemes. Per informazioni su come accedere alla pagina Proprietà articolo, vedere Visualizzare e modificare le proprietà della pubblicazione.For information about how to access the Article Properties page, see View and Modify Publication Properties.

  • Utilizzando il parametro schema_option di una delle stored procedure seguenti:By using the schema_option parameter of one of the following stored procedures:

    Tramite la replica vengono copiati gli oggetti nel Sottoscrittore durante la sincronizzazione iniziale.Replication copies objects to the Subscriber during the initial synchronization. Se lo schema di partizione utilizza filegroup diversi dal filegroup PRIMARY, tali filegroup devono essere presenti nel Sottoscrittore prima della sincronizzazione iniziale.If the partition scheme uses filegroups other than the PRIMARY filegroup, those filegroups must exist on the Subscriber before the initial synchronization.

    Al termine dell'inizializzazione del Sottoscrittore, le modifiche dei dati vengono propagate al Sottoscrittore e applicate alle partizioni appropriate.After the Subscriber is initialized, data changes are propagated to the Subscriber and applied to the appropriate partitions. Non sono tuttavia supportate le modifiche allo schema di partizione.However, changes to the partition scheme are not supported. Le repliche transazionale e di tipo merge non supportano la replica dei comandi seguenti: ALTER PARTITION FUNCTION, ALTER PARTITION SCHEME e l'istruzione REBUILD WITH PARTITION di ALTER INDEX.Transactional and merge replication do not support replicating the following commands: ALTER PARTITION FUNCTION, ALTER PARTITION SCHEME, or the REBUILD WITH PARTITION statement of ALTER INDEX. Le modifiche associate non verranno replicate automaticamente nel sottoscrittore.The changes associated with them will not be automatically replicated to the Subscriber. È responsabilità dell'utente apportare manualmente modifiche simili nel Sottoscrittore.It is the responsibility of the user to make similar changes manually at the Subscriber.

Supporto della replica per il cambio della partizioneReplication Support for Partition Switching

Uno dei vantaggi principali del partizionamento di tabelle consiste nella possibilità di spostare in modo rapido ed efficiente subset di dati tra partizioni.One of the key benefits of table partitioning is the ability to quickly and efficiently move subsets of data between partitions. I dati vengono spostati utilizzando il comando SWITCH PARTITION.Data is moved by using the SWITCH PARTITION command. Per impostazione predefinita, quando una tabella è abilitata per la replica, le operazioni SWITCH PARTITION sono bloccate per i motivi seguenti:By default, when a table is enabled for replication, SWITCH PARTITION operations are blocked for the following reasons:

  • 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.If data is moved into or out of a table that exists at the Publisher but does not exist at the Subscriber, the Publisher and Subscriber could become inconsistent with one another. Questo problema si verifica in genere quando i dati vengono spostati all'interno o all'esterno di una tabella di gestione temporanea.This problem typically occurs when data is moved into or out of a staging table.

  • 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.If the Subscriber has a different definition for the partitioned table than the Publisher, the Distribution Agent will fail when it tries to apply changes at the Subscriber.

    Nonostante questi possibili problemi, il cambio della partizione può essere abilitato per la replica transazionale.Despite these potential issues, partition switching can be enabled for transactional replication. 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.Before you enable partition switching, make sure that all tables that are involved in partition switching exist at the Publisher and Subscriber, and make sure that the table and partition definitions are the same.

    Quando lo schema di partizione delle partizioni è lo stesso nei server di pubblicazione e nei Sottoscrittori, è possibile abilitare allow_partition_switch insieme a replication_partition_switch tramite cui verrà eseguita la replica solo dell'istruzione switch della partizione al Sottoscrittore.When partitions have the exact same partition scheme at the publishers and subscribers you can turn on allow_partition_switch along with replication_partition_switch which will only replicate the partition switch statement to the subscriber. È inoltre possibile abilitare allow_partition_switch senza la replica della DDL.You can also turn on allow_partition_switch without replicating the DDL. Questa operazione risulta utile nel caso in cui si desideri eseguire il roll out dei mesi precedenti della partizione ma mantenendo la partizione replicata per un altro anno per scopi di backup nel Sottoscrittore.This is useful in the case where you want to roll old months out of the partition but keep the replicated partition in place for another year for backup purposes at the subscriber.

    Se si abilita il cambio della partizione usando la versione corrente in SQL Server 2008 R2, successivamente potrebbero essere necessarie anche operazioni di divisione e merge.If you enable partition switching on SQL Server 2008 R2 through the current version, you might also need split and merge operations in near future. Prima di eseguire un'operazione di divisione o di unione su una tabella replicata assicurarsi che la partizione in questione non abbia comandi replicati in sospeso.Before executing a split or merge operation on a replicated table ensure that the partition in question does not have any pending replicated commands. È anche necessario assicurarsi che nessuna operazione DML venga eseguita sulla partizione durante le operazioni di divisione e unione.You should also ensure that no DML operations are executed on the partition during the split and merge operations. Se sono presenti transazioni non elaborate dalla lettura log o se le operazioni DML vengono eseguite in una partizione di una tabella replicata durante l'esecuzione di un'operazione di divisione o di merge che coinvolge tale partizione, si potrebbe verificare un errore di elaborazione nell'agente di lettura log.If there are transactions which the log reader has not processed, or if DML operations are performed on a partition of a replicated table while a split or merge operation is executed (involving the same partition), it could lead to a processing error with log reader agent. Per correggere l'errore è necessaria una reinizializzazione della sottoscrizione.In order to correct the error, it might require a re-initialization of the subscription.

Avviso

Non è necessario abilitare il cambio della partizione per pubblicazioni peer-to-peer, a causa della colonna nascosta utilizzata per rilevare e risolvere conflitti.You should not enable partition switching for Peer-to-Peer publications, due to the hidden column which is used to detect and resolve conflict.

Abilitazione del cambio della partizioneEnabling Partition Switching

Le proprietà seguenti per le pubblicazioni transazionali consentono agli utenti di controllare il comportamento del cambio della partizione in un ambiente replicato:The following properties for transactional publications enable users to control the behavior of partition switching in a replicated environment:

  • @allow_partition_switch: se impostata su true, è possibile eseguire SWITCH PARTITION sul database di pubblicazione.@allow_partition_switch, when set to true, SWITCH PARTITION can be executed against the publication database.

  • @replicate_partition_switch : determina se l'istruzione SWITCH PARTITION DDL deve essere replicata ai Sottoscrittori.@replicate_partition_switch determines whether the SWITCH PARTITION DDL statement should be replicated to Subscribers. Questa opzione è valida solo quando @allow_partition_switch è impostata su true.This option is valid only when @allow_partition_switch is set to true.

    È possibile impostare queste proprietà utilizzando sp_addpublication durante la creazione della pubblicazione oppure sp_changepublication al termine della creazione della pubblicazione.You can set these properties by using sp_addpublication when the publication is created, or by using sp_changepublication after the publication is created. Come notato in precedenza, la replica di tipo merge non supporta il cambio della partizione.As noted earlier, merge replication does not support partition switching. Per eseguire SWITCH PARTITION in una tabella abilitata per la replica di tipo merge, rimuovere la tabella dalla pubblicazione.To execute SWITCH PARTITION on a table that is enabled for merge replication, remove the table from the publication.

Vedere ancheSee Also

Pubblicare dati e oggetti di databasePublish Data and Database Objects