Ottimizzazione dei filtri di riga con parametriOptimize Parameterized Row Filters

In questo argomento si descrive come ottimizzare i filtri di riga con parametri in SQL Server 2017SQL Server 2017 utilizzando SQL Server Management StudioSQL Server Management Studio o Transact-SQLTransact-SQL.This topic describes how to optimize parameterized row filters in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL.

Contenuto dell'argomentoIn This Topic

Prima di iniziare Before You Begin

Indicazioni Recommendations

  • Quando si utilizzano filtri con parametri, è possibile controllare in che modo i filtri vengono elaborati dalla replica di tipo merge specificando l'opzione use partition groups o keep partition changes durante la creazione di una pubblicazione.When you use parameterized filters, you can control how the filters are processed by merge replication by specifying either the use partition groups option or the keep partition changes option when you create a publication. Queste opzioni consentono di migliorare le prestazioni di sincronizzazione delle pubblicazioni con gli articoli filtrati tramite l'archiviazione di metadati aggiuntivi nel database di pubblicazione.These options improve the synchronization performance for publications with filtered articles by storing additional metadata in the publication database. È possibile controllare la modalità di condivisione dei dati tra i Sottoscrittori impostando l'opzione partition options durante la creazione di un articolo.You can control how the data is shared among Subscribers by setting partition options when you create an article. Per altre informazioni su tali requisiti, vedere i filtri di riga con parametri.For more information about these requirements, see Parameterized Row Filters.

    Con i Sottoscrittori SQL Server CompactSQL Server Compact, keep_partition_changes deve essere impostato su true per assicurarsi che le eliminazioni vengano propagate correttamente.With SQL Server CompactSQL Server CompactSQL Server Compact subscribers, keep_partition_changes must be set to true to ensure that deletes are correctly propagated. Se impostato su false, nel Sottoscrittore potrebbero essere presenti più righe rispetto al previsto.When set to false, the subscriber might have more rows than expected.

Utilizzo di SQL Server Management Studio Using SQL Server Management Studio

È possibile utilizzare le impostazioni seguenti per ottimizzare i filtri di riga con parametri:The following settings can be used to optimize parameterized row filters:

Partition OptionsPartition Options
Impostare questa opzione nella pagina Proprietà della finestra di dialogo Proprietà articolo - <Articolo> o nella finestra di dialogo Aggiungi filtro.Set this option on the Properties page of the Article Properties - <Article> dialog box, or in the Add Filter dialog box. Entrambe le finestre di dialogo sono disponibili nella Creazione guidata nuova pubblicazione e nella finestra di dialogo Proprietà pubblicazione - <Pubblicazione>.Both dialog boxes are available in the New Publication Wizard and the Publication Properties - <Publication> dialog box. La finestra di dialogo Proprietà articolo - <Articolo> consente di specificare altri valori per questa opzione, che non sono disponibili nella finestra di dialogo Aggiungi filtro.The Article Properties - <Article> dialog box allows you to specify additional values for this option that are not available in the Add Filter dialog box.

Pre-calcola partizioniPrecompute Partitions
Per impostazione predefinita, questa opzione viene impostata su True se gli articoli nella pubblicazione rispondono a una serie di requisiti.This option is set to True by default if the articles in your publication adhere to a set of requirements. Per altre informazioni su questi requisiti, vedere Ottimizzare le prestazioni dei filtri con parametri con le partizioni pre-calcolate.For more information about these requirements, see Optimize Parameterized Filter Performance with Precomputed Partitions. Modificare questa opzione nella pagina Opzioni sottoscrizione della finestra di dialogo Proprietà pubblicazione - <Pubblicazione>.Modify this option on the Subscription Options page of the Publication Properties - <Publication> dialog box.

Ottimizza sincronizzazioneOptimize Synchronization
Questa opzione deve essere impostata su True solo se Pre-calcola partizioni viene impostata su False.This option should be set to True only if Precompute Partitions is set to False. Impostare questa opzione nella pagina Opzioni sottoscrizione della finestra di dialogo Proprietà pubblicazione - <Pubblicazione>.Set this option on the Subscription Options page of the Publication Properties - <Publication> dialog box.

Per altre informazioni sull'uso della Creazione guidata nuova pubblicazione e sull'accesso alla finestra di dialogo Proprietà pubblicazione - <Pubblicazione>, vedere Creare una pubblicazione e Visualizzare e modificare le proprietà della pubblicazione.For more information about using the New Publication Wizard and accessing the Publication Properties - <Publication> dialog box, see Create a Publication and View and Modify Publication Properties.

