Dienstprogramm Merge

Sie können mindestens zwei pureQueryXML-Dateien zusammenführen, die SQL-Anweisungen enthalten, die aus einer Anwendung erfasst wurden und für eine einzelne Datenquelle ausgeführt werden. Die XML-Schemaprüfung kann für die pureQueryXML-Eingabedateien ausgeführt werden und nicht verwendete SQL-Anweisungen können aus der Ausgabemischdatei eliminiert werden.

Dieses Thema ist in die folgenden Abschnitte unterteilt:

Übersicht

Es gibt die folgenden beiden Möglichkeiten zum Zusammenführen von pureQueryXML-Dateien.

Verwenden Sie eine pureQueryXML-Datei als Basisdatei, damit die aus der Zusammenführung entstandene Datei die Anweisungsgruppen dieser Datei beibehält. Die SQL-Anweisungen aus anderen Dateien kommen in eine unbenannte Anweisungsgruppe, die pureQuery am Ende der Ergebnisdatei erstellt.
Angenommen, Sie erfassen SQL-Anweisungen aus einer Anwendung in einer Datei mit dem Namen capture.pdqxml. Sie ändern diese Datei, um die SQL-Anweisungen in der Datei entweder manuell oder mit dem Dienstprogramm Configure in Anweisungsgruppen anzuordnen. Die Datei capture.pdqxml wird zur Basisdatei, wenn Sie das Dienstprogramm Merge verwenden.
Empfehlung: IBM® empfiehlt dringend, pureQueryXML-Dateien nur über die Workbench zu bearbeiten. Wenn Sie eine pureQueryXML-Datei außerhalb der Workbench bearbeiten, besteht das Risiko, dass die Datei unbrauchbar wird.

Wenn Sie eine pureQueryXML-Datei außerhalb der Workbench bearbeiten müssen, setzen Sie im Tag <statementSet> der Anweisungsgruppe, in der die Bearbeitung vorgenommen wird, den Wert des Attributs configureStatus auf REQUIRED, wie nachfolgend gezeigt: configureStatus="REQUIRED" Führen Sie danach das Dienstprogramm Configure für die Datei aus.

Eine Anweisungsgruppe in einer pureQueryXML-Datei ist eine Gruppe von Anweisungen, die die Basis für eines von vier DB2-Paketen bilden, je nach dem, ob Sie ein Paket für eine Isolationsstufe oder ein Paket für jede der vier Isolationsstufen haben wollen.

Sie führen das Dienstprogramm Configure für capture.pdqxml aus, sodass das Dienstprogramm Configure die Anweisungsgruppen benennen kann. Anschließend verteilen Sie diese Datei an andere Mitglieder Ihres Teams, damit diese Anweisungen aus anderen logischen Pfaden in derselben Anwendung inkrementell erfassen können. Jedes Mitglied verwendet seine Kopie als Eingabedatei und gibt die Datei als Wert für die Eigenschaft pureQueryXml an. Jedes Mitglied setzt den Wert der Eigenschaft outputPureQueryXml auf den Namen der Datei, die die weiteren von ihnen erfassten SQL-Anweisungen aufnehmen soll. Sie erhalten die Ausgabedateien dieser Teammitglieder. Für diese Dateien führen Sie das Dienstprogramm Merge aus, um eine neue Datei zu erstellen, die die SQL-Anweisungen aus den Dateien enthält, die zusammengeführt wurden. Wenn Sie die neue Datei öffnen, sehen Sie, dass sie immer noch die Anweisungsgruppen aus der Basisdatei enthält. Die SQL-Anweisungen aus den Ausgabedateien, die Sie von Ihren Teammitgliedern erhalten haben, befinden sich in einer neuen nicht benannten Anweisungsgruppe, die sich am Ende der neuen Datei befindet.

Sie können mindestens zwei pureQueryXML-Dateien zusammenführen, ohne eine davon als Basisdatei anzugeben.

In der aus der Zusammenführung entstandenen Ergebnisdatei kombiniert das Dienstprogramm Merge die SQL-Anweisungen aller pureQueryXML-Dateien in einer einzigen unbenannten Anweisungsgruppe.

Anmerkung: Wird die Option -baseFile nicht angegeben, wird die erste Datei in der Liste mit den pureQueryXML-Dateien als Basisdatei verwendet. Die Datei darf keine pureQueryXML-Datei sein, die zum Erfassen von weiteren SQL-Anweisungen erstellt wurde, wenn die Eigenschaften outputPureQueryXml und pureQueryXML angegeben wurden. Wenn beide Eigenschaften angegeben werden, enthält outputPureQueryXml erfasste SQL-Anweisungen, die in der über die Eigenschaft pureQueryXML angegebenen Datei nicht enthalten sind.

