Filtern von veröffentlichten Daten

Das Filtern von Tabellenartikeln ermöglicht es Ihnen, Datenpartitionen zu erstellen, die veröffentlicht werden können. Das Filtern von veröffentlichten Daten bietet folgende Möglichkeiten:

  • Minimieren der über das Netzwerk gesendeten Datenmenge.
  • Reduzieren des erforderlichen Speicherplatzes auf dem Abonnenten.
  • Anpassen von Publikationen und Anwendungen an die individuellen Anforderungen des Abonnenten.
  • Vermeiden oder Reduzieren von Konflikten, wenn Abonnenten Daten aktualisieren, da unterschiedliche Datenpartitionen an verschiedene Abonnenten gesendet werden können (es ist nicht möglich, dass mehrere Abonnenten dieselben Datenwerte aktualisieren).
  • Verhindern von Übertragungen vertraulicher Daten. Mithilfe von Zeilen- und Spaltenfiltern kann der Zugriff auf Daten durch einen Abonnenten eingeschränkt werden. Bei der Mergereplikation sind Sicherheitsaspekte zu berücksichtigten, wenn Sie einen parametrisierten Filter verwenden, der HOST_NAME() enthält. Weitere Informationen finden Sie im Abschnitt zum Filtern mit HOST_NAME() unter Parametrisierte Zeilenfilter.

Die Replikation bietet vier Filtertypen:

  • Statische Zeilenfilter, die bei allen Replikationstypen verfügbar sind.
    Wenn Sie statische Zeilenfilter verwenden, können Sie eine Teilmenge von Zeilen auswählen, die veröffentlicht werden. Alle Abonnenten einer gefilterten Publikation erhalten die gleiche Teilmenge von Zeilen für die gefilterte Tabelle. Weitere Informationen finden Sie im Abschnitt zu statischen Zeilenfiltern in diesem Thema.
  • Spaltenfilter, die bei allen Replikationstypen verfügbar sind.
    Wenn Sie Spaltenfilter verwenden, können Sie eine Teilmenge von Spalten auswählen, die veröffentlicht werden. Weitere Informationen finden Sie in diesem Thema im Abschnitt zu Spaltenfiltern.
  • Parametrisierte Zeilenfilter, die nur bei der Mergereplikation verfügbar sind.
    Wenn Sie parametrisierte Zeilenfilter verwenden, können Sie eine Teilmenge von Zeilen auswählen, die veröffentlicht werden. Im Unterschied zu statischen Filtern, bei denen dieselbe Teilmenge von Zeilen an jeden Abonnenten gesendet wird, verwenden parametrisierte Zeilenfilter einen vom Abonnenten bereitgestellten Datenwert, um den Abonnenten unterschiedliche Teilmengen von Zeilen zu senden. Weitere Informationen finden Sie unter Parametrisierte Zeilenfilter.
  • Verknüpfungsfilter, die nur bei der Mergereplikation verfügbar sind.
    Mithilfe von Verknüpfungsfiltern können Sie einen Zeilenfilter von einer veröffentlichten Tabelle auf eine andere erweitern. Weitere Informationen finden Sie unter Verknüpfungsfilter.

Statische Zeilenfilter

Die folgende Abbildung zeigt eine veröffentlichte Tabelle, die so gefiltert wird, dass nur die Zeilen 2, 3 und 6 in die Publikation aufgenommen werden.

Zeilenfilterung

Bei einem statischen Zeilenfilter werden die zu veröffentlichenden Daten mit einer WHERE-Klausel ausgewählt. Dabei geben Sie den letzten Teil der WHERE-Klausel an. Sehen Sie sich die Product-Tabelle (AdventureWorks) in der Adventure Works-Beispieldatenbank an, in der die ProductLine-Spalte enthalten ist. Wenn Sie nur die Zeilen mit den Daten zu Produkten veröffentlichen möchten, die sich auf Mountainbikes beziehen, geben Sie ProductLine = 'M' an.

Ein statischer Zeilenfilter gibt für jede Publikation eine einzelne Datengruppe zurück. Im vorherigen Beispiel würden alle Abonnenten nur die Zeilen empfangen, die Daten zu Produkten enthalten, die sich auf Mountainbikes beziehen. Wenn ein anderer Abonnent nur Zeilen mit Daten zu Produkten benötigt, die sich auf Straßenräder beziehen, müssen Sie folgendermaßen vorgehen:

  • Mit der Snapshotreplikation oder Transaktionsreplikation können Sie eine weitere Publikation erstellen und die Tabelle in beide Publikationen aufnehmen (geben Sie ProductLine = 'R') in der Filterklausel für den Artikel in dieser Publikation an).
    ms151775.note(de-de,SQL.90).gifHinweis:
    Zeilenfilter in Transaktionspublikationen können den Verwaltungsaufwand erheblich vergrößern, da die Klausel zur Artikelfilterung für jede Protokollzeile ausgewertet wird, die für eine veröffentlichte Tabelle geschrieben wurde, um zu bestimmen, ob die Zeile repliziert werden soll. Vermeiden Sie Zeilenfilter in Transaktionspublikationen, wenn die einzelnen Replikationsknoten alle Daten vollständig laden können und die gesamte Datengruppe nicht allzu groß ist.
  • Erstellen Sie bei der Mergereplikation nicht mehrere Publikationen mit statischen Zeilenfiltern, sondern verwenden Sie vielmehr parametrisierte Zeilenfilter. Weitere Informationen finden Sie unter Parametrisierte Zeilenfilter.

