Optimieren von parametrisierten ZeilenfilternOptimize Parameterized Row Filters

Gilt für: JaSQL Server NeinAzure SQL-Datenbank NeinAzure Synapse Analytics (SQL DW) NeinParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

In diesem Thema wird beschrieben, wie parametrisierte Zeilenfilter in SQL Server 2019 (15.x)SQL Server 2019 (15.x) mit SQL Server Management StudioSQL Server Management Studio oder Transact-SQLTransact-SQLoptimiert werden.This topic describes how to optimize parameterized row filters in SQL Server 2019 (15.x)SQL Server 2019 (15.x) by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL.

In diesem ThemaIn This Topic

VorbereitungenBefore You Begin

EmpfehlungenRecommendations

  • Wenn Sie parametrisierte Filter verwenden, können Sie festlegen, wie die Filter durch die Mergereplikation verarbeitet werden, indem Sie bei der Erstellung der Veröffentlichung entweder die Option use partition groups oder die Option keep partition changes wählen.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. Diese Optionen verbessern bei Veröffentlichungen mit gefilterten Artikeln die Synchronisierungsleistung, da in der Veröffentlichungsdatenbank zusätzliche Metadaten gespeichert werden.These options improve the synchronization performance for publications with filtered articles by storing additional metadata in the publication database. Sie können steuern, wie die Daten auf die einzelnen Abonnenten aufgeteilt werden, indem Sie bei der Erstellung eines Artikels partition options festlegen.You can control how the data is shared among Subscribers by setting partition options when you create an article. Weitere Informationen zu diesen Anforderungen finden Sie unter Parameterized Row Filters.For more information about these requirements, see Parameterized Row Filters.

    Mit SQL Server CompactSQL Server CompactSQL Server Compact-Abonnenten muss "keep_partition_changes" auf "true" festgelegt werden, um sicherzustellen, dass Löschvorgänge ordnungsgemäß weitergegeben werden.With SQL Server CompactSQL Server CompactSQL Server Compact subscribers, keep_partition_changes must be set to true to ensure that deletes are correctly propagated. Wenn die Einstellung auf "false" festgelegt ist, erhält der Abonnent möglicherweise mehr Zeilen als erwartet.When set to false, the subscriber might have more rows than expected.

Verwenden von SQL Server Management StudioUsing SQL Server Management Studio

Folgende Einstellungen können zur Optimierung von parametrisierten Zeilenfiltern verwendet werden:The following settings can be used to optimize parameterized row filters:

Partition OptionsPartition Options
Legen Sie diese Option auf der Seite Eigenschaften des Dialogfelds Artikeleigenschaften – <Artikel> oder über das Dialogfeld Filter hinzufügen fest.Set this option on the Properties page of the Article Properties - <Article> dialog box, or in the Add Filter dialog box. Der Zugriff auf beide Dialogfelder ist über den Assistenten für neue Veröffentlichung sowie über das Dialogfeld Veröffentlichungseigenschaften - <Veröffentlichung> verfügbar.Both dialog boxes are available in the New Publication Wizard and the Publication Properties - <Publication> dialog box. Im Dialogfeld Artikeleigenschaften -.<Artikel> , können Sie weitere Werte für diese Option angeben, die im Dialogfeld Filter hinzufügen nicht verfügbar sind.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.

Partitionen im Voraus berechnenPrecompute Partitions
Diese Option ist standardmäßig auf Wahr festgelegt, wenn die Artikel in Ihrer Veröffentlichung einem Satz von Anforderungen entsprechen.This option is set to True by default if the articles in your publication adhere to a set of requirements. Weitere Informationen zu diesen Anforderungen finden Sie unter Parametrisierte Filter-Leistung mit Vorausberechneten Partitionen optimieren.For more information about these requirements, see Optimize Parameterized Filter Performance with Precomputed Partitions. Diese Option können Sie auf der Seite Abonnementoptionen des Dialogfelds Veröffentlichungseigenschaften - <Veröffentlichung> ändern.Modify this option on the Subscription Options page of the Publication Properties - <Publication> dialog box.

