GeneratePureQueryXml (Dienstprogramm)

Das Dienstprogramm GeneratePureQueryXml generiert auf der Basis der SQL-Informationen aus der von Ihnen angegebenen Eingabe eine pureQueryXML-Datei. Die Quelle der Informationen kann eine SQL-Scriptdatei sein, die Anweisungen und Cursorattributinformationen enthält, eine InfoSphere Optim Query Workload Tuner XML-Datei oder der dynamische Cache einer Datenbank.

Das Dienstprogramm GeneratePureQueryXml liest die SQL-Anweisungen und Informationen zu den Anweisungen und erstellt eine pureQueryXML-Datei. Verwenden Sie nach dem Erstellen der pureQueryXML-Datei das Konfigurationsdienstprogramm, um die Datei für die Verwendung mit pureQuery Runtime vorzubereiten. Nachdem Sie die pureQueryXML-Datei konfiguriert haben, verwenden Sie das Dienstprogramm StaticBinder, um DB2-Pakete zu erstellen und die binden, die die SQL-Anweisungen in der konfigurierten pureQueryXML-Datei enthalten.

Syntax des Befehls

Syntaxdiagramm lesenSyntaxdiagramm überspringen
    (1)                                                      
>>-------java--java com.ibm.pdq.tools.GeneratePureQueryXml------>

>-- -username--Benutzer-ID-- -password--Kennwort-- -url--JDBC-URL-->

>--+---------------------------------------------+-------------->
   |               .-com.ibm.db2.jcc.DB2Driver-. |   
   '- -driverName--+-JDBC-Treiber--------------+-'   

>-- -pureQueryXml--Dateiname------------------------------------>

>-- -inputSql--+-Dateiname-----------------+-------------------->
               |  (2)                      |   
               '-------| Anweisungscache |-'   

>--+-------------------------------------------+---------------->
   |                  (3).- - - -------------. |   
   '- -commentStart------+-Kommentaranzeiger-+-'   

>--+---------------------------------------+-------------------->
   |                           .-NOT_SET-. |   
   '- -sqlLiteralSubstitution--+-DISABLE-+-'   
                               '-ENABLE--'     

>--+-------------------------------------+---------------------->
   |                       .-;---------. |   
   '- -statementDelimiter -+-Begrenzer-+-'   

>--+------------------------------------------------------+----->
   |                         .-HOLD_CURSORS_OVER_COMMIT-. |   
   '- -resultSetHoldability -+-CLOSE_CURSORS_AT_COMMIT--+-'   

>--+----------------------------------------------+------------->
   |                         .-CONCUR_READ_ONLY-. |   
   '- -resultSetConcurrency--+-CONCUR_UPDATABLE-+-'   

>--+--------------------------------------------+--------------->
   |                  .-TYPE_FORWARD_ONLY-----. |   
   '- -resultSetType--+-TYPE_SCROLL_SENSITIVE-+-'   
                      '-TYPE_SCROLL_SENSITIVE-'     

>--+-----------------------+--+--------+-----------------------><
   |                   (4) |  '- -help-'   
   '-| Traceoptionen |-----'               

Anweisungscache

|--DYNAMIC_STATEMENT_CACHE--+-------------------------------------------------------------------------+--|
                            |                     .-,--------------------------------------------.    |   
                            |                     V  (5)                                         |    |   
                            '- -filterCacheBy--"--------+---clientProgramId-- -Programm-ID-----+-+--"-'   
                                                        +---clientUser-- -Client-Benutzer-ID---+          
                                                        +---currentSqlId-- -Berechtigungs-ID---+          
                                                        +---currentSchema-- -Schemaname--------+          
                                                        '---cachedAfter-- -Cachezeit-----------'          

Anmerkungen:
  1. Sie können die Optionen in beliebiger Reihenfolge angeben.
  2. SQL-Anweisungen können aus dem dynamischen Anweisungscache nur für DB2 für z/OS-Datenbanken abgerufen werden.
  3. Der Standardwert sind zwei Gedankenstriche (--).
  4. Informationen zur Syntax finden Sie in der Beschreibung dieser Optionen.
  5. Jeder Filter kann mindestens einmal angegeben werden. Die Filter können in beliebiger Reihenfolge angegeben werden.

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

Beschreibung der Optionen