Per impostare le opzioni delle partizioni nella finestra di dialogo Aggiungi filtro o Modifica filtroTo set Partition options in the Add Filter or Edit Filter dialog box

  1. Nella pagina Filtro righe tabella della Creazione guidata nuova pubblicazione o nella pagina Filtra righe della finestra di dialogo Proprietà pubblicazione - <Pubblicazione> fare clic su Aggiungi e quindi su Aggiungi filtro.On the Filter Table Rows page of the New Publication Wizard or the Filter Rows page of the Publication Properties - <Publication> dialog box, click Add, and then click Add Filter.

  2. Creare un filtro con parametri.Create a parameterized filter. Per altre informazioni, vedere Definizione e modifica di un filtro di riga con parametri per un articolo di merge.For more information, see Define and Modify a Parameterized Row Filter for a Merge Article.

  3. Selezionare l'opzione corrispondente alla modalità desiderata di condivisione dei dati tra i Sottoscrittori:Select the option that matches how data will be shared among Subscribers:

    • Una riga di questa tabella verrà inviata a più sottoscrizioniA row from this table will go to multiple subscriptions

    • Una riga di questa tabella verrà inviata a una sola sottoscrizioneA row from this table will go to only one subscription

      Selezionando Una riga di questa tabella verrà inviata a una sola sottoscrizioneè possibile ottimizzare le prestazioni della replica di tipo merge archiviando ed elaborando una minore quantità di metadati.If you select A row from this table will go to only one subscription, merge replication can optimize performance by storing and processing less metadata. È tuttavia necessario garantire che i dati vengano partizionati in modo da non consentire la replica di una riga in più Sottoscrittori.However, you must ensure that the data is partitioned in such a way that a row cannot be replicated to more than one Subscriber. Per altre informazioni, vedere la sezione relativa all'impostazione delle opzioni delle partizioni nell'argomento i filtri di riga con parametri.For more information, see the section "Setting 'partition options'" in the topic Parameterized Row Filters.

  4. Fare clic su OK.Click OK.

  5. Se è visualizzata la finestra di dialogo Proprietà pubblicazione - <Pubblicazione> fare clic su OK per salvare e chiudere la finestra di dialogo.If you are in the Publication Properties - <Publication> dialog box, click OK to save and close the dialog box.

Per impostare Opzioni partizioni nella finestra di dialogo Proprietà articolo - <Articolo>To set Partition Options in the Article Properties - <Article> dialog box

  1. Nella pagina Articoli della Creazione guidata nuova pubblicazione o nella finestra di dialogo Proprietà pubblicazione - <Pubblicazione> selezionare una tabella e quindi fare clic su Proprietà articolo.On the Articles page of the New Publication Wizard or the Publication Properties - <Publication> dialog box, select a table, and then click Article Properties.

  2. Fare clic su Imposta proprietà dell'articolo di tabelle evidenziato o su Imposta proprietà di tutti gli articoli di tabelle.Click Set Properties of Highlighted Table Article or Set Properties of All Table Articles.

  3. Nella sezione Oggetto di destinazione della scheda Proprietà della finestra di dialogo Proprietà articolo - <Articolo> specificare uno dei seguenti valori per Opzioni partizioni:In the Destination Object section of the Properties tab of the Article Properties - <Article> dialog box, specify one of the following values for Partition Options:

    • SovrapposteOverlapping

    • Sovrapposte, non ammesse modifiche dei dati fuori partizioneOverlapping, disallow out-of-partition data changes

    • Non sovrapposte, sottoscrizione unicaNonoverlapping, single subscription

    • Non sovrapposte, condivise dalle sottoscrizioniNonoverlapping, shared between subscriptions

      Per ulteriori informazioni su queste opzioni e sulla loro relazione con le opzioni disponibili nelle finestre di dialogo Aggiungi filtro e Modifica filtro , vedere la sezione relativa all'impostazione delle opzioni partizioni nell'argomento i filtri di riga con parametri.For more information about these options and how they relate to the options available in the Add Filter and Edit Filter dialog boxes, see the "Setting 'partition options'" section of Parameterized Row Filters.

  4. Fare clic su OK.Click OK.

  5. Se è visualizzata la finestra di dialogo Proprietà pubblicazione - <Pubblicazione> fare clic su OK per salvare e chiudere la finestra di dialogo.If you are in the Publication Properties - <Publication> dialog box, click OK to save and close the dialog box.

Per impostare Pre-calcola partizioniTo set Precompute Partitions

  1. Nella pagina Opzioni sottoscrizione della finestra di dialogo Proprietà pubblicazione - <Pubblicazione> selezionare un valore per l'opzione Pre-calcola partizioni.On the Subscription Options page of the Publication Properties - <Publication> dialog box, select a value for the Precompute Partitions option. Questa proprietà è in sola lettura se:The property is read-only if:

    • La pubblicazione non soddisfa i requisiti delle partizioni pre-calcolate.The publication does not meet the requirements for precomputed partitions.

    • Non è ancora stato generato lo snapshot per la pubblicazione.A snapshot has not yet been generated for the publication. In questo caso, l'opzione visualizza il valore Imposta automaticamente alla creazione di uno snapshot.In this case, the option displays a value of Set automatically when a snapshot is created.

  2. Fare clic su OK.Click OK.

Per impostare Ottimizza sincronizzazioneTo set Optimize Synchronization

  1. Nella pagina Opzioni sottoscrizione della finestra di dialogo Proprietà pubblicazione - <Pubblicazione> selezionare il valore True per l'opzione Ottimizza sincronizzazione.On the Subscription Options page of the Publication Properties - <Publication> dialog box, select a value of True for the Optimize Synchronization option.

  2. Fare clic su OK.Click OK.