Hinweise zum Zusammenführungsprozess

Die folgende Liste enthält Hinweise zum Zusammenführungsprozess:
  • Beim Zusammenführen von Dateien, können die Dateien dieselbe SQL-Anweisung mit unterschiedlichen Attributen enthalten. Die folgende Liste beschreibt, wie das Dienstprogramm Merge identische SQL-Anweisungen mit unterschiedlichen Attributen handhabt. In den Beschreibungen wird vorausgesetzt, dass STMT_A und STMT_B identische SQL-Anweisungen sind, und dass sich STMT_A in der Basisdatei befindet und STMT_B sich in einer Datei befindet, die mit der Basisdatei zusammengeführt wurde:
    • Ist das Attribut parameterType für STMT_A auf SINGLE_ROW_PARAMETERS gesetzt und das Attribut für STMT_B ist auf MULTI_ROW_PARAMETERS gesetzt, wird das Attribut für STMT_A auf MULTI_ROW_PARAMETERS gesetzt.
    • Ist das Attribut allowStaticRowsetCursors für STMT_A auf 'false' gesetzt und das Attribut für STMT_B ist auf 'true' gesetzt, wird das Attribut für STMT_A auf 'true' gesetzt.
    • Ist das Attribut isBindable für STMT_A auf 'true' gesetzt und das Attribut für STMT_B ist auf 'false' gesetzt, wird das Attribut für STMT_A auf 'false' gesetzt.
    • Wurde der benutzerdefinierte Cursor für STMT_A nicht definiert und für STMT_B definiert, wird der Cursorname in STMT_A auf den in STMT_B definierten Namen gesetzt.

    Wenn die Attributwerte für STMT_A und STMT_B umgekehrt vorliegen, wird der Attributwert für STMT_A nicht verändert und es wird eine Nachricht in die Protokolldatei geschrieben.

    Wenn überdies zwei Anweisungen in verschiedenen pureQueryXML-Dateien mit Ausnahme ihrer Stack-Trace-Einträge völlig identisch sind, werden die unterschiedlichen Stack-Trace-Einträge für die resultierende einzelne Anweisung in der Datei, die aus der Zusammenführung hervorgeht, kombiniert.

  • Wenn die Datei, die aus dem der Zusammenführung entsteht, nicht benannte Anweisungsgruppen enthält, müssen Sie das Dienstprogramm Configure für diese Datei ausführen, bevor Sie das Dienstprogramm StaticBinder ausführen können.
  • IBM empfiehlt Ihnen dringend, nach dem Zusammenführen von Dateien, das Dienstprogramm Configure auszuführen, um sicherzustellen, dass die Ergebnisse der Zusammenführung mit dem Dienstprogramm StaticBinder verwendet werden können.

Syntax des Befehls Merge

Syntaxdiagramm lesenSyntaxdiagramm überspringen
    (1)                                                        
>>-------java com.ibm.pdq.tools.Merge--+-------------------+---->
                                       '- -baseFile--Datei-'   

                          .-------.      
                          V       |      
>--+- -inputPureQueryXml----Datei-+--+-------------------------->
   '- -inputPureQueryXmlGroup--Datei-'   

>-- -outputPureQueryXml--Datei--+-----------------------+------->
                                |                   (2) |   
                                '-| Traceoptionen |-----'   

>--+--------------------------+--------------------------------->
   |                .-FALSE-. |   
   '- -showDetails--+-TRUE--+-'   

>--+--------------------------------------+--------------------->
   '- -removeSQLInactiveForDays----Tage---'   

>--+--------------------------+--+--------+--------------------><
   |                .-FALSE-. |  '- -help-'   
   '- -validateXml--+-TRUE--+-'               

Anmerkungen:
  1. Sie können die Optionen in beliebiger Reihenfolge angeben.
  2. Informationen zur Syntax finden Sie in der Beschreibung dieser Optionen.

Eine Beschreibung der im Diagramm verwendeten Konventionen finden Sie in Syntaxdiagramme lesen.

Beschreibungen der Optionen

-baseFile Datei
Gibt die pureQuery-Datei an, die die Anweisungsgruppen enthält, die in der Datei, die das Dienstprogramm Merge erstellt, beibehalten werden sollen (falls Anweisungsgruppen beibehalten bleiben sollen). Sie müssen das Dienstprogramm Configure für diese Datei ausführen, bevor das Dienstprogramm Merge für sie ausgeführt wird.

Wenn eine SQL-Anweisung in einer der Dateien, die Sie zusammenführen, positionierte Aktualisierungen ausführt und sich die Anweisung, die den Cursor für diese positionierten Aktualisierungen deklariert, nicht in derselben Datei befindet, sucht das Dienstprogramm Merge nach der Deklaration des Cursors in den Dateien, die zusammengeführt werden.