-username Benutzer-ID
Die Benutzer-ID gibt die Benutzer-ID an, die für die Authentifizierung mit der Datenbank verwendet wird.
-password Kennwort
Gibt das Kennwort an, das für die Authentifizierung mit der Datenbank verwendet werden soll.
-url JDBC-URL
Gibt die JDBC-URL an, die zum Herstellen einer Verbindung zur Datenbank verwendet werden soll.
-driverName JDBC-Treiber
Gibt den vollständig qualifizierten Namen des JDBC-Treibers an, der zum Herstellen einer Verbindung zur Datenbank verwendet werden soll. Der Standardwert ist com.ibm.db2.jcc.DB2Driver, der Treiber für IBM® Data Server Driver für JDBC und SQLJ.
-pureQueryXml Datei
Gibt den absoluten oder relativen Pfad zur pureQueryXML-Ausgabedatei an.
-inputSql Datei | DYNAMIC_STATEMENT_CACHE Cachefilter
Gibt die Quelle der SQL-Informationen an, die zum Erstellen der pureQueryXML-Datei verwendet wird.

Informationen zum Format der SQL-Scriptdatei finden Sie in Format der vom Dienstprogramm GeneratePureQueryXml verwendeten SQL-Scriptdatei.

Datei
Gibt den absoluten oder relativen Pfad zu einer SQL-Scriptdatei mit der Erweiterung .sql oder zu einer XML-Datei mit der Erweiterung .xml an.
Wenn eine XML-Datei angegeben wird, muss die Datei eine gültige InfoSphere Optim Query Workload Tuner-Datei sein. Wenn die XML-Datei nicht gültig ist, wird ein Fehler zurückgegeben. Informationen zum Exportieren einer Query Workload Tuner-Datei finden Sie in der Dokumentation zu InfoSphere Optim Query Workload Tuner. Beim Erfassen von SQL-Anweisungen unterstützt InfoSphere Optim Query Workload Tuner die folgenden Funktionen:
  • Bei DB2 for Linux, UNIX, and Windows-Datenbanken können Sie SQL-Anweisungen aus dem Paketcache erfassen.
  • Bei DB2 for z/OS-Datenbanken können Sie SQL-Anweisungen aus dem Anweisungscache erfassen. Sie können von InfoSphere Optim Query Workload Tuner ausgeführte SQL-Anweisungen ausschließen, indem Sie die Option Vom Erfassungsprozess abgesetzte dynamische Abfragen ausschließen aktivieren.

Wenn eine SQL-Anweisung mehrmals in der Eingabedatei enthalten ist, wird sie nur einmal in die pureQueryXML-Ausgabedatei aufgenommen. Informationen dazu, wie doppelte SQL-Anweisungen erkannt werden, finden Sie in Doppelte SQL-Anweisungen in einer SQL-Datei erkennen.

DYNAMIC_STATEMENT_CACHE -filterCacheBy "Filteroptionszeichenfolge"
Gibt an, dass das Dienstprogramm GeneratePureQueryXml SQL-Anweisungen aus dem dynamischen Cache der Datenbank, die mit der Option -url angegeben wurde, in die pureQueryXML-Ausgabedatei kopiert. Die Option DYNAMIC_STATEMENT_CACHE ist nur gültig, wenn eine Verbindung zu einer DB2 for z/OS-Datenbank besteht. Andernfalls wird ein Fehler zurückgegeben. Die Option DYNAMIC_STATEMENT_CACHE darf nicht mit den folgenden Optionen angegeben werden:
  • -commentStart
  • -resultSetConcurrency
  • -resultSetHoldabillity
  • -resultSetType
  • -statementDelimiter

Der Cachefilter -filterCacheBy "Filteroptionszeichenfolge" ist optional. Der Cachefilter begrenzt die SQL-Anweisungen, die in die pureQueryXML-Ausgabedatei kopiert werden, auf der Basis der Eigenschaften, die der Anweisung zugeordnet sind. Wird kein Cachefilter angegeben, werden alle im dynamischen Cache vorhandenen Anweisungen in die pureQueryXML-Datei kopiert.

Die Filteroptionszeichenfolge ist eine Liste, die aus in Anführungszeichen gesetzten, durch Kommas getrennten Schlüssel/Wert-Paaren besteht. Wird mehr als ein Filter angegeben, werden nur SQL-Anweisungen in die pureQueryXML-Ausgabedatei kopiert, die allen Kriterien entsprechen. Die gültigen Optionen und Werte für die Filteroptionszeichenfolge sind in der folgenden Liste beschrieben:

