Sync Server Verwaltung


Horizontale Filter auf der Ebene von Subskriptionen, Gruppen oder Benutzern

Horizontale Filter auf der Ebene von Subskriptionen, Gruppen oder Benutzern verwenden eine SQL-Klausel, um Daten von der Quellendatenquelle auszuwählen. Der Inhalt der SQL-Klausel wird über die Seite "Zeilen" im Notizbuch Erweiterte Subskription - Definition für DB2 DataPropagator-Subskriptionen bzw. die Seite "Zeilen" im Notizbuch Erweiterte Replikationssubskription für JDBC-Subskriptionen gesteuert. Gehen Sie wie folgt vor, um eines dieser Notizbücher zu öffnen:

  1. Erstellen oder editieren Sie eine JDBC- oder DataPropagator-Subskription.
  2. Klicken Sie auf Subskription definieren. Das Fenster "Replikationssubskription definieren" wird geöffnet.
  3. Klicken Sie auf Erweitert. Bei DB2 DataPropagator-Subskriptionen wird das Notizbuch Erweiterte Subskription geöffnet. Bei JDBC-Subskriptionen wird das Notizbuch Erweiterte Replikationssubskription geöffnet.

Definieren einfacher horizontaler Filter

Gehen Sie wie folgt vor, um Daten auf der Subskriptionsebene zu filtern

Geben Sie eine SQL-Klausel auf der Seite "Zeilen" des Notizbuchs Subskription in das Feld Alle erforderlichen Zeilen ein. Die gesamte SQL-Klausel muss in einer Zeile und im folgenden Format eingegeben werden:

Stadt='meinWert'

Geben Sie am Anfang der SQL-Klausel nicht WHERE ein. WHERE wird der in das Feld eingegebenen Klausel automatisch hinzugefügt. Die folgende Klausel z. B. synchronisiert nur die Spalten, die den Wert "10573 Berlin" in der Spalte "Stadt" haben:

Stadt='10573 Berlin'

Gehen Sie wie folgt vor, um Daten auf der Gruppenebene zu filtern

  1. Geben Sie auf der Seite "Zeilen" des Subskriptionsnotizbuchs in das Feld Zeilenuntermenge für einzelne Benutzer eine SQL-Klausel ein. Geben Sie am Anfang der SQL-Klausel nicht WHERE ein. WHERE wird der in das Feld eingegebenen Klausel automatisch hinzugefügt. Fügen Sie anstelle eines Wertes einen Parameter in die SQL-Klausel ein. Geben Sie z. B. Folgendes ein, um die Tabelle MPPerson auf der Grundlage des Werts des Parameters :fcity. für die Spalte "Stadt" zu filtern:
    Stadt=':fcity.'
    

    Dabei ist :fcity. ein Parameter für den Spaltenwert.

  2. Öffnen Sie für die Gruppe, die Sie filtern möchten, das Notizbuch Gruppe erstellen oder Gruppe editieren. Die Subskription, die Sie mit dem Filterparameter erstellt haben, muss der Gruppe zugeordnet werden, die Sie editieren.
  3. Klicken Sie auf der Seite "Datenfilter" des Gruppennotizbuchs auf Hinzufügen.
  4. Geben Sie :fcity. in das Feld Parametername ein.

    Es wird empfohlen, dass Sie Ihren Parameternamen eindeutige Bezeichnungen geben, indem Sie zusätzlichen Text hinzufügen. Beginnen Sie z. B. den Parameternamen mit einem Doppelpunkt (:), und beenden Sie ihn mit einem Punkt (.).

  5. Geben Sie einen Standardwert in das Feld Standardwert ein. Beispiel:
    10573 Berlin
    

    Sie können auch einen Sonderwert verwenden. Mit dem Wert $USERNAME können Sie eine Sync Server-Benutzer-ID als Wert dieses Parameters einfügen. Dadurch können Sie Zeilen, die von bestimmten Benutzern erstellt wurden, mit der entsprechenden Sync Server-Benutzer-ID in ein bestimmtes Feld in die Datenquelle einfügen.

  6. Klicken Sie auf OK.

Jeder Benutzer, der dieser Gruppe zugeordnet ist, empfängt nur die Zeilen aus der Tabelle MPPerson, die den Wert 10573 Berlin in der Spalte "Stadt" haben. Andere Gruppen empfangen abhängig von den konfigurierten Filtern die gesamte Tabelle MPPerson oder eine bestimmte Untermenge der Tabelle MPPerson.