Beispiel: Sie haben SQL-Anweisungen aus einer Cluster-Web-Anwendung erfasst und die drei pureQueryXML-Dateien A, B und C generiert. Für die Zusammenführung verwenden Sie Datei C als Basisdatei. Datei A enthält SQL-Anweisung S1, die eine positionierte Aktualisierung ausführt. Datei A enthält jedoch nicht SQL-Anweisung S2, die den Cursor deklariert, den S1 verwendet. Daher sucht das Dienstprogramm Merge in den Dateien B und C nach einer SQL-Anweisung, die diesen Cursor deklariert. Ist diese Anweisung in den Dateien B und C nicht vorhanden, führt das Dienstprogramm Merge die positionierte Aktualisierungsanweisung S1 nicht zusammen und protokolliert eine Warnung.

Wenn Sie keine Basisdatei angeben, kombiniert das Dienstprogramm Merge in der Datei, die aus der Zusammenführung hervorgeht, die SQL-Anweisungen aus allen pureQueryXML-Dateien zu einer einzelnen nicht benannten Anweisungsgruppe.

Anmerkung: Wenn Sie keine Basisdatei angeben, wird die erste aufgelistete pureQueryXML-Eingabedatei als Standardbasisdatei verwendet. Die Datei darf keine pureQueryXML-Datei sein, die zum Erfassen von weiteren SQL-Anweisungen erstellt wurde, wenn die Eigenschaften outputPureQueryXml und pureQueryXML angegeben wurden. Wenn beide Eigenschaften angegeben werden, enthält outputPureQueryXml erfasste SQL-Anweisungen, die in der über die Eigenschaft pureQueryXML angegebenen Datei nicht enthalten sind.
-inputPureQueryXml Datei
Gibt die pureQueryXML-Dateien an, die zusammengeführt werden sollen. Die Namen werden durch Leerzeichen voneinander getrennt. Sie können mehrere absolute oder relative Pfade angeben. Wenn Sie einen relativen Pfad angeben, muss sich der Pfad auf das Verzeichnis beziehen, in dem Sie den Befehl ausführen.
Wenn der Pfad oder der Name einer Datei ein Leerzeichen enthält, muss der gesamte Eintrag für die Datei in Anführungszeichen eingeschlossen werden.
-inputPureQueryXmlGroup Datei
Gibt die pureQueryXML-Dateien an, die zusammengeführt werden sollen. Die Datei muss die Erweiterung .grp haben. Sie können in jeder Zeile der Datei einen Dateinamen mit einem absoluten oder einem relativen Pfad angeben. Wenn Sie einen relativen Pfad angeben, muss sich der Pfad auf das Verzeichnis beziehen, in dem Sie den Befehl ausführen.
Wenn der Pfad oder der Name einer Datei ein Leerzeichen enthält, muss nicht der gesamte Eintrag für die Datei in Anführungszeichen eingeschlossen werden.
-outputPureQueryXml Datei
Gibt den Namen der neuen Datei an, die das Dienstprogramm Merge aus den pureQueryXML-Dateien, die Sie in den vorangegangenen Optionen angeben, erstellen soll. Sie können einen absoluten oder einen relativen Pfad angeben. Wenn Sie einen relativen Pfad angeben, muss sich der Pfad auf das Verzeichnis beziehen, in dem Sie den Befehl ausführen.
-removeSQLInactiveForDays Tage
Gibt die Anzahl Tage an, nach denen eine nicht verwendete SQL-Anweisung auf der Basis der Zeitmarke der Anweisung entfernt wird. Wenn für die Variable Tage 0 angegeben ist, werden alle SQL-Anweisungen in die Ausgabedatei geschrieben. Standardmäßig werden alle SQL-Anweisungen in die Ausgabedatei geschrieben. Handelt es sich bei der Variablen Tage um eine positive Zahl, schreibt das Dienstprogramm Merge SQL-Anweisungen nicht in die Ausgabedatei, wenn die Zeitmarke der letzten Verwendung der Anweisung der Anzahl Tage vor dem aktuellen Datum oder früher entspricht. Ist für die Variable Tage 1 angegeben, werden die SQL-Anweisungen nicht geschrieben, wenn die Zeitmarke den vorherigen Tag oder einen früheren Tag angibt.

Ist für die Variable Tage beispielsweise 5 gesetzt und 25.11. (25. November) ist das aktuelle Datum, werden SQL-Anweisungen mit der Zeitmarke 20.11. (20. November) oder einer älteren Zeitmarke nicht geschrieben.