clientProgramId Programm-ID
Eine Anweisung wird in die pureQueryXML-Datei kopiert, wenn sie durch eine Verbindung in den dynamischen Cache gestellt wurde, deren Eigenschaftswert clientProgramId der Programm-ID entspricht.
Anmerkung: Wenn Sie SQL-Anweisungen mit der Option clientProgramId filtern wollen, muss eine Anwendung eine Verbindung oder eine Datenquellendefinition verwenden, die die angepasste JDBC-Eigenschaft clientProgramId angibt. Werden die SQL-Anweisungen der Anwendung in den dynamischen Cache gestellt, wird die Eigenschaftsinformation clientProgramId der Anweisung zugeordnet. Wenn die Verbindung oder die Datenquellendefinition nicht die Eigenschaft clientProgramId angeben, werden keine clientProgramId-Informationen zusammen mit der Anweisung gespeichert.
clientUser Client-Benutzer-ID
Eine Anweisung wird in die pureQueryXML-Datei kopiert, wenn sie durch eine Verbindung in den dynamischen Cache gestellt wurde, deren Eigenschaftswert clientUser der Client-Benutzer-ID entspricht.
Anmerkung: Wenn Sie SQL-Anweisungen auf Basis der Option clientUser filtern wollen, muss eine Anwendung eine Verbindung oder eine Datenquellendefinition verwenden, die die angepasste JDBC-Eigenschaft clientUser angibt. Werden die SQL-Anweisungen der Anwendung in den dynamischen Cache gestellt, wird die Eigenschaftsinformation clientUser der Anweisung zugeordnet. Wenn die Verbindung oder die Datenquellendefinition nicht die Eigenschaft clientUser angeben, werden keine clientUser-Informationen zusammen mit der Anweisung gespeichert.
currentSqlId Berechtigungs-ID
Eine Anweisung wird in die pureQueryXML-Datei kopiert, wenn sie durch eine Verbindung in den dynamischen Cache gestellt wurde, deren Wert für CURRENT SQLID der Berechtigungs-ID entspricht.
currentSchema Schemaname
Eine Anweisung wird in die pureQueryXML-Datei kopiert, wenn sie durch eine Verbindung in den dynamischen Cache gestellt wurde, deren Wert für CURRENT SCHEMA dem Schemanamen entspricht.
cachedAfter Cachezeit
Eine Anweisung wird in die pureQueryXML-Datei kopiert, wenn die Anweisung nach der Zeit Cachezeit in den dynamischen Cache gestellt wurde. Der Wert Cachezeit muss eine gültige DB2-Zeichenfolgedarstellung eines Datums, einer Uhrzeit oder einer Zeitmarke sein. Informationen zu DB2-Werten für Datum, Uhrzeit und Zeitmarke finden Sie in Datums-/Uhrzeitwerte.
-commentStart Kommentaranzeiger
Gibt bei einer SQL-Scriptdatei die Zeichenkombination an, die am Anfang einer Zeile angibt, dass es sich um eine Kommentarzeile handelt. Eine Kommentarzeile kann Cursorattribute einer Anweisung enthalten, die auf die SQL-Anweisung angewendet werden, die dem Kommentar unmittelbar folgt. Die Standardeinstellung sind zwei Gedankenstriche (--). Die Start- und Endkommentarzeichen /* und */ werden bei dieser Option nicht unterstützt.

Diese Option wird nicht unterstützt, wenn die Eingabedatei eine XML-Datei ist. Es wird eine Warnung angezeigt, dass die angegebene Option ignoriert wird.

-sqlLiteralSubstitution ENABLE|DISABLE|NOT_SET
Gibt an, ob das Dienstprogramm GeneratePureQueryXml Literalwerte in SQL-Anweisungen durch Parametermarken ersetzen kann. Der Standardwert ist NOT_SET, d. h. Literalwerte werden in den SQL-Anweisungen nicht ersetzt. Die SQL-Literalersetzung ist identisch zur Ersetzung, die erfolgt, wenn pureQuery Runtime SQL-Anweisungen mit aktivierter SQL-Literalersetzung erfasst.

In der folgenden Liste werden die unterstützten Werte beschrieben:

DISABLE
Gibt an, dass das Dienstprogramm keine Literalersetzung durchführt. Die SQL-Anweisungen werden nicht geändert.