Utilizzo di Transact-SQL Using Transact-SQL

Per la definizione delle opzioni di filtraggio per @keep_partition_changes e @use_partition_groups, vedere sp_addmergepublication.For definitions of the filtering options for @keep_partition_changes and @use_partition_groups, see sp_addmergepublication.

Per specificare le ottimizzazioni del filtro di merge durante la creazione di una nuova pubblicazioneTo specify merge filter optimizations when creating a new publication

  1. Nel database di pubblicazione del server di pubblicazione eseguire sp_addmergepublication.At the Publisher on the publication database, execute sp_addmergepublication. Specificare @publication e il valore true per uno dei parametri seguenti:Specify @publication and a value of true for one the following parameters:

  2. Aggiungere un processo snapshot per la pubblicazione.Add a snapshot job for the publication. Per altre informazioni, vedere Creare una pubblicazione.For more information see Create a Publication.

  3. Nel database di pubblicazione del server di pubblicazione eseguire sp_addmergearticlespecificando i parametri seguenti:At the Publisher on the publication database, execute sp_addmergearticle, specifying the following parameters:

    • @publication : nome della pubblicazione ottenuto al passaggio 1.@publication - the name of the publication from step 1.

    • @article : nome dell'articolo.@article - a name for the article

    • @source_object : oggetto di database da pubblicare.@source_object - the database object being published.

    • @subset_filterclause : clausola di filtro con parametri facoltativa utilizzata per filtrare l'articolo in senso orizzontale.@subset_filterclause - the optional parameterized filter clause used to horizontally filter the article.

    • @partition_options : opzioni delle partizioni per l'articolo filtrato.@partition_options - the partition options for the filtered article.

  4. Ripetere il passaggio 3 per ogni articolo della pubblicazione.Repeat step 3 for each article in the publication.

  5. (Facoltativo) Nel database di pubblicazione del server di pubblicazione eseguire sp_addmergefilter per definire un filtro di join tra due articoli.(Optional) At the Publisher on the publication database, execute sp_addmergefilter to define a join filter between two articles. Per altre informazioni, vedere Definizione e modifica di un filtro di join tra articoli di merge.For more information, see Define and Modify a Join Filter Between Merge Articles.

Per visualizzare e modificare i comportamenti del filtro di merge per una pubblicazione esistenteTo view and modify merge filter behaviors for an existing publication

  1. (Facoltativo) Nel database di pubblicazione del server di pubblicazione eseguire sp_helpmergepublication, specificando @publication.(Optional) At the Publisher on the publication database, execute sp_helpmergepublication, specifying @publication. Si noti il valore di keep_partition_changes e use_partition_groups nel set di risultati.Note the value of keep_partition_changes and use_partition_groups in the result set.

  2. (Facoltativo) Nel database di pubblicazione del server di pubblicazione eseguire sp_changemergepublication.(Optional) At the Publisher on the publication database, execute sp_changemergepublication. Specificare il valore use_partition_groups per @property e il valore true o false per @value.Specify a value of use_partition_groups for @property and either true or false for @value.

  3. (Facoltativo) Nel database di pubblicazione del server di pubblicazione eseguire sp_changemergepublication.(Optional) At the Publisher on the publication database, execute sp_changemergepublication. Specificare il valore keep_partition_changes per @property e il valore true o false per @value.Specify a value of keep_partition_changes for @property and either true or false for @value.

    Nota

    Quando si attiva keep_partition_changes, è necessario prima disabilitare use_partition_groups e specificare il valore 1 per @force_reinit_subscription.When enabling keep_partition_changes, you must first disable use_partition_groups and specify a value of 1 for @force_reinit_subscription.

  4. (Facoltativo) Nel database di pubblicazione del server di pubblicazione eseguire sp_changemergearticle.(Optional) At the Publisher on the publication database, execute sp_changemergearticle. Specificare il valore partition_options per @property e il valore appropriato per @value.Specify a value of partition_options for @property and the appropriate value for @value. Per le definizioni di queste opzioni di filtro, vedere sp_addmergearticle .See sp_addmergearticle for definitions of these filtering options.

  5. (Facoltativo) Avviare l'agente snapshot per rigenerare lo snapshot se necessario.(Optional) Start the Snapshot Agent to regenerate the snapshot if necessary. Per informazioni sulle modifiche necessarie per la generazione di un nuovo snapshot, vedere Modificare le proprietà di pubblicazioni e articoli.For information about which changes require a new snapshot to be generated, see Change Publication and Article Properties.

Vedere ancheSee Also

Generare automaticamente un set di filtri di join tra gli articoli di merge (SQL Server Management Studio) Automatically Generate a Set of Join Filters Between Merge Articles (SQL Server Management Studio)
Definire e modificare un filtro di riga con parametri per un articolo di merge Define and Modify a Parameterized Row Filter for a Merge Article
Filtri di riga con parametri Parameterized Row Filters