Synchronisierung optimierenOptimize Synchronization
Diese Option sollte nur auf Wahr festgelegt werden, wenn Partitionen im Voraus berechnen auf Falschfestgelegt ist.This option should be set to True only if Precompute Partitions is set to False. Diese Option können Sie auf der Seite Abonnementoptionen des Dialogfelds Veröffentlichungseigenschaften - <Veröffentlichung> festlegen.Set this option on the Subscription Options page of the Publication Properties - <Publication> dialog box.

Weitere Informationen zum Assistenten für neue Veröffentlichung sowie zum Zugriff auf das Dialogfeld Veröffentlichungseigenschaften - <Veröffentlichung> finden Sie unter Eine Veröffentlichung erstellen und Anzeigen und Ändern von Veröffentlichungseigenschaften.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.

So legen Sie Partitionsoptionen im Dialogfeld Filter hinzufügen bzw. Filter bearbeiten festTo set Partition options in the Add Filter or Edit Filter dialog box

  1. Klicken Sie auf der Seite Tabellenzeilen filtern im Assistenten für neue Veröffentlichung bzw. auf der Seite Zeilen filtern im Dialogfeld Veröffentlichungseigenschaften - <Veröffentlichung> zunächst auf Hinzufügen und anschließend auf Filter hinzufügen.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. Erstellen Sie einen parametrisierten Filter.Create a parameterized filter. Weitere Informationen finden Sie unter Definieren und Ändern eines parametrisierten Zeilenfilters für einen Mergeartikel.For more information, see Define and Modify a Parameterized Row Filter for a Merge Article.

  3. Wählen Sie die Option aus, mit der angegeben wird, wie Daten für mehrere Abonnenten freigegeben werden:Select the option that matches how data will be shared among Subscribers:

    • Eine Zeile aus dieser Tabelle wird an mehrere Abonnements gesendetA row from this table will go to multiple subscriptions

    • Eine Zeile aus dieser Tabelle wird nur an ein Abonnement gesendetA row from this table will go to only one subscription

    Wenn Sie Eine Zeile aus dieser Tabelle wird nur an ein Abonnement gesendetauswählen, kann die Mergereplikation die Leistung optimieren, da weniger Metadaten gespeichert und verarbeitet werden.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. Sie müssen jedoch sicherstellen, dass die Daten so partitioniert werden, dass eine Zeile nicht für mehrere Abonnenten repliziert werden kann.However, you must ensure that the data is partitioned in such a way that a row cannot be replicated to more than one Subscriber. Weitere Informationen finden Sie im Abschnitt zum Festlegen von Partitionsoptionen unter Parameterized Row Filters.For more information, see the section "Setting 'partition options'" in the topic Parameterized Row Filters.

  4. Klicken Sie auf OK.Click OK.

  5. Wenn Sie sich im Dialogfeld Veröffentlichungseigenschaften.-.<Veröffentlichung> befinden, klicken Sie auf OK, um zu speichern und das Dialogfeld zu schließen.If you are in the Publication Properties - <Publication> dialog box, click OK to save and close the dialog box.