Gehen Sie wie folgt vor, um Daten auf der Benutzerebene zu filtern

  1. Geben Sie auf der Seite "Zeilen" in das Feld Zeilenuntermenge für einzelne Benutzer eine SQL-Klausel ein. Geben Sie am Anfang der SQL-Klausel nicht WHERE ein. WHERE wird der in das Feld eingegebenen Klausel automatisch hinzugefügt. Fügen Sie anstelle eines Wertes einen Parameter in die SQL-Klausel ein. Geben Sie z. B. Folgendes ein, um die Tabelle MPPerson auf der Grundlage des Werts des Parameters :fcity. für die Spalte "Stadt" und des Werts des Parameters :fid. für die Spalte "ID" zu filtern:
    city=':fcity.' und id=':fid.'
    

    Dabei ist :fcity. ein Parameter für den Wert in der Spalte "Stadt" und :fid. ein Parameter für den Wert in der Spalte "ID".

  2. Vervollständigen und schließen Sie das Notizbuch Subskription erstellen.
  3. Öffnen Sie für die Benutzergruppe, die Sie filtern wollen, das Notizbuch Gruppe erstellen oder Gruppe editieren. Die Subskription, die Sie mit den Filterparametern erstellt haben, muss der Gruppe zugeordnet werden, die Sie editieren.
  4. Klicken Sie auf der Seite "Datenfilter" des Gruppennotizbuchs auf Hinzufügen.
  5. Geben Sie :fcity. in das Feld Parametername ein.
  6. Geben Sie einen Standardwert in das Feld Standardwert ein. Beispiel:
    10573 Berlin
    
  7. Klicken Sie auf OK.
  8. Klicken Sie noch einmal auf Hinzufügen, um den zweiten Parameter hinzuzufügen.
  9. Geben Sie :fid. in das Feld Parametername ein.
  10. Klicken Sie auf OK.
  11. Vervollständigen und schließen Sie das Gruppennotizbuch.
  12. Öffnen Sie für den Benutzer, den Sie filtern wollen, das Notizbuch Benutzer erstellen oder Benutzer editieren. Der Benutzer muss der Gruppe mit den Filterparametern hinzugefügt werden.
  13. Wählen Sie auf der Seite "Datenfilter" des Gruppennotizbuchs den Parameter :fid. aus, und klicken Sie auf Ändern.
  14. Geben Sie einen Wert in das Feld Benutzerüberschreibung ein. Geben Sie z. B. Folgendes ein, um den Wert von :fid. für diesen Benutzer zu überschreiben und auf 900000401 festzulegen:
    900000401
    
  15. Klicken Sie auf OK.

Der Benutzer empfängt nur Datensätze, die den Wert 10573 Berlin in der Spalte "Stadt" und 900000401 in der Spalte "ID" haben. In der Tabelle MPPerson gibt es einen Datensatz mit diesem Wert. Andere Benutzer, die derselben Gruppe zugeordnet sind, empfangen nur Zeilen aus der Tabelle MPPerson, die den Wert 10573 Berlin in der Spalte "Stadt" und den Wert in der Spalte "Benutzer" haben, der durch ihre Datenfilter festgelegt wurde. Andere Gruppen empfangen abhängig von der Konfiguration der Filter die gesamte Tabelle MPPerson oder eine bestimmte Untermenge der Tabelle MPPerson.

Definieren von komplexen horizontalen Filtern auf Gruppen- oder Benutzerebene

In einigen Situationen der Datenbank- und Benutzerverwaltung ist es erforderlich, im Feld Zeilenuntermenge für einzelne Benutzer eine komplexe SQL-WHERE-Klausel zu definieren, um die Zeilen, die eine Gruppe oder ein Benutzer anzeigen kann, einzuschränken. Bei der Definition der Filter können Sie auf eine Tabelle in der Spiegeldatenbank zurückgreifen, Parameter für die Gruppe oder den Benutzer verwenden oder auch eine Kombination dieser beiden Methoden anwenden. Die grundlegenden Schritte zum Erstellen eines einfachen horizontalen Filters sind in Definieren einfacher horizontaler Filter erläutert.

DB2 Everyplace Sync Server enthält eine Untermenge für die standardmäßige SQL-WHERE-Implementierung, die für die Filter verwendet werden kann. Informationen zur Syntax dieser Untermenge finden Sie in Syntax für Filter.

Im folgenden Beispiel wird dargestellt, wie Sie auf andere Tabellen in der Spiegeldatenbank zurückgreifen und einen Parameter für das horizontale Filtern verwenden können.

Angenommen, Sie verwalten zwei Tabellen mit den Namen "PLZTab" und "Unternehmen", die sich beide in der Spiegeldatenbank befinden. "PLZTab" enthält die Postleitzahlen einiger Städte (siehe Tabelle 4), während die Tabelle "Unternehmen" einige Unternehmen und deren Postleitzahlen enthält (siehe Tabelle 5). Nun sollen Benutzer in Stuttgart nur die Unternehmen in der eigenen Stadt anzeigen können. Sie haben eine Gruppe erstellt und ihr diese Benutzer zugeordnet.


Tabelle 4. Tabelle "PLZTab"

Stadt Postleitzahl
Stuttgart 70563
Stuttgart 70565
Berlin 10574

Tabelle 5. Tabelle "Unternehmen"

Unternehmen Postleitzahl
IBM 70565
Unternehmen 1 70563
Unternehmen 2 82008
Unternehmen 3 91052

Nun geben Sie in das Feld Zeilenuntermenge für einzelne Benutzer auf der Seite "Zeilen" folgende Klausel ein:

(postleitzahl) IN (SELECT postleitzahl FROM PLZTab WHERE Stadt = ':fcity.')

