Vývoj aplikací: Programování klientských aplikací

8 8 8

Klíčové slovo OleDbReportIsLongForLongTypes konfigurace rozhraní CLI/ODBC

8
8
Popis klíčového slova:
8
Vytváří datové typy LONG s příznakem OLE DB s parametrem DBCOLUMNFLAGS_ISLONG. 8
8
Syntaxe v souboru db2cli.ini:
8
OleDbReportIsLongForLongTypes = 0 | 1 8
8
Odpovídající atribut příkazu:
8
SQL_ATTR_REPORT_ISLONG_FOR_LONGTYPES_OLEDB 8
8
Výchozí nastavení:
8
Typy LONG (LONG VARCHAR, LONG VARCHAR FOR BIT DATA, LONG VARGRAPHIC 8a LONG VARGRAPHIC FOR BIT DATA) neobsahují sadu příznaků DBCOLUMNFLAGS_ISLONG, což může způsobit, že budou sloupce použity v klauzuli WHERE. 8
8
Poznámky k použití:
8
  8
8
8

Stroj kurzoru klienta OLE DB a modul CommandBuilder Poskytovatele dat OLE DB .NET vygenerují aktualizaci a odstraní příkazy založené na informacích sloupce dodané Poskytovatelem rozhraní IBM DB2 OLE DB. Pokud generovaný příkaz obsahuje typ LONG v klauzuli WHERE, dojde k selhání příkazu, protože typy LONG nelze použít ve vyhledávání s operátorem rovnosti. Nastavení klíčového slova OleDbReportIsLongForLongTypes 8na hodnotu 1 způsobí, že Poskytovatel rozhraní IBM DB2 OLE DB opatří typy LONG (LONG VARCHAR, LONG 8VARCHAR FOR BIT DATA, LONG VARGRAPHIC a LONG VARGRAPHIC FOR BIT DATA) sadou příznaků DBCOLUMNFLAGS_ISLONG. Tím budou slupce typu LONG chráněny před použitím v klauzuli WHERE.

8 8 8

Klíčové slovo OleDbSQLColumnsSortByOrdinal konfigurace rozhraní CLI/ODBC

8
8
Popis klíčového slova:
8
Zajistí, aby příkaz produktu OLE DB IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) vrátil sadu řádků seřazenou podle sloupce ORDINAL_POSITION. 8
8
Syntaxe v souboru db2cli.ini:
8
OleDbSQLColumnsSortByOrdinal = 0 | 1 8
8
Odpovídající atribut příkazu:
8
SQL_ATTR_SQLCOLUMNS_SORT_BY_ORDINAL_OLEDB 8
8
Výchozí nastavení:
8
IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) vrátí sadu řádků seřazenou podle sloupců TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME. 8
8
Poznámky k použití:
8
  8
8
8

Specifikace produktu Microsoft OLE DB vyžaduje, aby příkaz IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) vracel sadu řádků seřazenou podle sloupců TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, 8COLUMN_NAME. Poskytovatel rozhraní IBM DB2 OLE DB je této specifikaci přizpůsoben. Aplikace používající modul Microsoft ODBC Bridge provider (MSDASQL) byly ovšem typicky kódovány tak, aby přijímaly sadu řádků seřazenou podle položky ORDINAL_POSITION. 8Nastavením klíčového slova OleDbSQLColumnsSortByOrdinal na hodnotu 1 zajistí, aby poskytovatel vracel sadu řádků seřazenou podle položky ORDINAL_POSITION.

8 8 8

Skupina vlastností zdroje dat DB2 pro Poskytovatele rozhraní IBM DB2 OLE DB

8

Poskytovatel rozhraní IBM DB2 OLE DB byl rozšířen o novou skupinu vlastností: Zdroj dat DB2. 8Sada vlastností pro Zdroj dat DB2 je DBPROPSET_DB2DATASOURCE.

8

Položka GUID pro sadu vlastností má hodnotu {0x8a80412a,0x7d94,0x4fec,{0x87,0x3e,0x6c,0xd1,0xcd,0x42,0x0d,0xcd}}