Der Wert des Attributs für die SQL-Literalersetzung in der pureQueryXML-Ausgabedatei wird auf DISABLE gesetzt.

ENABLE
Gibt an, dass das Dienstprogramm Literalwerte in den SQL-Anweisungen durch Parametermarken ersetzt. SQL-Literale werden nicht ersetzt, wenn das Dienstprogramm feststellt, dass sich die Ersetzung der Literale auf die Ergebnisse der SQL-Anweisungen auswirken würde. Bei der Durchführung der SQL-Literalersetzung werden Kommentare aus den Anweisungen entfernt. Bei SQL-Anweisungen, für die die SQL-Literalersetzung durchgeführt wird, werden mehrere Leerzeichen, auch voran- oder nachgestellte Leerzeichen, durch ein einziges Leerzeichen ersetzt.

Das Dienstprogramm entfernt doppelte SQL-Anweisungen, die während der SQL-Literalersetzung erstellt wurden.

Der Wert des Attributs für die SQL-Literalersetzung in der pureQueryXML-Ausgabedatei wird auf ENABLE gesetzt.

NOT_SET
Gibt an, dass für diese Datei keine Literalersetzung durchgeführt wird. Dieser Wert ist der Standardwert.

Der Wert des Attributs für die SQL-Literalersetzung in der pureQueryXML-Ausgabedatei wird auf NOT_SET gesetzt.

Wenn pureQuery Runtime SQL-Anweisungen in einer pureQueryXML-Datei erfasst, ist die Einstellung für die SQL-Literalersetzung in der Datei der Wert, den die pureQuery Runtime-Eigenschaft sqlLiteralSubstitution hatte, als die Anweisungen erfasst wurden.

Informationen zur SQL-Literalersetzung von pureQuery Runtime finden Sie in sqlLiteralSubstitution (Eigenschaft).

Informationen zum Attribut für die SQL-Literalersetzung bei der Zusammenführung von pureQueryXML-Dateien finden Sie in Merge (Dienstprogramm).

-statementDelimiter Begrenzer
Gibt die Zeichenkombination an, die in SQL-Scriptdateien zum Trennen von Anweisungen verwendet wird. Der Standardwert ist ein Semikolon (;).

Diese Option wird nicht unterstützt, wenn die Eingabedatei eine XML-Datei von InfoSphere Optim Query Workload Tuner ist. Es wird eine Warnung angezeigt, dass die angegebene Option ignoriert wird.

-resultSetHoldability Lebensdauer
Gibt die Lebensdauer der Ergebnismenge an, die auf alle Anweisungen in der Datei angewendet wird. Für die Lebensdauer kann einer der folgenden Werte angegeben werden:
  • CLOSE_CURSORS_AT_COMMIT legt fest, dass die Ergebnismengen beim Commit geschlossen werden. Dieser Wert setzt den JDBC-Wert java.sql.ResultSet.CLOSE_CURSORS_AT_COMMIT.
  • HOLD_CURSORS_OVER_COMMIT legt fest, dass die Ergebnismengencursor commitübergreifend beibehalten werden. Dieser Wert setzt den JDBC-Wert java.sql.ResultSet.HOLD_CURSORS_OVER_COMMIT.

Der Standardwert ist HOLD_CURSORS_OVER_COMMIT.

In SQL-Scriptdateien kann der Lebensdauerwert für eine bestimmte SQL-Anweisung in der Datei überschrieben werden, indem die Lebensdauer in einer Kommentarzeile angegeben wird, die der SQL-Anweisung unmittelbar vorausgeht.

Bei XML-Dateien von Query Workload Tuner aus DB2 for z/OS wird die Lebensdauer der Ergebnismenge für die ursprüngliche Vorbereitung einer SQL-Anweisung in der Datei gespeichert. Wenn die Informationen zur Lebensdauer der Ergebnismenge in der Datei enthalten sind, nutzt das Dienstprogramm diesen Wert für die SQL-Anweisung in der pureQueryXML-Ausgabedatei.

Informationen zur Lebensdauer der Ergebnismenge für SQL-Anweisungen in einer XML-Datei von InfoSphere Optim Query Workload Tuner XML finden Sie in Hinweise zur pureQueryXML-Ausgabedatei.