Dabei ist :fcity. ein Parameter für den Wert der Spalte "Stadt", der für die Gruppe auf Stuttgart gesetzt wurde.

Anschließend vervollständigen und schließen Sie das Notizbuch Subskription erstellen. Nach der Synchronisation sehen die Benutzer folglich in der Tabelle "Unternehmen" auf ihren Einheiten nur die folgenden Zeilen:

Tabelle 6. Zeilen, die Benutzer auf ihren Einheiten sehen

Unternehmen Postleitzahl
IBM 70565
Unternehmen 1 70563

Syntax für Filter

Beim Erstellen einer Replikationssubskription in Mobile Devices Administration Center (MDAC) können Sie zum Filtern von Daten für Einzelbenutzer eine Klausel verwenden, die der WHERE-Klausel in SQL sehr ähnlich ist. Geben Sie die Klausel in das Feld Zeilenuntermenge für einzelne Benutzer im Notizbuch Erweiterte Replikationssubskription für DataPropagator-Subskriptionen bzw. im Notizbuch Erweiterte Replikationssubskription für JDBC-Subskriptionen ein.

Wenn Sie das unten dargestellte Syntaxdiagramm verwenden, müssen Sie u. a. folgende Einschränkungen beachten:

Syntax

Filter
 
   .-Logischer Operator AND oder OR-.
   V                                |
>>---| dimension |------------------+--------------------------><
 
dimension
 
|--+-spaltenname--IN--| unterauswahl |-----------+--------------|
   |    .-,-----------.                          |
   |    V             |                          |
   +-(----spaltenname-+--)--IN--| unterauswahl |-+
   '-| einfachermonadischerfilter |--------------'
 
unterauswahl
 
|--(--| SELECT-klausel |--| FROM-klausel |---------------------->
 
>--+-------------------+--)-------------------------------------|
   '-| WHERE-klausel |-'
 
SELECT-klausel
 
           .-,-----------.
           V             |
|--SELECT----spaltenname-+--------------------------------------|
 
FROM-klausel
 
|--FROM--| tabellenverweis |------------------------------------|
 
WHERE-klausel
 
|--WHERE--| einfacherfilter |-----------------------------------|
 
tabellenverweis
 
|--+---------------+--tabellenname------------------------------|
   '-schemaname--.-'
 
einfacherfilter
 
   .-Logischer Operator AND oder OR-.
   V                                |
|----| einfachermonadischerfilter |-+---------------------------|
 
einfachermonadischerfilter
 
|--+-NOT--| einfachermonadischerfilter |-+----------------------|
   +-(--| einfacherfilter |--)-----------+
   '-| einfachesvergleichselement |------'
 
einfachesvergleichselement
 
|--| ausdruck |--| einfachesvergleichselementende |-------------|
 
ausdruck
 
|--+-| funktion |--+--------------------------------------------|
   +-spaltenname---+
   '-| konstante |-'
 
funktion
 
|--+---------------+--funktionsname--(--+------------------+---->
   '-schemaname--.-'                    | .-,------------. |
                                        | V              | |
                                        '---| ausdruck |-+-'
 
>--)------------------------------------------------------------|
 
einfachesvergleichselementende
 
|--+-+-| operator |-+--| ausdruck |--------------------+--------|
   | '-IN-----------'                                  |
   +-IS--+-----+--NULL---------------------------------+
   |     '-NOT-'                                       |
   '-+-----+--BETWEEN--| ausdruck |--AND--| ausdruck |-'
     '-NOT-'
 
operator
 
|--+-=----+-----------------------------------------------------|
   +-<>---+
   +->----+
   +-<----+
   +->=---+
   +-<=---+
   +-!=---+
   +-!<---+
   +-!>---+
   '-LIKE-'
 
 

Beschreibung

Operatoren
Sie können die folgenden Operatoren verwenden:

=
Gleich.

<>
Ungleich.

<
Kleiner als.

>
Größer als.

<=
Kleiner gleich.

!>
Kleiner gleich.

>=
Größer gleich.

!<
Größer gleich.

LIKE
Stimmt mit einer Zeichenfolge überein. Verwenden Sie den Unterstrich eines Einzelbytezeichensatzes (SBCS), um auf ein SBCS-Zeichen zu verweisen. Verwenden Sie den Unterstrich eines Doppelbytezeichensatzes (DBCS), um auf ein DBCS-Zeichen zu verweisen. Die Bedingung WHERE PART_NUMBER LIKE '_0' (hier ist der Unterstrich ein Zeichen im SBCS) gibt beispielsweise alle zweistelligen Teilenummern zurück, die auf 0 enden (z. B. 20, 30 und 40). Verwenden Sie ein Prozentzeichen (entweder aus SBCS oder DBCS), um auf eine Zeichenfolge bestehend aus null oder mehr SBCS- oder DBCS-Zeichen zu verweisen. Die Bedingung WHERE DEPT_NUMBER LIKE '2%' gibt beispielsweise alle Abteilungsnummern zurück, die mit der Zahl 2 beginnen (z. B. 20, 27, oder 234).


[ Seitenanfang | Vorherige Seite | Nächste Seite | Inhaltsverzeichnis | Index ]