8

Sada DBPROPSET_DB2DATASOURCE obsahuje tři vlastnosti:

8 8
8DB2PROP_REPORTISLONGFORLONGTYPES 8

8
#define DB2PROP_REPORTISLONGFORLONGTYPES 4
8Property group: DB2 Data Source 
8Property set: DB2PROPSET_DATASOURCE
8Type: VT_BOOL
8Typical R/W: R/W
8Description: Report IsLong for Long Types
8

Stroj kurzoru klienta OLE DB a modul CommandBuilder Poskytovatele dat OLE DB .NET vygenerují aktualizaci a odstraní příkazy založené na informacích sloupce dodané Poskytovatelem rozhraní IBM DB2 OLE DB. Pokud generovaný příkaz obsahuje typ LONG v klauzuli WHERE, dojde k selhání příkazu, protože typy LONG nelze použít ve vyhledávání s operátorem rovnosti.

8 8888888888888888888
Tabulka 17. Hodnoty DB2PROP_REPORTISLONGFORLONGTYPES
Hodnoty Význam
VARIANT_TRUE Způsobí, že Poskytovatel rozhraní IBM DB2 OLE DB opatří typy LONG (LONG VARCHAR, LONG 8VARCHAR FOR BIT DATA, LONG VARGRAPHIC a LONG VARGRAPHIC FOR BIT DATA) sadou příznaků DBCOLUMNFLAGS_ISLONG. Tím budou slupce typu LONG chráněny před použitím v klauzuli WHERE.
VARIANT_FALSE Parametr DBCOLUMNFLAGS_ISLONG není nastaven pro typy LONG VARCHAR, LONG 8VARCHAR FOR BIT DATA, LONG VARGRAPHIC a LONG VARGRAPHIC FOR BIT DATA. Toto nastavení je výchozí.
8
8DB2PROP_RETURNCHARASWCHAR 8

8
#define DB2PROP_RETURNCHARASWCHAR 2
8Property group: DB2 Data Source 
8Property set: DB2PROPSET_DATASOURCE
8Type: VT_BOOL
8Typical R/W: R/W
8Description: Return Char as WChar
8

8 8888888888888888888
Tabulka 18. Hodnoty DB2PROP_RETURNCHARASWCHAR
Hodnoty Význam
VARIANT_TRUE Modul OLE DB popisuje sloupce typu CHAR, VARCHAR, LONG VARCHAR, 8nebo CLOB jako DBTYPE_WSTR. Kódová stránka dat obsažená v položce ISequentialStream bude mít hodnotu UCS-2. Toto nastavení je výchozí.
VARIANT_FALSE Modul OLE DB popisuje sloupce typu CHAR, VARCHAR, LONG VARCHAR, 8nebo CLOB jako DBTYPE_STR. Kódová stránka dat obsažená v položce ISequentialStream bude lokální kódovou stránkou klienta.
8
8DB2PROP_SORTBYORDINAL 8

8
#define DB2PROP_SORTBYORDINAL 3
8Property group: DB2 Data Source 
8Property set: DB2PROPSET_DATASOURCE
8Type: VT_BOOL
8Typical R/W: R/W
8Description: Sort By Ordinal
8

Specifikace produktu Microsoft OLE DB vyžaduje, aby příkaz IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) vracel sadu řádků seřazenou podle sloupců TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, 8COLUMN_NAME. Poskytovatel rozhraní IBM DB2 OLE DB je této specifikaci přizpůsoben. Aplikace používající modul Microsoft ODBC Bridge provider (MSDASQL) byly ovšem typicky kódovány tak, aby přijímaly sadu řádků seřazenou podle položky ORDINAL_POSITION.

8 8888888888888888888
Tabulka 19. Hodnoty DB2PROP_SORTBYORDINAL
Hodnoty Význam
VARIANT_TRUE Zajistí, aby poskytovatel vracel sadu řádků seřazenou podle položky ORDINAL_POSITION.
VARIANT_FALSE Zajistí, aby poskytovatel vracel sadu řádků seřazenou podle položek TABLE_CATALOG, 8TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME. Toto nastavení je výchozí.
8 8 8