So definieren oder ändern Sie einen statischen Zeilenfilter

Spaltenfilter

Die folgende Abbildung zeigt eine Publikation, bei der die C-Spalte herausgefiltert wird.

Spaltenfilterung

Sie können auch Zeilen- und Spaltenfilter zusammen verwenden, wie hier dargestellt.

Zeilen- und Spaltenfilterung

Nach dem Erstellen einer Publikation können Sie eine Spalte mithilfe der Spaltenfilterung aus einer vorhandenen Publikation löschen, die Spalte jedoch in der Tabelle auf dem Verleger belassen. Außerdem können Sie eine vorhandene Spalte in die Publikation aufnehmen. Verwenden Sie für weitere Änderungen die Schemaänderungsreplikation, z. B. für das Hinzufügen einer neuen Spalten zu einer Tabelle und das anschließende Hinzufügen zum veröffentlichten Artikel. Weitere Informationen finden Sie in den jeweiligen Abschnitten zum Hinzufügen und Löschen von Spalten unter Vornehmen von Schemaänderungen in Publikationsdatenbanken.

Die in der folgenden Tabelle aufgeführten Spaltentypen können aus bestimmten Publikationstypen nicht herausgefiltert werden.

Spaltentyp Publikationstyp und Optionen

Primärschlüsselspalte

Primärschlüsselspalten sind in Transaktionspublikationen für alle Tabellen erforderlich. Für Tabellen in Mergepublikationen sind keine Primärschlüssel erforderlich. Wenn jedoch eine Primärschlüsselspalte vorhanden ist, kann sie nicht gefiltert werden.

Fremdschlüsselspalte

Alle Publikationen, die mit dem Assistenten für neue Publikation erstellt wurden. Sie können Fremdschlüsselspalten mithilfe gespeicherter Transact-SQL-Prozeduren filtern. Weitere Informationen finden Sie unter How to: Define and Modify a Column Filter (Replication Transact-SQL Programming)

Die rowguid-Spalte

Mergepublikationen1

Die msrepl_tran_version-Spalte

Snapshot- oder Transaktionspublikationen, die aktualisierbare Abonnements zulassen

Spalten, die NULL nicht zulassen und keine Standardwerte aufweisen oder für die die IDENTITY-Eigenschaft nicht festgelegt ist.

Snapshot- oder Transaktionspublikationen, die aktualisierbare Abonnements zulassen

Spalten mit UNIQUE-Einschränkungen oder -Indizes

Snapshot- oder Transaktionspublikationen, die aktualisierbare Abonnements zulassen

Alle Spalten in einer Mergepublikation von SQL Server 7.0

Spalten können in Mergepublikationen von SQL Server 7.0 nicht gefiltert werden.

Timestamp

Snapshot- oder Transaktionspublikationen von SQL Server 7.0, die aktualisierbare Abonnements zulassen

1 Wenn Sie eine Tabelle in einer Mergepublikation veröffentlichen, diese Tabelle bereits eine Spalte vom uniqueidentifier-Datentyp enthält und die ROWGUIDCOL-Eigenschaft festgelegt ist, kann für die Replikation diese Spalte verwendet werden, ohne dass eine weitere Spalte namens rowguid erstellt wird. In diesem Fall muss die vorhandene Spalte veröffentlicht werden.

So definieren oder ändern Sie einen Spaltenfilter

Filteraspekte

Beachten Sie beim Filtern von Daten Folgendes:

  • Alle Spalten, auf die in Zeilenfiltern verwiesen wird, müssen in die Publikation aufgenommen werden. Mit anderen Worten: Sie können keinen Spaltenfilter verwenden, um eine Spalte auszuschließen, die in einem Zeilenfilter verwendet wird.
  • Wenn ein Filter nach dem Initialisieren von Abonnements hinzugefügt oder geändert wird, müssen die Abonnements erneut initialisiert werden.
  • Die maximale Anzahl Bytes, die für eine in einem Filter verwendete Spalte zulässig ist, beträgt bei einem Artikel in einer Mergepublikation 1024 und bei einem Artikel in einer Transaktionspublikation 8000.
  • Auf Spalten der folgenden Datentypen kann in Zeilenfiltern oder Verknüpfungsfiltern nicht verwiesen werden:
    • varchar(max) and nvarchar(max)
    • varbinary(max)
    • text and ntext
    • image
    • XML
    • UDT
  • Bei der Transaktionsreplikation können Sie eine indizierte Sicht als Sicht oder als Tabelle replizieren. Wenn Sie die Sicht als Tabelle replizieren, können Sie keine Spalten aus der Tabelle filtern.

Siehe auch

Konzepte

Veröffentlichen von Daten und Datenbankobjekten

Hilfe und Informationen

Informationsquellen für SQL Server 2005