-resultSetConcurrency gemeinsamer_Zugriff
Gibt den gemeinsamen Zugriff für die Ergebnismenge fest, der auf alle Anweisungen angewendet wird. Für den gemeinsamen Zugriff kann einer der folgenden Werte angegeben werden:
  • CONCUR_READ_ONLY legt die Cursorparallelität als schreibgeschützt fest.
  • CONCUR_UPDATABLE legt die Cursorparallelität als aktualisierbar fest.

Der Standardwert ist CONCUR_READ_ONLY.

In SQL-Scriptdateien kann der Wert für gemeinsamen Zugriff für eine bestimmte SQL-Anweisung überschrieben werden, indem der gemeinsame Zugriff in einer Kommentarzeile angegeben wird, die der SQL-Anweisung unmittelbar vorausgeht.

Informationen zur Festlegung des gemeinsamen Zugriffs der Ergebnismenge für SQL-Anweisungen in einer XML-Datei von InfoSphere Optim Query Workload Tuner XML finden Sie in Hinweise zur pureQueryXML-Ausgabedatei.

-resultSetType Typ
Gibt den Ergebnismengentyp an, der auf alle Anweisungen angewendet wird. Für den Typ kann einer der folgenden Werte angegeben werden:
  • TYPE_FORWARD_ONLY legt den Ergebnismengentyp als nur vorwärts fest.
  • TYPE_SCROLL_SENSITIVE legt den Ergebnismengentyp als blättersensitiv fest.
  • TYPE_SCROLL_INSENSITIVE legt den Ergebnismengentyp als nicht blättersensitiv fest.

Der Standardwert ist TYPE_FORWARD_ONLY. In SQL-Scriptdateien kann der Wert für den Ergebnismengentyp einer bestimmten SQL-Anweisung überschrieben werden, indem der Ergebnismengentyp in der Kommentarzeile angegeben wird, die der SQL-Anweisung unmittelbar vorausgeht.

Informationen zur Festlegung des Ergebnismengentyps für SQL-Anweisungen in einer XML-Datei von InfoSphere Optim Query Workload Tuner XML finden Sie in Hinweise zur pureQueryXML-Ausgabedatei.

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--'     

-traceFileDateiname
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.
-help
Zeigt zusammenfassende Informationen zur Verwendung an. Nicht gültig in einer Optionsdatei.

Hinweise zur pureQueryXML-Ausgabedatei