Nesprávná syntaxe adresy URL v diagramu syntaxe DB2Binder

8

V tématu "Instalace ovladače DB2 Universal JDBC" diagram syntaxe DB2Binder nesprávně definuje syntaxi URL pro ovladače DB2 Universal JDBC. Správná reprezentace syntaxe URL pro diagram DB2Binder je uvedena v následujícím diagramu:

8
8Syntaxe DB2Binder
8 8
Číst syntaktický diagramVynechat zobrazení syntaktického diagramu8>>-java--com.ibm.db2.jcc.DB2Binder------------------------------>
8
8>---url jdbc:db2://server-+---------+-/databáze----------------->
8                          '-:--port-'
8
8>---user jméno-uživatele---password heslo----------------------->
8
8>--+------------------+--+---------------------------+---------->
8   '--size celé-číslo-'  '--collection jméno-kolekce-'
8
8>--+----------------------------------+--+-------+-------------><
8   |              .-,---------------. |  '--help-'
8   |              V                 | |
8   '--tracelevel ---volba-trasování-+-'
8
8
8 8
8 8 8

Přesměrování klientů ovladače DB2 Universal JDBC

8

Funkce automatické přesměrování klientů v produktu DB2 Universal Database (UDB) pro systémy Linux, UNIX, a Windows umožňuje klientským aplikacím zotavit se z přerušení komunikace 8se serverem. Aplikace proto mohou pokračovat v práci s minimálním přerušením.

8

Kdykoli se server uzamkne, obdrží každý 8klient připojený k tomuto serveru chybu 8komunikace, která ukončí připojení a vyústí 8v chybu aplikace. V případech, kdy záleží na 8dostupnosti, byste měli mít redundantní 8nastavení nebo podporu překonání selhání. (Překonání selhání je schopnost serveru 8převzít operace při selhání jiného serveru.) Klient ovladače DB2 Universal 8JDBC se vždy pokusí znovu navázat 8připojení k novému serveru nebo k serveru původnímu, který může být spuštěn na uzlu překonání selhání. Po novém navázání 8připojení obdrží aplikace výjimku SQLException, která 8informuje o selhání transakce. Aplikace ale může 8pokračovat další transakcí.

8
8Omezení 8

8
8
8Postup 8

Poté, co administrátor databáze zadá 8v konkrétní databázi na instanci serveru umístění 8alternativního serveru, bude umístění primárního a alternativního 8serveru vráceno v čase připojení zpět klientovi. Ovladač DB2 Universal JDBC vytvoří instanci odkazovatelného objektu DB2ClientRerouteServerList a uloží tuto instanci do své dočasné paměti. Pokud 8je komunikace přerušena, pokusí se ovladač DB2 Universal JDBC znovu navázat připojení, a to pomocí informací o serveru, které byly ze serveru vráceny.

8

Vlastnost zdroje dat clientRerouteServerListJNDIName 8poskytuje na klientovi další podporu přesměrování 8klienta. Parametr clientRerouteServerListJNDIName má dvě funkce: 8

8 8

Vlastnost clientRerouteServerListJNDIName označuje referenci JNDI do instance DB2ClientRerouteServerList v úložišti JNDI v informacích alternativního serveru. Po úspěšném připojení k primárnímu serveru budou 8informace alternativního serveru, udávané vlastností 8clientRerouteServerListJNDIName, přepsány informacemi z tohoto 8serveru. Je-li definována vlastnost clientRerouteServerListJNDIName, ovladač 8DB2 Universal JDBC se po překonání selhání pokusí 8předat aktualizované informace do úložiště JNDI. Pokud je definována vlastnost clientRerouteServerListJNDIName, použijí se pro připojení informace primárního serveru zadané ve vlastnosti DB2ClientRerouteServerList. Není-li primární server určen, použijí se informace o jménu serveru zadané ve zdroji dat.

8

Položka DB2ClientRerouteServerList je serializovatelný modul Java Bean se čtyřmi vlastnostmi:

8

Pro přístup k těmto vlastnostem jsou k dispozici metody pro příjem a ukládání. Definice třídy DB2ClientRerouteServerList je následující: 8

8
package com.ibm.db2.jcc;
8public class DB2ClientRerouteServerList 
8  implements java.io.Serializable,
8  javax.naming.Referenceable
8{
8  public String[] alternateServerName;
8  public synchronized void 
8    setAlternateServerName(String[] alternateServer);
8  public String[] getAlternateServerName();
8  public int[] alternatePortNumber;
8  public synchronized void 
8    setAlternatePortNumber(int[] alternatePortNumberList);
8  public int[] getAlternatePortNumber();
8  
8  public synchronized void 
8    setPrimaryServerName (String primaryServerName);
8  public String getPrimaryServerName ();
8  public synchronized void setPrimaryPortNumber (int primaryPortNumber)
8  public int getPrimaryPortNumber (); 
8}
8

Nově navázané připojení po překonání selhání je 8konfigurováno s původními vlastnostmi zdroje dat, až 8na jméno serveru a číslo portu. Kromě toho všechny 8speciální registry DB2 UDB, které byly během původního 8připojení změněny, budou během připojení prostřednictvím ovladače DB2 Universal JDBC po překonání 8selhání znovu nastaveny.

8

Dojde-li k chybě komunikace, pokusí se ovladač 8DB2 Universal JDBC nejdříve zotavit primární server. Dojde-li 8k selhání, pokusí se ovladač 8připojit k alternativnímu umístění (překonání 8selhání). Po navázání připojení předá ovladač aplikaci 8výjimku java.sql.SQLException s kódem SQLCODE -4498, 8která aplikaci upozorní, že došlo k automatickému novému připojení k alternativnímu serveru. Aplikace pak může pokus o transakci 8zopakovat.

8
8Postup při trvalém nastavení vlastnosti DB2ClientRerouteServerList 8

Chcete-li nastavit úložný prostor rak, aby nastavil vlastnost DB2ClientRerouteServerList trvale, postupujte takto:

8
    8
  1. Vytvořte instanci položky DB2ClientRerouteServerList a vytvořte vazbu této instance na registr JNDI. Příklad: 8 8
    // Create a starting context for naming operations
    8InitialContext registry = new InitialContext();
    8// Create a DB2ClientRerouteServerList object
    8DB2ClientRerouteServerList address=new DB2ClientRerouteServerList();
    8
    8// Set the port number and server name for the primary server
    8address.setPrimaryPortNumber(50000);
    8address.setPrimaryServerName("mvs1.sj.ibm.com");
    8
    8// Set the port number and server name for the alternate server
    8int[] port = {50002};
    8String[] server = {"mvs3.sj.ibm.com"};
    8address.setAlternatePortNumber(port);
    8address.setAlternateServerName(server);
    8    
    8registry.rebind("serverList", address);
    
  2. 8
  3. Přiřaďte jméno JNDI objektu DB2ClientRerouteServerList vlastnosti zdroje dat clientRerouteServerListJNDIName. Příklad: 8 8
    datasource.setClientRerouteServerListJNDIName("serverList");
7 7 7

Přizpůsobení vlastností konfigurace 7ovladače DB2 Universal JDBC

7

Vlastnosti konfigurace ovladače DB2 Universal JDBC umožňují nastavit hodnoty vlastností týkajících se 7ovladače. Tato nastavení budou platit pro všechny aplikace a instance DataSource. Nastavení 7je možné změnit, aniž byste museli měnit zdrojový kód 7aplikace nebo charakteristiku zdroje dat.

7

Všechna nastavení vlastností konfigurace ovladače DB2 Universal JDBC mají následující 7tvar: 7

7
vlastnost=hodnota
7

Pokud vlastnost konfigurace začíná řetězcem 7db2.jcc.override, bude tato vlastnost použitelná pro 7všechna připojení a přepíše všechny vlastnosti 7připojení a zdrojů dat se stejným jménem vlastnosti. Jestliže vlastnost konfigurace začíná řetězcem db2.jcc 7or db2.jcc.default, je hodnota vlastnosti 7konfigurace standardní. Nastavení vlastností 7zdrojů dat nebo připojení tuto hodnotu 7přepíší.