Hat die SQL-Anweisung keine Zeitmarke, wird die SQL-Anweisung mit aktuellen Zeitmarkeninformationen in die Ausgabedatei geschrieben. Wenn z. B. eine pureQueryXML-Datei einer früheren Version die Eingabedatei ist, hat eine SQL-Anweisung keine Zeitmarke. Für frühere Versionen einer pureQueryXML-Datei, Version 3 oder älter, wird die Option ignoriert, alle SQL-Anweisungen werden mit der aktuellen Zeitmarke in die Ausgabedatei geschrieben und es wird eine Nachricht angezeigt.

Ist für die Anweisungsgruppe für configureStatus der Wert FINAL angegeben, werden Anweisungen, die die Bedingungen für inaktive Tage erfüllen, in die pureQueryXML-Ausgabedatei geschrieben. Das Dienstprogramm Merge schreibt eine Nachricht in die Protokolldatei und gibt zusammen mit der Anweisung den Grund für die Beibehaltung der Anweisung an.

Für die Nachrichten, die nicht in die pureQueryXML-Ausgabedatei geschrieben werden, wird eine Nachricht in die Protokolldatei geschrieben. Ist die Option showDetails auf true gesetzt, werden alle Anweisungen angezeigt, die nicht in die Ausgabedatei geschrieben wurden.

Anmerkung: SQL-Anweisungen werden nicht in die pureQueryXml-Ausgabedatei geschrieben, die Anweisungen werden jedoch aus den DB2-Pakten entfernt, die zuvor aus der Anweisungsgruppe gebunden wurden. Bei zukünftigen Bindeoperationen, die die Anweisungsgruppe verwenden, werden die entfernten SQL-Anweisungen nicht gebunden, es kann jedoch ein leerer Abschnitt im Paket entstehen. Eine Methode, leere Abschnitte zu entfernen besteht darin, das Dienstprogramm Configure mit der Option -cleanConfigure auf die pureQueryXML-Datei anzuwenden. Anschließend können Sie das Dienstprogramm StaticBinder verwenden, um Pakete aus der pureQueryXML-Datei zu erstellen und zu binden.
-showDetails TRUE|FALSE
Gibt an, ob das Dienstprogramm Merge eine Zusammenfassung seiner Aktivität anzeigt.
Der Standardwert ist FALSE.
Traceoptionen
Sie können die Datei, in der Nachrichten protokolliert werden sollen, und die zu protokollierende Informationsebene angeben.
Syntaxdiagramm lesenSyntaxdiagramm überspringen
>>-+------------------------+--+---------------------------+---><
   '- -traceFile--Dateiname-'  |               .-OFF-----. |   
                               '- -traceLevel--+-ALL-----+-'   
                                               +-SEVERE--+     
                                               +-WARNING-+     
                                               +-INFO----+     
                                               +-CONFIG--+     
                                               +-FINE----+     
                                               +-FINER---+     
                                               '-FINEST--'     

-traceFile Dateiname
Gibt den absoluten oder relativen Pfad und den Namen der Datei an, die zum Protokollieren von Informationen zur Operation verwendet werden soll.
Falls die Datei bereits vorhanden ist, hängt pureQuery neue Nachrichten an den vorhandenen Inhalt der Datei an. Standardmäßig werden die Einträge in 'System.err' geschrieben.
-traceLevel OFF|SEVERE|WARNING|INFO|CONFIG|FINE|FINER|FINEST|ALL
Gibt den zu protokollierenden Informationstyp an. Die Standardstufe ist OFF. Wenn Sie keine Datei angeben, in die die Protokolleinträge geschrieben werden sollen, und Sie diese Option auf einen anderen Wert als OFF setzen, werden die Einträge in 'System.err' geschrieben.
-validateXml TRUE|FALSE
Gibt an, ob für die pureQueryXML-Eingabedateien eine XML-Schemaprüfung unter Verwendung des pureQueryXML-Schemas ausgeführt wird. Bei Angabe von 'TRUE' wird die Prüfung ausgeführt. Bei Angabe von 'FALSE' oder wenn die Option nicht angegeben ist, wird keine Prüfung ausgeführt. Der Standardwert ist FALSE.

Schlägt die XML-Schemaprüfung einer pureQueryXML-Datei fehl, schlägt die Zusammenführungsoperation fehl. Der Dateiname und der Fehler, der das Fehlschlagen der Schemaprüfung verursacht hat, werden dokumentiert. Nachfolgende Dateien werden nicht geprüft. Der erste Gültigkeitsfehler und das Fehlschlagen der Zusammenführung werden dokumentiert.

Es werden nur pureQueryXML-Dateien des aktuellen Release oder der vorangegangenen Version (Version 4 oder 3) geprüft. Wird eine frühere pureQueryXML-Version erkannt, wird für diese Datei keine Prüfung ausgeführt.

-help
Zeigt Übersichtsdaten zur Verwendung an.

Feedback