Die folgende Liste enthält Informationen zur Verwendung der pureQueryXML-Datei:
  • Stellen Sie beim Erstellen einer pureQueryXML-Datei aus einer SQL-Scriptdatei oder einer XML-Datei von InfoSphere Optim Query Workload Tuner sicher, dass für jede SQL-Anweisung die folgenden Bedingungen erfüllt sind:
    • Der SQL-Anweisungstext in der Datei muss mit der von der Anwendung abgesetzten SQL-Anweisung übereinstimmen. Die Großschreibung und die Leerzeichen der Anweisungen müssen übereinstimmen.
    • Die in der Datei für die SQL-Anweisung angegebenen Einstellungen zur Lebensdauer der Ergebnismenge, zum gemeinsamen Zugriff und zum Typ müssen mit den Einstellungen der von der Anwendung abgesetzten SQL-Anweisung übereinstimmen.

    Stimmen die Informationen nicht überein, führt die pureQuery-Clientoptimierung keinen Abgleich der SQL-Anweisung mit der von der Anwendung abgesetzten Anweisung durch, wenn die pureQuery Runtime-Eigenschaft executionMode auf STATIC gesetzt ist oder wenn die pureQuery Runtime-Eigenschaft capturedOnly auf TRUE gesetzt ist.

    Wenn die Eingabedatei eine Query Workload Tuner-XML-Datei ist, gilt Folgendes:
    • Die XML-Datei enthält einige Sonderregisterinformationen für SQL-Anweisungen. Wenn das Dienstprogramm GeneratePureQueryXml eine pureQueryXML-Datei aus einer XML-Datei generiert, sind die Sonderregisterinformationen als Metadaten in der pureQueryXML-Datei enthalten. Es gibt Unterschiede zwischen den von pureQuery Runtime erfassten Sonderregisterinformationen und den von Query Workload Tuner erfassten Sonderregisterinformationen. GeneratePureQueryXml enthält die Sonderregisterinformationen, die normalerweise von pureQuery Runtime erfasst werden.

      Wenn Sie die pureQueryXML-Datei mit dem Dienstprogramm Configure konfigurieren, können Sie die Option -groupSQLBySpecialRegisters angeben, um die SQL-Anweisungen in der Datei entsprechend der Sonderregistereinstellungen zu gruppieren. Sie können auch die Option -optionsFileForBind angeben, um eine StaticBinder-Beispieloptionsdatei zu erstellen, die Bindeoptionen basierend auf den Sonderregistereinstellungen enthält. Informationen zu den Configure-Optionen finden Sie in Configure (Dienstprogramm).

      Informationen zu den von pureQuery Runtime überwachten und aufgezeichneten Sonderregisterinformationen finden Sie in Änderungen an DB2-Sonderregistern mit der pureQuery-Clientoptimierung verfolgen.

      Sie müssen eine DB2 for z/OS-Datenbank konfigurieren, um SQL-Leistungsstatistikdaten in einer InfoSphere Optim Query Workload Tuner XML-Datei zu erfassen. Informationen zum Aktivieren der Statistikerfassung finden Sie in DB2 for z/OS-Leistungsstatistikdaten in einer InfoSphere Optim Query Workload Tuner XML-Datei erfassen.

    • Bevor das Dienstprogramm der pureQueryXML-Datei eine Anweisung hinzufügt, bereitet es die Anweisung für die Erfassung von zugehörigen Metadaten vor. Wenn ein Wert für das Sonderregister CURRENT SCHEMA in der XML-Datei enthalten ist, verwendet das Dienstprogramm den Wert des Sonderregisters CURRENT SCHEMA bei der Durchführung der Vorbereitung.
    • Wenn das Dienstprogramm feststellt, dass die SQL-Anweisung in der XML-Datei statisch ausgeführt wurde, wird die Anweisung nicht in die pureQueryXML-Ausgabedatei aufgenommen.
    • Das Dienstprogramm GeneratePureQueryXml kopiert einige Statistikdaten aus der XML-Datei in die pureQueryXML-Ausgabedatei. Die Statistikdaten in der XML-Eingabedatei hängen vom Typ und von der Version der Datenbank sowie von der Version von InfoSphere Optim Query Workload Tuner ab. Diese Statistikdaten beeinflussen nicht, wie die SQL-Anweisungen in der pureQueryXML-Datei gebunden werden oder wie pureQuery Runtime SQL-Anweisungen mit Anweisungen abgleicht, die von einer Anwendung abgesetzt werden.

      Wenn das Dienstprogramm keine Zeitmarkenangaben für SQL-Anweisungen findet, verwendet es das aktuelle Datum und die aktuelle Uhrzeit.

    • In der XML-Datei können keine Cursorattribute angegeben werden. Sie können Cursorattribute mit den Optionen -resultSetType, -resultSetHoldability und -resultSetConcurrency des Dienstprogramms GeneratePureQueryXml angeben. Die Optionen gelten für alle SQL-Anweisungen in der XML-Datei.

      Bei XML-Dateien aus DB2 for z/OS wird die Lebensdauer der Ergebnismenge für die ursprüngliche Vorbereitung einer SQL-Anweisung in der Datei gespeichert. Wenn die Informationen zur Lebensdauer der Ergebnismenge in der Datei enthalten sind, nutzt das Dienstprogramm diesen Wert für die SQL-Anweisung in der pureQueryXML-Ausgabedatei.

      pureQuery Runtime berücksichtigt die SQL-Anweisung und die Cursorattribute der Anweisung bei der Steuerung der Ausführung einer SQL-Anweisung. Sie können pureQuery Runtime beispielsweise so konfigurieren, dass SQL-Anweisungen statisch ausgeführt werden. Wenn die Anweisung und die Attribute in der pureQueryXML-Datei nicht der Anweisung und den Attributen der Anwendung entsprechen, führt pureQuery Runtime die Anweisung nicht statisch aus.

    • Wenn die SQL-Anweisungen in der pureQueryXML-Ausgabedatei unterschiedliche Bindeoptionen für die statische Ausführung erfordern, können Sie den pureQueryXML-Editor in der Workbench verwenden, um die SQL-Anweisungen in Anweisungsgruppen zu gruppieren. Dann können Sie mit dem Dienstprogramm StaticBinder unterschiedliche Bindeoptionen für die Anweisungsgruppen angeben.

      Sie können das Dienstprogramm StaticBinder mit der Option -statementBindError unter Angabe des Werts REMOVE oder MARK_INVALID ausführen. Das Dienstprogramm StaticBinder überspringt die SQL-Anweisungen, die beim Bindeprozess einen Fehler zurückgeben.

  • Wenn die Eingabedatei eine Gruppe von SQL-Anweisungen ist, die aus einem dynamischen DB2 for z/OS-Anweisungscache abgerufen wurden, gilt Folgendes:
    • Sie müssen jedes DB2 for z/OS-Susbsystem konfigurieren, das ein Ziel dieser Abrufoperation ist. Informationen zum Konfigurieren eines DB2 for z/OS-Susbsystems finden Sie in z/OS-Subsystem zum Abrufen von SQL-Anweisungen aus einem dynamischen Cache konfigurieren.
    • Das Dienstprogramm GeneratePureQueryXml lässt zur Festlegung der Standardwerte für bestimmte Sonderregister und Cursorattribute Eigenschaften zu. Diese Attribute werden in der Regel nicht unterstützt, wenn SQL-Anweisungen aus dem dynamischen Anweisungscache abgerufen werden. Weil die tatsächlichen Werte aus dem Cache abgerufen werden, ist ein Überschreiben der Werte nicht erforderlich.
    • Bevor das Dienstprogramm der pureQueryXML-Datei eine Anweisung hinzufügt, bereitet es die Anweisung für die Erfassung von zugehörigen Metadaten vor. Wenn ein Wert für das Sonderregister CURRENT SCHEMA vorhanden ist, verwendet das Dienstprogramm den Wert des Sonderregisters CURRENT SCHEMA bei der Durchführung der Vorbereitung.
    • Das Dienstprogramm verwendet bei der Verarbeitung der abgerufenen SQL-Anweisungen die Zeitmarkeninformationen des dynamischen Caches.
    • Der Inhalt der pureQueryXml-Ausgabedatei hängt von dem aktuellen Inhalt des dynamischen DB2-Anweisungscaches und von den angegebenen Werten der Option filterCacheBy ab. Folgendes kann sich darauf auswirken, welche Anweisungen vom Dienstprogramm GeneratePureQueryXml abgerufen werden:
      • Im Cache können jederzeit Anweisungen vorhanden sein, die von verschiedenen Anwendungen vorbereitet wurden. Wenn Sie Anweisungen aus dem Cache abrufen, ohne einen Filter anzugeben, rufen Sie möglicherweise Anweisungen ab, die nicht zu ihrer Anwendung gehören.
      • Wird ein Filter angegeben, kann der Filter möglicherweise eine Anweisung auslassen, die von Ihrer Anwendung verwendet wird. Beispiel: Anwendung A und Anwendung B verwenden eine allgemeine SQL-Anweisung. Sie können diese Anweisung im Cache gemeinsam nutzen, aber DB2 hat möglicherweise aufgezeichnet, dass die Anweisung von Anwendung A in den Cache gestellt wurde. Wenn Sie einen Filter wie "clientProgramId B" angeben, wird diese Anweisung nicht in der Ausgabedatei enthalten sein.
      • Es ist möglich, dass Anweisungen, die kürzlich während einer Ausführung Ihrer Anwendung ausgeführt wurden, sich nicht im Cache befinden. Mit den großen Cachegrößen, die mit den neuesten DB2-Releases eingeführt wurden, wird dieser Fall wahrscheinlich nicht auftreten.
  • Die pureQueryXML-Ausgabedatei kann nicht direkt mit der pureQuery-Clientoptimierung zur statischen Ausführung von SQL-Anweisungen verwendet werden. Bevor Sie das Dienstprogramm StaticBinder verwenden, müssen Sie die pureQueryXML-Datei mit dem Dienstprogramm Configure so modifizieren, dass sie mit der pureQuery-Clientoptimierung verwendet werden kann.
  • Die pureQueryXML-Ausgabedatei enthält keine Anwendungsausführungsinformationen wie Stack-Traceinformationen und Sonderregisterinformationen, die bei einer pureQueryXML-Datei verfügbar sind, die erstellt wird, wenn pureQuery Runtime SQL-Anweisungen aus einer Anwendung erfasst, die die pureQuery-Clientoptimierung verwendet.
  • Die pureQueryXML-Ausgabedatei enthält nicht die folgenden Informationen zu SQL-Anweisungen, die von der pureQuery-Clientoptimierung verwendet werden, um eine Anweisung als SQL-Anweisung zur Laufzeit anzugeben:
    • Automatisch generierte Schlüsselspaltennamen
    • Automatisch generierte Schlüsselspaltenindizes
    • Automatisch generierter Schlüsselindikatoren

    Ist eine Anwendung, die die pureQuery-Clientoptimierung verwendet, so konfiguriert, dass sie SQL-Anweisungen statisch oder im Modus für die ausschließliche Verarbeitung erfasster Elemente ausführt und eine vom Dienstprogramm GeneratePureQueryXml erstellte pureQueryXML-Datei verwendet, wird eine von der Anwendung abgesetzte Anweisung nicht statisch ausgeführt, wenn die Anweisung eines dieser drei Features verwendet, auch wenn der Text der SQL-Anweisungen identisch ist.