7
7Postup 7

Chcete-li nastavit vlastnosti konfigurace, 7postupujte takto:

7

7 7

Lze nastavit následující vlastnosti konfigurace ovladače DB2 Universal JDBC. 7Všechny vlastnosti jsou nepovinné.

7
7
db2.jcc.override.traceFile
7
Povoluje ovladači DB2 Universal JDBC trasovat kód ovladače Java a určit jméno, od kterého jsou odvozena 7jména trasovacích souborů. 7

Zadejte 7úplné jméno souboru pro hodnotu vlastnosti 7db2.jcc.override.traceFile.

7

Vlastnost db2.jcc.override.traceFile přepíše 7vlastnost traceFile pro objekty Connection nebo 7DataSource.

7

Například následující zadání vlastnosti 7db2.jcc.override.traceFile povoluje trasování kódu 7Java 7ovladače 7DB2 7Universal JDBC do souboru jménem 7/SYSTEM/tmp/jdbctrace : 7

7
db2.jcc.override.traceFile=/SYSTEM/tmp/jdbctrace

7Vlastnosti 7trasování byste měli nastavovat podle pokynů softwarové podpory společnosti IBM.

7
7
db2.jcc.sqljUncustomizedWarningOrException
7
Určuje akci, kterou podnikne ovladač DB2 Universal JDBC při spuštění nepřizpůsobené aplikace 7SQLJ. Vlastnost 7db2.jcc.sqljUncustomizedWarningOrException může mít 7následující hodnoty: 7
7
0
7
Ovladač DB2 Universal JDBC při spuštění nepřizpůsobené aplikace SQLJ negeneruje varování ani 7výjimku. Toto nastavení je výchozí. 7
7
1
7
Ovladač DB2 Universal JDBC při spuštění 7nepřizpůsobené aplikace SQLJ generuje varování. 7
7
2
7
Ovladač DB2 Universal JDBC při spuštění 7nepřizpůsobené aplikace SQLJ generuje výjimku. 7
7
7
7
7 7 7

Odebrána funkce db2secFreeToken

7

Funkce db2secFreeToken (volná paměť držená 7prvkem) již není součástí rozhraní API modulu 7plug-in ověření uživatele 7db2secGssapiServerAuthFunctions_1.

8 8 8

Pečlivě implementujte vlastní moduly plug-in zabezpečení

8

Integrita instalace produktu DB2 Universal Database (UDB) může být ohrožena, není-li implementace modulů plug-in zabezpečení odpovídajícím způsobem kódována, kontrolována a testována. Produkt DB2 UDB obsahuje opatření proti mnoha běžným typům selhání, ale nemůže zajistit úplnou integritu při implementaci uživatelem vytvořených modulů plug-in zabezpečení.

7 7 7

Moduly plug-in zabezpečení

7

Používáte-li vlastní přizpůsobené moduly plug-in 7zabezpečení, můžete v příkazu připojení zadaném pomocí 7příkazového procesoru nebo v dynamickém příkazu SQL 7použít jméno uživatele až o 255 znacích.

7 7 7

Rozhraní API modulu plug-in 7zabezpečení

7

Pro rozhraní API db2secGetGroupsForUser, 7db2secValidatePassword a db2secGetAuthIDs může mít 7vstupní parametr dbname 7hodnotu NULL a odpovídající vstupní parametr délky 7dbnamelen bude nastaven 7na hodnotu 0.

7 7 7

Konvence při pojmenovávání modulů plug-in (Linux a UNIX)

7

Přípona .so je nyní přijímána jako přípona jména souboru pro uživatelské 7knihovny modulů plug-in zabezpečení, a to ve všech platformách Linux and UNIX.

7

V systému AIX mohou mít knihovny modulů plug-in zabezpečení příponu .a nebo .so. Pokud obě verze 7knihovny modulu plug-in již existují, bude použita 7verze .a.

