Der CLI/ODBC/JDBC-Treiber kann über "Client-Konfiguration - Unterstützung" oder über den ODBC-Treiber-Manager (wenn dieser auf dem System installiert ist) konfiguriert werden bzw. durch manuelles Editieren der Datei db2cli.ini. Weitere Informationen finden Sie in Installation und Konfiguration Ergänzung oder CLI Guide and Reference.
Das Standardverhalten des DB2 CLI/ODBC-Treibers kann geändert werden, indem Sie Werte für die beiden Schlüsselwörter PATCH1 und PATCH2 angeben. Die Eingabe dieser Werte kann über die Datei db2cli.ini oder die CLI-API SQLDriverConnect() bzw. SQLBrowseConnect() erfolgen.
Das Schlüsselwort PATCH1 wird angegeben, indem alle Schlüsselwerte zusammengezählt werden, die der Benutzer festlegen möchte. Wenn z. B. die Programmkorrekturen (Patches) 1, 2 und 8 angegeben würden, hätte PATCH1 den Wert 11. Nachfolgend finden Sie eine Beschreibung der einzelnen Schlüsselwortwerte und ihrer Auswirkung auf den Treiber:
1 - Veranlasst den Treiber, nach "count(exp)" zu suchen und durch "count(distinct exp)" zu ersetzen. Das ist erforderlich, da einige DB2-Versionen die Syntax "count(exp)" unterstützen, die auch von einigen ODBC-Anwendungen generiert wird. Für Microsoft-Anwendungen erforderlich, wenn der Server die Syntax "count(exp)" nicht unterstützt. 2 - Einige ODBC-Anwendungen werden abgefangen, wenn SQL_NULL_DATA in der Funktion SQLGetTypeInfo() für die Spalte LITERAL_PREFIX oder LITERAL_SUFFIX zurückgegeben wird. Zwingt den Treiber, statt dessen eine leere Zeichenfolge zurückzugeben. Erforderlich für Impromptu 2.0. 4 - Zwingt den Treiber, die Daten für die Eingabezeitmarke wie Datumsdaten zu behandeln, wenn Zeit- und Bruchkomponente der Zeitmarke den Wert Null haben. Erforderlich für Microsoft Access. 8 - Zwingt den Treiber, die Daten für die Eingabezeitmarke wie Zeitdaten zu behandeln, wenn die Datumskomponente der Zeitmarke den Wert 1899-12-30 hat. Erforderlich für Microsoft Access. 16 - Nicht verwendet. 32 - Zwingt den Treiber, keine Informationen zu Spalten des Typs SQL_LONGVARCHAR, SQL_LONGVARBINARY und SQL_LONGVARGRAPHIC zurückzugeben. Wirkt auf die Anwendung, als würden Langfelder nicht unterstützt. Erforderlich für Lotus 1-2-3. 64 - Zwingt den Treiber, Grafikausgabezeichenfolgen mit NULL zu beenden. Erforderlich für Microsoft Access in einer Doppelbyteumgebung. 128 - Zwingt den Treiber, die Abfrage "SELECT Config, nValue FROM MSysConf" an den Server durchzulassen. Derzeit gibt der Treiber einen Fehler mit SQLSTATE-Wert S0002 (Tabelle nicht gefunden) zurück. Erforderlich, wenn der Benutzer diese Konfigurationstabelle in der Datenbank erstellt hat und die Anwendung darauf zugreifen soll. 256 - Zwingt den Treiber, die Primärschlüsselspalten als erstes beim Aufruf SQLStatistics() zurückzugeben. Derzeit gibt der Treiber die Indizes nach Indexname sortiert zurück. Dies ist das ODBC-Standardverhalten. 512 - Zwingt den Treiber, bei SQLGetFunctions() für SQL_API_SQLTABLEPRIVILEGES für SQL_API_SQLTABLEPRIVILEGES und SQL_API_SQLCOLUMNPRIVILEGES den Wert FALSE zurückzugeben. 1024 - Zwingt den Treiber, SQL_SUCCESS statt SQL_NO_DATA_FOUND in SQLExecute() oder SQLExecDirect() zurückzugeben, wenn die ausgeführte Anweisung UPDATE oder DELETE keine Zeilen betrifft. Erforderlich für Visual Basic-Anwendungen. 2048 - Nicht verwendet. 4096 - Zwingt den Treiber, nach dem Schließen eines Cursors keine COMMIT-Anweisung abzusetzen, wenn er sich im Modus für automatisches Festschreiben befindet. 8192 - Zwingt den Treiber, nach dem Aufrufen einer gespeicherten Prozedur eine zusätzliche Ergebnismenge zurückzugeben. Diese besteht aus einer einzeiligen Ergebnismenge mit den Ausgabewerten der gespeicherten Prozedur. Für den Zugriff durch Powerbuild-Anwendungen. 32768 - Zwingt den Treiber, die Verarbeitung von Microsoft Query-Anwendungen mit DB2 MVS-Synonymen zu ermöglichen. 65536 - Zwingt den Treiber, manuell ein "G" vor Zeichenliterale zu setzen, bei denen es sich eigentlich um Grafikliterale handelt. Diese Programmkorrektur (Patch) muss immer bei der Arbeit in einer Doppelbyteumgebung angegeben werden. 131072 - Zwingt den Treiber, eine Zeitmarkenspalte als CHAR(26)-Spalte zu beschreiben, wenn diese Teil eines eindeutigen Index ist. Erforderlich für Microsoft-Anwendungen. 262144 - Zwingt den Treiber, die Pseudo-Katalogtabelle db2cli.procedures statt der Tabellen SYSCAT.PROCEDURES und SYSCAT.PROCPARMS zu verwenden. 524288 - Zwingt den Treiber, SYSTEM_TABLE_SCHEMA statt TABLE_SCHEMA bei der Bearbeitung einer Systemtabellenabfrage eines Systems mit DB2/400 Version 3.x zu verwenden. Führt zu einer Leistungsverbesserung. 1048576 - Zwingt den Treiber, eine Zeichenfolge der Länge Null in SQLPutData() wie SQL_NULL_DATA zu behandeln.
Das Schlüsselwort PATCH2 unterscheidet sich von PATCH1. Bei diesem Schlüsselwort werden mehrere Programmkorrekturen (Patches) durch Kommas getrennt angegeben. Wenn z. B. die Programmkorrekturen 1, 4 und 5 angegeben wären, hätte PATCH2 den Wert "1,4,5". Nachfolgend finden Sie eine Beschreibung der einzelnen Schlüsselwortwerte und ihrer Auswirkung auf den Treiber:
1 - Zwingt den Treiber, den Namen einer gespeicherten Prozedur in einer Anweisung CALL in Großschreibung umzusetzen. 2 - Nicht verwendet. 3 - Zwingt den Treiber, alle Argumente in Schemaaufrufen in Großbuchstaben umzusetzen. 4 - Zwingt den Treiber, für Schemaaufrufe (d. h. SQLColumns(), SQLProcedureColumns() usw.), die LIKE-Ergebnismenge der Version 2.1.2 statt einer LIKE-Ergebnismenge der Version 5 zurückzugeben. 5 - Zwingt den Treiber, die Verarbeitung von VARCHAR-Eingabespalten, bei denen die Zeiger auf Daten und Länge im Speicher aufeinander folgen, nicht zu optimieren. 6 - Zwingt den Treiber, eine Nachricht zurückzugeben, dass verschiebbare Cursor nicht unterstützt werden. Erforderlich für Visual Basic-Programme, wenn der DB2-Client Version 5 und der Server DB2 UDB Version 5 ist. 7 - Zwingt den Treiber, alle GRAPHIC-Spaltendatentypen dem Spaltendatentyp CHAR zuzuordnen. Erforderlich für eine Doppelbyteumgebung. 8 - Zwingt den Treiber, Katalogsuchargumente in Schemaaufrufen zu ignorieren. 9 - Keine COMMIT-Operation bei frühzeitigem Schließen des Cursors (Early Close). 10 - Nicht verwendet. 11 - Ausgeben, dass der Katalogname unterstützt wird (gespeicherte VB-Prozeduren). 12 - Entfernt doppelte Anführungszeichen aus Argumenten eines Schemaaufrufs (Visual Interdev). 13 - Kein Anhängen von Schlüsselwörtern aus db2cli.ini an Ausgabeverbindungszeichenfolgen. 14 - Ignoriert den Schemanamen bei SQLProcedures() und SQLProcedureColumns(). 15 - Verwendet den Punkt als Dezimaltrennzeichen bei der Zeichenausgabe. 16 - Rückgabe von beschreibenden Informationen bei jedem OPEN erzwingen. 17 - Keine Rückgabe von Spaltennamen bei DESCRIBE. 18 - Versuch, Literale durch Parametermarken zu ersetzen. 19 - Derzeit unterstützt DB2 MVS Version 4.1 nicht die ODBC-Syntax, in der runde Klammern in der Klausel ON einer erweiterten Verknüpfungsklausel zulässig sind. Wenn Sie PATCH2 aktivieren, entfernt der IBM DB2 ODBC-Treiber die runde Klammer, wenn sich die erweiterte Verknüpfungsklausel in einer ODBC-Escape-Zeichenfolge befindet. PATCH2 sollte nur für DB2 MVS 4.1 verwendet werden. 20 - Derzeit unterstützt DB2 unter MVS nicht das Vergleichselement BETWEEN mit Parametermarken als zwei Operanden (Ausdruck ? BETWEEN ?). Wenn Sie diese Programmkorrektur aktivieren, schreibt der IBM ODBC-Treiber das Vergleichselement um (Ausdruck >= ? und Ausdruck <= ?). 21 - Setzt alle Parameter OUTPUT für gespeicherte Prozeduren auf SQL_NULL_DATA. 22 - Veranlasst den IBM ODBC-Treiber, die erweiterte Verknüpfung als nicht unterstützt zu melden. Für Anwendungen, die SELECT DISTINCT col1 oder ORDER BY col1 generieren, wenn eine erweiterte Verknüpfungsanweisung verwendet wird, wobei col1 länger ist als 254 Zeichen, so dass DB2 UDB einen Fehler zurückgibt (DB2 UDB unterstützt bei dieser Syntax keine Spalten, die größer sind als 254 Byte). 23 - Keine Eingabeoptimierung von Parametern, die mit cbColDef=0 gebunden wurden. 24 - Problemumgehung bei Access für die Zuordnung von Zeitwerten als Zeichen. 25 - Problemumgehung bei Access für Dezimalspalten - entfernt abschließende Nullen bei der Zeichendarstellung. 26 - Keine Rückgabe des SQLCODE-Werts 464 an die Anwendung - gibt an, dass Ergebnismengen zurückgegeben werden. 27 - Zwingt SQLTables, den Wert des Schlüsselworts TABLETYPE zu verwenden, selbst wenn die Anwendung einen gültigen Wert angibt. 28 - Beschreibt reale Spalten als Doppelspalten. 29 - Problemumgehung bei ADO für Dezimalspalten - entfernt führende Nullen für x-Werte; dabei gilt: 1 > x > -1 (nur für einige MDAC-Versionen erforderlich). 30 - Inaktiviert die Cache-Optimierung der gespeicherten Prozedur. 31 - Meldet Statistikdaten für Aliasnamen bei einem Aufruf von SQLStatistics. 32 - Überschreibt die Verarbeitung für SQLCODE-Wert -727, Ursachencode 4. 33 - Gibt nach dem Konvertieren der Zeitmarke in den CHAR-Datentyp die ISO-Version zurück (nicht die ODBC-Version). 34 - Meldet CHAR FOR BIT DATA-Spalten als CHAR-Spalten. 35 - Meldet einen ungültigen Tabellennamen, wenn SQL_DESC_BASE_TABLE_NAME angefordert wird - Optimierung bei ADO für den Lesezugriff. 36 - Reserviert. 37 - Reserviert.