So legen Sie Partitionsoptionen im Dialogfeld Artikeleigenschaften - <Artikel> festTo set Partition Options in the Article Properties - <Article> dialog box

  1. Wählen Sie im Assistenten für neue Veröffentlichung auf der Seite Artikel bzw. im Dialogfeld Veröffentlichungseigenschaften – <<Veröffentlichung> eine Tabelle aus, und klicken anschließend auf Artikeleigenschaften.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. Klicken Sie auf Eigenschaften des hervorgehobenen Tabelle-Artikels festlegen oder Eigenschaften aller Tabellenartikel festlegen.Click Set Properties of Highlighted Table Article or Set Properties of All Table Articles.

  3. Geben Sie im Abschnitt Zielobjekt der Registerkarte Eigenschaften des Dialogfensters Artikeleigenschaften - <Artikel> einen der folgenden Werte für Partitionsoptionen an: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:

    • ÜberlappendOverlapping

    • Überlappend, Datenänderungen außerhalb der Partition nicht zulassenOverlapping, disallow out-of-partition data changes

    • Nicht überlappend, ein AbonnementNonoverlapping, single subscription

    • Nicht überlappend, für mehrere Abonnements freigegebenNonoverlapping, shared between subscriptions

    Weitere Informationen zu diesen Optionen und dazu, in welcher Beziehung Sie zu den Optionen stehen, die im Dialogfeld Filter hinzufügen und Filter bearbeiten verfügbar sind, finden Sie im Abschnitt über das Festlegen von Partitionsoptionen unter Parametrisierte Zeilenfilter.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. Klicken Sie auf OK.Click OK.

  5. Wenn Sie sich im Dialogfeld Veröffentlichungseigenschaften.-.<Veröffentlichung> befinden, klicken Sie auf OK, um zu speichern und das Dialogfeld zu schließen.If you are in the Publication Properties - <Publication> dialog box, click OK to save and close the dialog box.

So legen Sie einen Wert für Partitionen im Voraus berechnen festTo set Precompute Partitions

  1. Wählen Sie auf der Seite Abonnementoptionen im Dialogfeld Veröffentlichungseigenschaften - <Veröffentlichung> einen Wert für die Option Partitionen im Voraus berechnen aus.On the Subscription Options page of the Publication Properties - <Publication> dialog box, select a value for the Precompute Partitions option. Die Eigenschaft ist in folgenden Fällen schreibgeschützt:The property is read-only if:

    • Die Veröffentlichung erfüllt die Anforderungen für im Voraus berechnete Partitionen nicht.The publication does not meet the requirements for precomputed partitions.

    • Es wurde noch keine Momentaufnahme für die Veröffentlichung generiert.A snapshot has not yet been generated for the publication. In diesem Fall wird für die Option der Wert Wird automatisch beim Erstellen einer Momentaufnahme festgelegtangezeigt.In this case, the option displays a value of Set automatically when a snapshot is created.

  2. Klicken Sie auf OK.Click OK.

So legen Sie einen Wert für Synchronisierung optimieren festTo set Optimize Synchronization

  1. Wählen Sie auf der Seite Abonnementoptionen im Dialogfeld Veröffentlichungseigenschaften > <Veröffentlichung> einen Wert für True für die Option Synchronisierung optimieren aus.On the Subscription Options page of the Publication Properties - <Publication> dialog box, select a value of True for the Optimize Synchronization option.

  2. Klicken Sie auf OK.Click OK.

Verwenden von Transact-SQLUsing Transact-SQL

Informationen zur Definition der Filteroptionen für @keep_partition_changes und @use_partition_groups finden Sie unter sp_addmergepublication.For definitions of the filtering options for @keep_partition_changes and @use_partition_groups, see sp_addmergepublication.