Das folgende Beispiel erstellt die pureQueryXML-Datei c:\statements.pdqxml, die Informationen zu Anweisungen enthält, die sich in der SQL-Scriptdatei c:\mystatements.sql befinden. Der Wert der Option -sqlLiteralSubstitution ist auf ENABLE gesetzt, um Literale in SQL-Anweisungen durch Parametermarken zu ersetzen.
java com.ibm.pdq.tools.GeneratePureQueryXml 
    -username db2admin �password mypass 
    �url jdbc:db2://localhost:50000/mydb 
    -sqlLiteralSubstitution ENABLE
    �pureQueryXml "C:\statements.pdqxml" �inputSql "C:\mystatements.sql"

Doppelte SQL-Anweisungen in einer SQL-Datei erkennen

Das Dienstprogramm GeneratePureQueryXml erkennt zwei SQL-Anweisungen als Duplikate, wenn der Text der beiden SQL-Anweisungen bis auf voran- und nachgestellte Leerzeichen identisch ist und wenn die folgenden Attribute identisch sind:
  • Ergebnismengentyp
  • Gemeinsamer Zugriff der Ergebnismenge
  • Lebensdauer der Ergebnismenge

Die folgenden beiden Einträge in einer SQL-Datei werden als identisch betrachtet. Die SQL-Anweisungen unterscheiden sich nur durch die Anzahl der voran- und nachgestellten Leerzeichen:

