Der Prozess der Erfassung von SQL-Anweisungen besteht aus zwei Schritten: Einstellung der Werte bestimmter Eigenschaften und die anschließende Ausführung der Anwendung. Im Erfassungsprozess führen Sie Ihre Anwendung aus, nachdem Sie die Eigenschaft captureMode auf ON gesetzt haben. pureQuery erstellt eine Datei, die die SQL-Anweisungen und die Stack-Traces auflistet. Die Datei wird als pureQueryXML-Datei bezeichnet und Sie können für sie die Erweiterung .pdqxml oder .xml angeben.
Wenn bei der Ausführung Ihrer Nicht-pureQuery-API-Anwendung captureMode auf ON gesetzt ist, müssen alle logischen Pfade, die die statisch auszuführenden SQL-Anweisungen enthalten, erfolgreich ausgeführt werden. pureQuery erfasst SQL-Anweisungen nur dann, wenn sie erfolgreich ausgeführt werden.
Allgemeine Hinweise
- Die Methode Connection.prepareStatement() verursacht nicht die Erfassung von SQL-Anweisungen.
- Möglicherweise wird Ihre Anwendung nicht ordnungsgemäß ausgeführt, wenn sie mit pureQuery zur statischen Ausführung von SQL verwendet wird. Verwenden Sie das pureQuery-Dienstprogramm Log, wenn Sie SQL erfassen. Die von diesem Dienstprogramm protokollierten Nachrichten helfen Ihnen dabei, festzustellen, inwieweit Ihre Anwendung mit dem statischen SQL kompatibel ist. Eine Beschreibung einiger Situationen, in denen Ihre Anwendung möglicherweise mit statischem SQL nicht kompatibel ist, finden Sie in Situationen oder Programmierpraxis, die zu Problemen führen können, wenn Ihre Nicht-pureQuery-API-Anwendung SQL-Anweisungen statisch ausführt.
- Die Erfassung von SQL-Anweisungen, die von mit Annotationen versehenen pureQuery-Methoden aufgerufen werden, damit Ihre Anwendung diese Anweisungen statisch ausführen kann, wird nicht empfohlen. Dies kann zu einer Reduzierung der Leistung führen und bestimmte Funktionen, wie das heterogene Stapeln, können SQL-Fehler verursachen.
- pureQuery Runtime unterstützt die statische Ausführung von kombinierten Anweisungen mit Ausnahme von kombinierten Anweisungen, die BEGIN ATOMIC starten, nicht.
Beim Erfassen kombinierter Anweisungen setzt pureQuery das Attribut isBindable in der pureQueryXML-Datei für jede dieser Anweisungen auf false. Das Attribut weist das Dienstprogramm StaticBinder an, ob eine Anweisung zu binden ist.
Sie können isBindable für kombinierte Anweisungen BEGIN ATOMIC auf true setzen. Wenn das Dienstprogramm StaticBinder die Anweisung nicht binden kann, wird ein Fehler protokolliert.
- Die Erfassung von SQL-Anweisungen, die Hexadezimalzeichen enthalten, die möglicherweise bestimmten XML-Steuerzeichen zugeordnet werden, wird von pureQuery Runtime nicht unterstützt. Diese Zeichen liegen im Bereich von 0x32 (hexadezimal)
und darunter.
Diese Zeichen treten in SQL nur selten auf. Die Zeichen können auftreten, wenn Sie Zeichenfolgeliteralwerte verwenden, die aus einer nicht traditionellen Quelle generiert werden. Die Zeichen können zwar erfasst werden, es können jedoch bei der nachfolgenden Verarbeitung der Erfassungsdatei Fehler auftreten. Wenn die Verwendung dieser Literalwerte in SQL nicht vermieden werden kann, können Sie die Eigenschaft sqlLiteralSubstitution verwenden, um Fehler zu vermeiden, die während der Verarbeitung der Erfassungsdatei unter Umständen auftreten können.
Die Eigenschaft sqlLiteralSubstitution weist pureQuery
Runtime an, alle Literale durch Parameter im erfassten SQL zu ersetzen.
- Beim Erfassen von SQL-Anweisungen, die für DB2-Datenbanken ausgeführt werden, protokolliert der Erfassungsprozess Änderungen an DB2-Sonderregistern. Änderungen an häufig verwendeten Sonderregistern, die sich auf die von der SQL-Anweisung zurückgegebenen Daten auswirken können, werden ebenfalls in den pureQueryXML-Dateien erfasst.