© Copyright International Business Machines Corporation 2006. All rights reserved.
© Copyright IBM Deutschland GmbH 2006. Alle Rechte vorbehalten.
In der Workbench gibt es zwei neue Datenprojekttypen:
- Datenentwurfsprojekte
- Datenentwicklungsprojekte
Datenentwurfsprojekte werden zum Erstellen und Speichern von Datenmodellen verwendet, zum Beispiel von physischen Datenmodellen und logischen Datenmodellen. Datenentwicklungsprojekte werden zum Erstellen und Speichern von Objekten in der Anwendungsentwicklung verwendet, zum Beispiel von gespeicherten Prozeduren und benutzerdefinierten Funktionen, die auch als Routinen bezeichnet werden. Routinen können in einem Datenentwurfsprojekt auch als Bestandteil eines physischen Datenmodells angezeigt werden. Die Entwicklungsunterstützung für Routinen in einem Datenentwurfsprojekt ist jedoch sehr begrenzt, und SQL-Tools für Routinen werden in einem Datenentwurfsprojekt nicht unterstützt. Wenn Sie Routinen entwickeln, wird empfohlen, die angegebenen Datenentwicklungsprojekte zu verwenden, die eine umfassendere Unterstützung mit Assistenten, Routineneditoren, Debuggingunterstützung und einer Integration der SQL-Tools bereitstellen.
Wenn Sie im Editor für Tabellendaten eine XML-Prüfung für eine XML-Tabelle durchführen, die nicht über einen Primärschlüssel verfügt, funktioniert die XML-Prüfung nur beim ersten Mal, wenn Sie den XML-Wert einfügen. Danach schlägt die Aktualisierung einer vorhandenen XML-Spalte mit der XML-Prüfung fehl.
Problemumgehung: Erstellen Sie einen Primärschlüssel für die Tabellen, in denen XML-Spalten enthalten sind.
Bei der Arbeit mit mehreren Stammelementen in diesem Editor können Fehler beim Speichern einer XSD-Datei mit Anmerkungen auftreten.
Problemumgehung: Erstellen Sie für jedes Stammelement eine separate Gruppe aus XML-Schemadokumentdateien.
Um XML-Datentypen verwenden und mit XML-Schemata arbeiten zu können, müssen Sie über eine Verbindung zu einer UTF-8-Datenbank verfügen. Das von der Datenbank für die XML-Dokumente zurückgegebene Datenvolumen ist nicht begrenzt. Abhängig von dem Datenvolumen, das Sie zurückgeben, kann die Leistung eingeschränkt werden.
- Der SQL-Editor unterstützt derzeit nicht Hostvariablen während der Aktion 'SQL ausführen'.
Problemumgehung: Sie können SQL-Anweisungen in SQL Builder ausführen, wenn es sich um DML-Anweisungen handelt.
- In SQL Builder wird die SQL-Syntax nicht vollständig unterstützt. So werden zum Beispiel benutzerdefinierte Datentypen (User Defined Types, UDTs) und Tabellenfunktionen nicht unterstützt.
- Benutzerdefinierte Datentypen (User Defined Types, UDTs) werden nicht als Parameter für Routinen unterstützt.
- Wenn Sie mit Hilfe einer Ant-Implementierung gespeicherte Java™-Prozeduren implementieren möchten, die auf DB2 Universal Database™ for iSeries® in dem Dateisystem abzielen, müssen Sie sicherstellen, dass sich die Datei 'jt400.jar' im Systemklassenpfad befindet. Wenn Sie versuchen, eine exportierte gespeicherte Prozedur mit Hilfe der Anweisungen in der Datei 'DeployInstructions.txt' zu implementieren, wird möglicherweise folgende Fehlernachricht angezeigt:
...[createsp] Zur Zieldatenbank konnte keine Verbindung hergestellt werden.
[createsp] com.ibm.db2.jcc.DB2Driver...Problemumgehung: Stellen Sie sicher, dass sich die Datei 'db2jcc.jar' und die entsprechenden Lizenzdateien im Systemklassenpfad befinden.
- Es kann vorkommen, dass der Fehler "Klasse kann nicht geladen werden" angezeigt wird, wenn Sie gespeicherte Java-Prozeduren implementieren oder ausführen. Dieser Fehler kann auftreten, wenn RAD 7 und DB2®-Server unterschiedliche JDK-Versionen aufweisen und der DB2-Server eine niedrigere (ältere) JDK-Version hat.
Problemumgehung: Geben Sie die Option "-source 1.4" im Feld 'Compilieroptionen' des Assistenten 'Routinen implementieren' an, wenn Sie gespeicherte Java-Prozeduren auf Servern implementieren, die JDK 1.4 verwenden. (Zum Beispiel DB2 Universal Database for Linux®, UNIX® und Windows® 8.2-Server). Verwenden Sie in der Regel die entsprechende Kompilierungsoption "-source JDK level", um den JDK-Stand an den Datenbankserver anzupassen.
- Wenn Sie eine gespeicherte Prozedur oder benutzerdefinierte Funktion (UDF) mit Hilfe einer Ant-Implementierung implementieren, kann es vorkommen, dass diese Nachricht angezeigt wird, wenn sich die Datei 'tools.jar' nicht im Klassenpfad befindet:
'tools.jar' kann nicht gefunden werden. Erwartete Position: F:\jre\1.4.2\lib\tools.jar
Die Datei 'tools.jar' ist Bestandteil der Java Runtime Environment (JRI) und nicht Bestandteil des Ant-Implementierungstools.Problemumgehung: Die Datei 'tools.jar' ist nicht zur Ausführung des Ant-Scripts erforderlich; sie können diese Nachricht zu diesem Zeitpunkt ignorieren.
- Wenn Sie den Java-Methodennamen in der gespeicherten Prozedur ändern, können Sie die Prozedur nicht ordnungsgemäß durch Klicken mit der rechten Maustaste und anschließendes Auswählen von 'Speichern' auf der Quellenseite des Editors speichern.
Problemumgehung: Speichern Sie die gespeicherte Prozedur durch Klicken auf 'Datei' > 'Speichern', durch Drücken der Tastenkombination 'Strg + S' oder durch Klicken auf das Symbol 'Speichern'.
- Wenn Sie eine gespeicherte Prozedur oder UDF zwischen zwei ungleichen Servern (zum Beispiel einem DB2 Universal Database für Linux, UNIX und Windows-Server zu einem DB2 Universal Database für z/OS®-Server) ziehen und übergeben, wird während der Drag-and-Drop-Operation eine Warnung angezeigt, die auf bestimmte Inkompatibilitäten zwischen den beiden Servern hinweist. Wenn Sie die Operation fortsetzen und anschließend versuchen, die gespeicherte Prozedur bzw. UDF zu öffnen, wird unter Umständen eine Fehlernachricht angezeigt.
- Wenn Sie eine SQL-Profilerstellung für einen Server des Typs DB2 UDB für Linux, UNIX oder Windows 8.2 ausführen, kann unter Umständen eine Null Pointer-Ausnahme auftreten, wenn auf dem Server die vorausgesetzte gespeicherte Prozedur (SYSIBM.SQLCAMESSAGECCSID) fehlt, die vom Java Commerce Client-Treiber zum Abrufen von Fehlernachrichttexten benötigt wird.
Problemumgehung: Sie können eine Verbindung zum Server ohne die Einstellung 'retrieveMessagesFromServerOnGetMessage=true' erstellen.
- Während der Überwachung der Ausführung von SQL-Prozeduren werden Ereignisse für DML-Anweisungen wie INSERT, SELECT, DELETE und UPDATE generiert, die in der Prozedur aufgerufen werden. Die Ereignisse werden jedoch nicht auf eine deterministische Art für prozedurale Anweisungen wie Variablenzuordnungen oder Steuerstrukturen wie WHILE oder IF generiert. Deswegen kann es vorkommen, dass Profilerstellungsinformationen nicht für prozedurale Anweisungen erstellt werden.
- Wenn eine Verbindung zu einem UNIX DB2-Server besteht, können Zeitlimitausnahmebedingungen auftreten, wenn Sie Unterbrechungspunkte hinzufügen oder der Debugmodus ausgeführt wird.
- Der Debugger wird nicht für eine gespeicherte Prozedur ausgeführt, deren Name sowohl Englische als auch Chinesische Zeichen enthält.
- Überwachungsausdrücke werden nur für dynamische gespeicherte Java-Prozeduren unterstützt. Sie werden nicht für gespeicherte SQL-Prozeduren und gespeicherte SQLJ-Prozeduren unterstützt.
- Der Debugger stoppt nicht an einem Unterbrechungspunkt, wenn er nicht an dem ersten Token einer ausführbaren Anweisung wie zum Beispiel SET positioniert wird. Außerdem stoppt er nicht bei DECLARE CONTINUE, CLOSE CURSOR oder ROLLBACK.
- Wenn Sie ein Debug für eine gespeicherte Java-Prozedur durchführen und eine Aktion des Typs 'Beenden' auswählen, kann es einige Minuten dauern, bis die Debugsitzung vollständig beendet wird. Neue Debugsitzungen, die in diesem Zeitraum gestartet werden, können ein unerwartetes Verhalten aufweisen.
- Wenn Sie ein Debug für eine gespeicherte Java-Prozedur durchführen, die wiederum eine zweite gespeicherte Java-Prozedur aufruft, können Sie kein Debug für die zweite gespeicherte Prozedur durchführen. Sie können nicht in die verschachtelte gespeicherte Prozedur wechseln, und alle Unterbrechungspunkte, die Sie in der verschachtelten gespeicherten Prozedur festlegen, werden ignoriert. Diese Einschränkung gilt für Linux, UNIX und Windows.
- Wenn der Fehler 'Beim Warten auf das Paket wurde das Zeitlimit überschritten' auftritt, während Sie ein Debug für eine gespeicherte Java-Prozedur durchführen, versuchen Sie, die Einstellung für die Java-Zeitlimitüberschreitung zu erhöhen.
Problemumgehung: Um die Einstellung für die Zeitlimitüberschreitung in Java zu erhöhen, klicken Sie in der Workbench-Menüleiste auf 'Fenster' > 'Benutzervorgaben'. Erweitern Sie den Knoten 'Java', und klicken Sie auf 'Debug'. Erhöhen Sie auf der Seite 'Einstellungen für Debug' den Wert für 'Debugger-Zeitlimit (msek)' im Abschnitt 'Kommunikationszeitlimit'. Es wird empfohlen, mindestens den doppelten Standardwert anzugeben.
- Wenn Sie ein Debug für eine gespeicherte Java-Prozedur durchführen und dabei die Aktion 'Wert ändern' zum Ändern einer Variablen verwenden, deren Wert eine leere Zeichenfolge ist, kann es vorkommen, dass die Schaltfläche 'OK' im Bearbeitungsdialog nicht aktiviert wird.
Problemumgehung: Damit die Schaltfläche aktiviert wird, wählen Sie das Optionsfeld 'Bewertung eingeben' aus, legen als Wert keine leere Zeichenfolge fest (zum Beispiel 'a') und wählen anschließend das Optionsfeld 'Literaltext eingeben' aus. Daraufhin wird die Schaltfläche 'OK' verfügbar.
- Falls keine lokalen Variablen angezeigt werden, wenn Sie ein Debug für eine gespeicherte Java-Prozedur durchführen, wurde die gespeicherte Prozedur vielleicht ohne die Compileroption '-g' implementiert.
Problemumgehung: Stellen Sie sicher, dass Sie die Compileroption '-g' angeben, wenn Sie gespeicherte Java-Prozeduren implementieren.
- Wenn die Nachricht 'Ungültiger Stack-Frame' in der Sicht 'Variablen' angezeigt wird, wechseln Sie in die Sicht 'Debug' und klicken auf das Threadobjekt über dem Stack-Frame und anschließend auf den Stack-Frame. Daraufhin müsste die Sicht 'Variablen' aktualisiert werden, und der Fehler dürfte nicht mehr auftreten.
- Wenn Sie ein Debug für eine gespeicherte SQLJ-Prozedur durchführen, die auf DB2 UDB für iSeries V5 R4 ausgeführt wird, entspricht die aktuell ausgeführte Zeile nicht der angegebenen SQLJ-Quellenzeile, die in der Sicht 'Debug' angezeigt wird, sofern Sie nicht eine vorläufige iSeries-Programmkorrektur angewendet haben, die die Zeilenzuordnung so aktualisiert, dass sie der SQLJ-Quelle und nicht der Java-Quelle entspricht.
- Die Benutzervorgaben des Debuggers für den Sitzungsmanager ('Fenster' > 'Benutzervorgaben', dann 'Ausführen/Debug' erweitern, auf 'Debugger für gespeicherte DB2-Prozeduren' klicken und den Wert im Feld 'Zeitlimit des Sitzungsmanagers in Minuten' ändern) werden nicht erkannt.
- Der Debugger kann keine gespeicherte Prozedur verarbeiten, die über viele Variablen in DB2 für Linux, UNIX oder Windows verfügt. Die maximale Anzahl an Variablen beträgt 200.
- Cursorbewegung in Debugsitzung: Wenn in manchen Fällen mehrere Variablendeklarationen in einer Prozedur vorkommen, müssen Sie mehrmals auf 'Step-Into' oder 'Step-Over' klicken, um in die nächste Zeile zu gelangen. Sie müssen zum Beispiel zwei Mal auf die Zeile 'DECLARE v_dept, v_actdept CHAR(3)' klicken und drei Mal auf die Zeile 'DECLARE v_bonus, v_deptbonus, v_newbonus DECIMAL(9,2)'. Die Anzahl der erforderlichen Klickvorgänge entspricht dabei der Anzahl der Variablendeklarationen.
- Wenn Sie eine Debugsitzung für eine gespeicherte Java-Prozedur starten und Unterbrechungspunkte hinzufügen, und anschließend die Unterbrechungspunkte inaktivieren, sind die Unterbrechungspunkte noch aktiviert.
Problemumgehung: Sie müssen beim Starten einer neuen Debugsitzung zuerst alle alten Unterbrechungspunkte entfernen und anschließend die neuen Unterbrechungspunkte hinzufügen.
- Wenn Sie an mehreren Datenentwicklungsprojekten arbeiten, kann es in manchen Fällen vorkommen, dass bei dem Versuch, ein Debug für eine gespeicherte Prozedur durchzuführen, die Fehlernachricht "Gespeicherte Prozedur PROCNAME konnte nicht lokalisiert werden. Prozedur wurde möglicherweise aus dem Arbeitsbereich gelöscht" oder "Quelle nicht gefunden" angezeigt wird.
- Nach dem Debug einer verschachtelten gespeicherten SQL-Prozedur wird manchmal in der Datenausgabesicht angezeigt, dass der Debugger ausgeführt wird und es kann zu Problemen bei allen folgenden Ausführungen oder Implementierungen von gespeicherten Prozeduren kommen.
Problemumgehung: Der Sitzungsmanager muss auf der Clientmaschine ausgeführt werden, auf der das Entwicklerprodukt installiert ist. Zum Starten des Sitzungsmanagers führen Sie die Datei 'db2dbgm.bat' im Installationsverzeichnis 'bin' des Produkts aus.
- Die Unterstützung des Debuggings von gespeicherten Prozeduren auf DB2 V8 Linux-, Unix-, Windows- und z/OS-Servern ist eingeschränkt. Auf einem DB2 V8-Server, auf dem Fixpak 14 installiert ist, kann nur für SQL-Prozeduren ein Debugging durchgeführt werden. Damit der Debugger gegen einen DB2 V8-Server funktioniert, muss der Sitzungsmanager auch auf der Clientmaschine ausgeführt werden, auf der das Entwicklerprodukt installiert ist. Zum Starten des Sitzungsmanagers führen Sie die Datei 'db2dbgm.bat' im Installationsverzeichnis 'bin' des Produkts aus.
- ALIAS, MQT, NICKNAME und SYNONYM werden jetzt während der Roundtrip-Entwicklung unterstützt, aber nicht während der EJB-Zuordnung.
- Eingeschränkte Unterstützung für MySQL 4.1: Die folgenden Eigenschaften werden in der Sicht 'Eigenschaften' nicht ordnungsgemäß angezeigt: 'Eindeutiger Index', 'Spalten mit automatischer Erhöhung', 'Spaltenstandardwert für NULL' und 'Binär'. Außerdem werden C-Prozeduren und -Funktionen nicht unterstützt.
- Auslöser, Prüfungen auf Integritätsbedingungen und Sichten für Cloudscape®5.1 werden nicht unterstützt: Die Auslöser und die Prüfungen auf Integritätsbedingungen von Cloudscape 5.1 werden im Datenbankexplorer nicht angezeigt. Die Sichten von Cloudscape 5.1 fehlen in der Sicht 'Eigenschaften' im SQL-Teil. Sie können nicht DDL generieren oder Auslöser, Prüfungen auf Integritätsbedingungen oder Sichten von Cloudscape 5.1 rückentwickeln.
- Die Unterstützung von benutzerdefinierten strukturierten Datentypen in Oracle ist eingeschränkt: Der Name eines benutzerdefinierten strukturierten Datentyps wird nicht in die Tabellendefinition aufgenommen, wenn eine DDL für eine Oracle-Tabelle generiert wird.
- Die Aktualisierung eines Containerobjekts im Datenbankexplorer kann fehlschlagen und Ausnahmebedingung "Die Ressourcengruppe kann ohne eine Schreibtransaktion nicht geändert werden." verursachen, nachdem der Vergleichseditor geschlossen wurde, der zum Vergleichen von Objekten im Datenbankexplorercontainer geöffnet wurde. Der Vergleich einer Tabelle im physischen Datenmodell mit der ursprünglichen Quelle kann zum Beispiel diese Ausnahmebedingung verursachen.
Problemumgehung: In diesem Fall können Sie den Container auswählen, in dem das Containerobjekt enthalten ist, und erneut versuchen, eine Aktualisierung durchzuführen. Beispiel: Wenn die Aktualisierung einer Tabelle fehlschlägt, versuchen Sie, das Schema zu aktualisieren, in dem die Tabelle enthalten ist. Wenn die Wiederholungen fehlschlagen, müssen Sie die Verbindung der Datenbank trennen und anschließend die Verbindung wiederherstellen.
Wenn Sie eine Tabelle mit einer einzigen Spalte mit dem Datentyp XML oder eine Tabelle mit nicht eindeutigen Zeilen definieren, und anschließend im Tabelleneditor eine Zeile löschen, werden alle Zeilen gelöscht, die mit der ausgewählten Zeile identisch sind.
Problemumgehung: Verwenden Sie nicht den Editor für Tabellendaten zum Löschen einer Zeile in einer Tabelle mit doppelten Zeilen.