-- resultSetType=TYPE_FORWARD_ONLY
-- resultSetConcurrency=CONCUR_READ_ONLY
         SELECT * FROM EMPLOYEE ;

-- resultSetType=TYPE_FORWARD_ONLY
-- resultSetConcurrency=CONCUR_READ_ONLY
SELECT * FROM EMPLOYEE     ;

Die folgenden beiden Einträge in einer SQL-Datei werden als nicht identisch betrachtet. Die Anzahl der Leerzeichen in den SQL-Anweisungen ist unterschiedlich:

-- resultSetType=TYPE_FORWARD_ONLY
-- resultSetConcurrency=CONCUR_READ_ONLY
SELECT      *      FROM      EMPLOYEE;

-- resultSetType=TYPE_FORWARD_ONLY
-- resultSetConcurrency=CONCUR_READ_ONLY
SELECT * FROM EMPLOYEE;

Die folgenden beiden Einträge in einer SQL-Datei werden als nicht identisch betrachtet, da unterschiedliche Cursorattribute festgelegt sind:

-- resultSetType=TYPE_FORWARD_ONLY
-- resultSetConcurrency=CONCUR_READ_ONLY
SELECT * FROM EMPLOYEE;

-- resultSetType=TYPE_SCROLL_SENSITIVE
-- resultSetConcurrency=CONCUR_READ_ONLY
SELECT * FROM EMPLOYEE;
Die folgenden Einträge sind in einer SQL-Eingabedatei enthalten. Die Anweisungen sind bis auf die Literalwerte identisch.
SELECT * FROM EMPLOYEE WHERE EMPNO = '000010'
SELECT * FROM EMPLOYEE WHERE EMPNO = '000020'
SELECT * FROM EMPLOYEE WHERE EMPNO = '000030'
Wenn Sie das Dienstprogramm GeneratePureQueryXml ausführen und die Option sqlLiteralSubstitution auf ENABLE gesetzt ist, werden die Literalwerte durch eine Parametermarke ersetzt und die durch die Ersetzung erzeugten Duplikate werden entfernt. Das Ergebnis ist eine einzige SQL-Anweisung, die in die pureQueryXML-Datei geschrieben wird:
SELECT * FROM EMPLOYEE WHERE EMPNO = ?

Feedback