So geben Sie die Optimierungen für Mergefilter beim Erstellen einer neuen Veröffentlichung anTo specify merge filter optimizations when creating a new publication

  1. Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_addmergepublicationaus.At the Publisher on the publication database, execute sp_addmergepublication. Geben Sie @publication und den Wert true für einen der folgenden Parameter an:Specify @publication and a value of true for one the following parameters:

  2. Fügen Sie einen Momentaufnahme-Auftrag für die Veröffentlichung hinzu.Add a snapshot job for the publication. Weitere Informationen finden Sie unter Erstellen einer Veröffentlichung.For more information see Create a Publication.

  3. Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_addmergearticleaus, und geben Sie die folgenden Parameter an:At the Publisher on the publication database, execute sp_addmergearticle, specifying the following parameters:

    • @publication: der Name der Veröffentlichung aus Schritt 1@publication - the name of the publication from step 1.

    • @article: ein Name für den Artikel@article - a name for the article

    • @source_object: das Datenbankobjekt, das veröffentlicht wird@source_object - the database object being published.

    • @subset_filterclause: die optionale parametrisierte Filterklausel, die verwendet wird, um den Artikel horizontal zu filtern@subset_filterclause - the optional parameterized filter clause used to horizontally filter the article.

    • @partition_options: die Partitionsoptionen für den gefilterten Artikel@partition_options- the partition options for the filtered article.

  4. Wiederholen Sie Schritt 3 für jeden Artikel in der Veröffentlichung.Repeat step 3 for each article in the publication.

  5. (Optional) Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_addmergefilter aus, um einen Joinfilter zwischen zwei Artikeln zu definieren.(Optional) At the Publisher on the publication database, execute sp_addmergefilter to define a join filter between two articles. Weitere Informationen finden Sie unter Definieren und Ändern eines Verknüpfungsfilters zwischen Mergeartikeln.For more information, see Define and Modify a Join Filter Between Merge Articles.

So zeigen Sie das Verhalten von Mergefiltern für eine vorhandene Veröffentlichung an und ändern esTo view and modify merge filter behaviors for an existing publication

  1. (Optional) Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_helpmergepublication unter Angabe von @publication aus.(Optional) At the Publisher on the publication database, execute sp_helpmergepublication, specifying @publication. Beachten Sie den Wert von keep_partition_changes und use_partition_groups im Resultset.Note the value of keep_partition_changes and use_partition_groups in the result set.

  2. (Optional) Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_changemergepublicationaus.(Optional) At the Publisher on the publication database, execute sp_changemergepublication. Geben Sie den Wert use_partition_groups für @property und entweder true oder false für @value an.Specify a value of use_partition_groups for @property and either true or false for @value.

  3. (Optional) Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_changemergepublicationaus.(Optional) At the Publisher on the publication database, execute sp_changemergepublication. Geben Sie den Wert keep_partition_changes für @property und entweder true oder false für @value an.Specify a value of keep_partition_changes for @property and either true or false for @value.

    Hinweis

    Wenn Sie keep_partition_changes aktivieren, müssen Sie zuerst use_partition_groups deaktivieren und den Wert 1 für @force_reinit_subscription angeben.When enabling keep_partition_changes, you must first disable use_partition_groups and specify a value of 1 for @force_reinit_subscription.

  4. (Optional) Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_changemergearticleaus.(Optional) At the Publisher on the publication database, execute sp_changemergearticle. Geben Sie den Wert partition_options für @property und den entsprechenden Wert für *@value\` an.Specify a value of partition_options for @property and the appropriate value for *@value\`. Informationen zur Definition dieser Filteroptionen finden Sie unter sp_addmergearticle .See sp_addmergearticle for definitions of these filtering options.

  5. (Optional) Starten Sie den Momentaufnahme-Agent, um, wenn notwendig, die Momentaufnahme erneut zu generieren.(Optional) Start the Snapshot Agent to regenerate the snapshot if necessary. Informationen dazu, welche Änderungen die Generierung einer neuen Momentaufnahme erforderlich machen, finden Sie unter Ändern von Veröffentlichungs- und Artikeleigenschaften.For information about which changes require a new snapshot to be generated, see Change Publication and Article Properties.

Weitere InformationenSee Also

Automatisches Generieren einer Reihe von Joinfiltern zwischen Mergeartikeln (SQL Server Management Studio) Automatically Generate a Set of Join Filters Between Merge Articles (SQL Server Management Studio)
Definieren und ändern Sie einen parametrisierten Zeilenfilter mit Mergeartikeln Define and Modify a Parameterized Row Filter for a Merge Article
Parametrisierte ZeilenfilterParameterized Row Filters