7

V systému HP-UX na procesoru PA-RISC mohou mít 7knihovny modulů plug-in 7zabezpečení příponu .sl 7nebo .so. Pokud obě 7verze knihovny modulu plug-in již existují, bude 7použita verze .sl.

7

Na všech ostatních platformách Linux a UNIX je přípona .so jedinou podporovanou příponou jména souboru pro knihovny 7modulů plug-in zabezpečení.

7 7 7

Omezení v knihovnách modulů plug-in 7zabezpečení

7

V systému AIX mohou mít knihovny modulů plug-in 7zabezpečení příponu .a nebo .so. Mechanismus 7pro načítání knihoven modulů plug-in závisí na použité 7příponě:

7
7
Knihovny modulů plug-in s 7příponou jména souboru .a
7
Knihovny modulů plug-in s příponou 7jména souboru .a jsou 7pokládány za archivy obsahující členy sdílených 7objektů. Tito členové se musí jmenovat 7shr.o (32bitová verze) 7nebo shr64.o (64bitová verze). Samostatný 7archiv může obsahovat 32bitové i 64bitové členy a 7implementovat je v obou typech platforem. 7

Chcete-li 7například sestavit knihovnu modulů plug-in stylu 732bitového archivu, postupujte takto: 7

7
  xlc_r -qmkshrobj -o shr.o MyPlugin.c -bE:MyPlugin.exp
7  ar rv MyPlugin.a shr.o
7
7
Knihovny modulů plug-in s příponou 7jména souboru .so
7
Knihovny modulů plug-in s příponou jména souboru 7.so jsou pokládány za 7dynamicky načítatelné sdílené objekty. Takový objekt 7je buď 32bitový, nebo 64bitový, v závislosti 7na volbách kompilátoru a sestavovacího programu 7použitých při jeho 7sestavení. Chcete-li například sestavit 32bitovou 7knihovnu 7modulů plug-in, postupujte 7takto: 7 7
  xlc_r -qmkshrobj -o MyPlugin.so MyPlugin.c -bE:MyPlugin.exp
7
7
7

Na všech ostatních platformách, jiných než AIX, jsou knihovny modulů plug-in vždy pokládány za 7dynamicky načítatelné sdílené objekty.

8 8 8

Moduly plug-in zabezpečení GSS-API nepodporují ověřování prostřednictvím více toků

8

Ověřování GSS-API je omezeno na tok jednoho prvku z klienta na server a jednoho prvku ze serveru na klienta. Tyto prvky se získávají z parametru gss_init_sec_context() na klientovi a gss_accept_sec_context() na serveru. Moduly plug-in GSS-API, které se pokusí o práci s dalšími toky, vygenerují neočekávanou chybu modulu plug-in zabezpečení a způsobí tak selhání připojení.

8 8 8

Moduly plug-in zabezpečení GSS-API nepodporují šifrování zpráv a podepisování

8

Šifrování zpráv a podepisování není v modulech plug-in zabezpečení GSS-API podporováno.

7 7 7

Implicitní ukončení transakcí 7v samostatných aplikacích

7

Všechna ukončení aplikací (běžná 7i nestandardní) implicitně odvolají 7nevyřízené transakce, a to bez závislosti na 7operačním systému.

8 8 8

Podpora distribuovaných transakcí

8

V dokumentaci Novinky produktu DB2 Universal Database (UDB) verze 8.2 jsou v sekci týkající se vylepšení ovladače DB2 Universal JDBC 8o podporu distribuovaných transakcí uvedeny chybné informace. 8Poslední věta této sekce je nesprávná. Správná informace je následující:

8

Od verze 8.2 nabízí produkt DB2 UDB podporu zpracování distribuovaných transakcí, která odpovídá specifikaci XA. Tato podpora implementuje specifikace Java 2 8Platform, Enterprise Edition (J2EE) Java Transaction Service (JTS) a Java Transaction API (JTA).

[ Začátek stránky |Předchozí stránka | Další stránka | Obsah ]