OLE DB 的客户机游标引擎和 OLE DB .NET 数据提供程序的 CommandBuilder 根据 IBM DB2 OLE DB 提供程序提供的列信息来生成更新和删除语句。如果生成的语句在 WHERE 子句中包含 LONG 类型,则该语句将失败,这是因为不能在具有等号运算符的搜索中使用 LONG 类型。将关键字 8OleDbReportIsLongForLongTypes 设置为 1 将使 IBM DB2 OLE DB 提供程序报告设置了 DBCOLUMNFLAGS_ISLONG 标志的 8LONG 类型(LONG VARCHAR、LONG VARCHAR FOR BIT DATA、LONG VARGRAPHIC 和 LONG VARGRAPHIC FOR BIT DATA)。这可防止在 WHERE 子句中使用 LONG 列。
8 8 8Microsoft OLE DB 规范要求 IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) 返回按 8TABLE_CATALOG、TABLE_SCHEMA、TABLE_NAME 和 COLUMN_NAME 列排序的行集。IBM DB2 OLE DB 提供程序遵守该规范。但是,通常已经编写了使用 Microsoft ODBC 桥提供程序(MSDASQL)的应用程序来获取按 8ORDINAL_POSITION 排序的行集。将 OleDbSQLColumnsSortByOrdinal 关键字设置为 1 将使提供程序返回按 ORDINAL_POSITION 排序的行集。
8 8 8IBM DB2 OLE DB 提供程序已经添加了新的属性组:DB2 数据源。DB2 数据源的属性集为 DBPROPSET_DB2DATASOURCE。
8属性集的 GUID 为 {0x8a80412a,0x7d94,0x4fec,{0x87,0x3e,0x6c,0xd1,0xcd,0x42,0x0d,0xcd}}
8DBPROPSET_DB2DATASOURCE 具有三种属性:
8#define DB2PROP_REPORTISLONGFORLONGTYPES 4 8属性组:DB2 数据源 8属性集:DB2PROPSET_DATASOURCE 8类型:VT_BOOL 8典型 R/W:R/W 8描述:报告 Long 类型的 IsLong8
OLE DB 的客户机游标引擎和 OLE DB .NET 数据提供程序的 CommandBuilder 根据 IBM DB2 OLE DB 提供程序提供的列信息来生成更新和删除语句。如果生成的语句在 WHERE 子句中包含 LONG 类型,则该语句将失败,这是因为不能在具有等号运算符的搜索中使用 LONG 类型。
8 8值 | 8含义 | 8
---|---|
VARIANT_TRUE | 8将使 IBM DB2 OLE DB 提供程序报告设置了 DBCOLUMNFLAGS_ISLONG 标志的 8LONG 类型(LONG VARCHAR、LONG VARCHAR FOR BIT DATA、LONG VARGRAPHIC 和 LONG VARGRAPHIC FOR BIT DATA)。这可防止在 WHERE 子句中使用 LONG 列。 | 8
VARIANT_FALSE | 8没有为 LONG VARCHAR、LONG VARCHAR FOR BIT DATA、LONG VARGRAPHIC 和 LONG VARGRAPHIC FOR BIT DATA 设置 DBCOLUMNFLAGS_ISLONG。这是缺省情况。 | 8
#define DB2PROP_RETURNCHARASWCHAR 2 8属性组:DB2 数据源 8属性集:DB2PROPSET_DATASOURCE 8类型:VT_BOOL 8典型 R/W:R/W 8描述:作为 WChar 来返回 Char8 8 8
值 | 8含义 | 8
---|---|
VARIANT_TRUE | 8OLE DB 将类型为 CHAR、VARCHAR、LONG VARCHAR 或 CLOB 的列描述为 DBTYPE_WSTR。ISequentialStream 中隐含的数据的代码页将为 UCS-2。这是缺省值。 | 8
VARIANT_FALSE | 8OLE DB 将类型为 CHAR、VARCHAR、LONG VARCHAR 或 CLOB 的列描述为 DBTYPE_STR。ISequentialStream 中隐含的数据的代码页将为客户机的本地代码页。 | 8
#define DB2PROP_SORTBYORDINAL 3 8属性组:DB2 数据源 8属性集:DB2PROPSET_DATASOURCE 8类型:VT_BOOL 8典型 R/W:R/W 8描述:按序数排序8
Microsoft OLE DB 规范要求 IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) 返回按 8TABLE_CATALOG、TABLE_SCHEMA、TABLE_NAME 和 COLUMN_NAME 列排序的行集。IBM DB2 OLE DB 提供程序遵守该规范。但是,通常已经编写了使用 Microsoft ODBC 桥提供程序(MSDASQL)的应用程序来获取按 8ORDINAL_POSITION 排序的行集。
8 8值 | 8含义 | 8
---|---|
VARIANT_TRUE | 8将使提供程序返回按 ORDINAL_POSITION 排序的行集。 | 8
VARIANT_FALSE | 8将使提供程序返回按 TABLE_CATALOG、TABLE_SCHEMA、TABLE_NAME 和 COLUMN_NAME 排序的行集。这是缺省值。 | 8
在“安装 DB2 通用 JDBC 驱动程序”这一主题中,DB2Binder 语法图不正确地定义了 DB2 通用 JDBC 驱动程序的 URL 语法。下图中显示了 DB2Binder 的 URL 语法的正确表示:
8DB2 Universal Database(DB2 通用数据库,UDB)Linux 版、UNIX 版、 版和 Windows 版中的自动客户机重新路由功能允许客户机应用程序从与服务器的通信断开恢复,以便它们能继续处理最小的中断。
8每当服务器锁定时,连接至该服务器的每个客户机都会接收到一个通信错误,它会终止连接并导致应用程序错误。如果可用性非常重要,则应具有冗余设置或故障转移支持。(故障转移是在一个服务器失效时另一个服务器接管操作的能力。)在任一情况下,DB2 通用 JDBC 驱动程序客户机将尝试重新建立与新服务器或原始服务器的连接,这可能在故障转移节点上运行。重新建立连接后, 8应用程序将接收到 SQLException 异常,通知它事务失败,但是应用程序可以继续进行下一事务。
8在数据库管理员在服务器实例中的特定数据库中指定备用服务器位置之后,主服务器位置和备用服务器位置将在连接时返回至客户机。DB2 通用 JDBC 驱动程序创建可引用对象 8DB2ClientRerouteServerList 的实例,并将该实例存储在它的瞬态内存中。如果通信中断,DB2 通用 JDBC 驱动程序将尝试使用从服务器返回的服务器信息来重新建立连接。
8clientRerouteServerListJNDIName 数据源属性在客户机上提供附加客户机重新路由支持;clientRerouteServerListJNDIName 具有两个功能:
8clientRerouteServerListJNDIName 标识对备用服务器信息的 8JNDI 资源库中的 DB2ClientRerouteServerList 实例的 JNDI 引用。在成功连接至主服务器之后, 8clientRerouteServerListJNDIName 提供的备用服务器信息将被来自该服务器的信息覆盖。如果定义了 8clientRerouteServerListJNDIName 属性,则在故障转移之后,DB2 通用 JDBC 驱动程序将尝试把更新后的信息传播至 JNDI 存储。如果指定了 8clientRerouteServerListJNDIName,则将把在 DB2ClientRerouteServerList 中指定的主服务器信息用于连接。如果未指定主服务器,则将使用在数据源上指定的 serverName 信息。
8DB2ClientRerouteServerList 是具有以下四种属性的可序列化 Java bean:
8提供了用于访问这些属性的 Getter 和 setter 方法。DB2ClientRerouteServerList 类的定义为如下所示:
8package 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
新建立的故障转移连接是使用原始数据源属性配置的,但是服务器名称和端口号除外。此外,在原始连接期间修改的任何 DB2 UDB 专用寄存器将在故障转移连接中使用 DB2 通用 JDBC 驱动程序来重新建立。
8在发生通信故障时,DB2 通用 JDBC 驱动程序首先尝试恢复至主服务器。如果恢复至主服务器失败,驱动程序就会尝试连接至备用位置(故障转移)。重新建立连接之后,该驱动程序会向应用程序抛出 8java.sql.SQLException 及 SQLCODE -4498,以便对应用程序指示已经自动与备用服务器重新建立了连接。于是该应用程序重试该事务。
要设置存储器以使 DB2ClientRerouteServerList 保持持久,遵循下列步骤:
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);
datasource.setClientRerouteServerListJNDIName("serverList");
DB2 通用 JDBC 驱动程序配置属性允许您设置具有驱动程序范围作用域的属性值。这些设置将应用于各个应用程序和数据源实例。可以更改这些设置而不必更改应用程序源代码或数据源特征。
7每个 DB2 通用 JDBC 驱动程序配置属性设置使用以下格式:
7property=value
7如果配置属性以 db2.jcc.override 开头,则该配置属性适用于所有连接并将覆盖任何具有相同属性名的连接或数据源属性。如果配置属性以 db2.jcc 7或 db2.jcc.default 开头,则配置属性值将为缺省值。连接或数据源属性设置将覆盖该值。
7要设置配置属性:
7 7对于独立 Java 应用程序,可通过在执行 java 命令时对每个配置属性指定 -Dproperty=value 来将配置属性设置为 Java 系统属性。
对于独立 Java 应用程序,可通过在执行 java 命令时指定 -Ddb2.jcc.propertiesFile=path 选项来设置配置属性。
DB2JccConfiguration.properties 可能是独立文件,也可能包括在 JAR 文件中。
7如果 DB2JccConfiguration.properties 7是独立文件,则 DB2JccConfiguration.properties 的路径必须在 CLASSPATH 并置中。
7如果 DB2JccConfiguration.properties 7在 JAR 文件中,该 JAR 文件必须在 CLASSPATH 并置中。
可设置下列 DB2 通用 JDBC 驱动程序配置属性。所有属性都是可选的。
7对 db2.jcc.override.traceFile 属性值指定全限定文件名。
7db2.jcc.override.traceFile 属性将覆盖连接或数据源对象的跟踪文件属性。
7例如,对 7db2.jcc.override.traceFile 指定以下设置将允许跟踪 DB2 通用 JDBC 驱动程序 Java 代码并记录至名为 /SYSTEM/tmp/jdbctrace 的文件:
7db2.jcc.override.traceFile=/SYSTEM/tmp/jdbctrace
应在 IBM 软件支持机构的指导下设置跟踪属性。
7db2secFreeToken 函数(标记拥有的可用内存)不再是 db2secGssapiServerAuthFunctions_1 用户认证插件 API 的一部分。
8 8 8如果安全性插件的部署未经过充分编码、复查和测试,则 DB2 Universal Database(DB2 通用数据库,UDB)安装的完整性会受到损坏。DB2 UDB 对于许多常见类型的故障采取了一些预防措施,但是,它并不能保证在部署用户编写的安全性插件时具有完整的完整性。
7 7 7如果要使用您自己的定制安全性插件,可在通过 CLP 发出的连接语句或动态 SQL 语句上使用最多 255 个字符的用户标识。
7 7 7对于 db2secGetGroupsForUser、db2secValidatePassword 和 db2secGetAuthIDs API,输入参数 7dbname 可为空,而其对应长度输入参数 dbnamelen 将设置为 0。
7 7 7在所有 Linux 和 UNIX 平台上,现在接受将 .so 作为用户编写的安全性插件库的文件扩展名。
7在 AIX 上,安全性插件库可以具有扩展名 .a 或 .so。如果插件库同时存在两个版本,则使用 .a 版本。
7对于 HP-UX on PA-RISC,安全性插件库可以具有扩展名 .sl 7或 .so。如果插件库同时存在两个版本,则使用 .sl 版本。
7在所有其它 Linux 和 UNIX 平台上,.so 是安全性插件库唯一支持的文件扩展名。
7 7 7在 AIX 上,安全性插件库可以具有文件扩展名 .a 或 .so。用于装入插件库的机制取决于使用哪个扩展名:
7例如,要构建 732 位归档式插件库:
7 xlc_r -qmkshrobj -o shr.o MyPlugin.c -bE:MyPlugin.exp
7 ar rv MyPlugin.a shr.o
7xlc_r -qmkshrobj -o MyPlugin.so MyPlugin.c -bE:MyPlugin.exp7
在除了 AIX 之外的所有平台上,安全性插件库总是被假定为动态可装入的共享对象。
8 8 8GSS-API 认证仅限于使一个令牌从客户机流至服务器和使一个令牌从服务器流至客户机。这些令牌是从客户机上的 gss_init_sec_context() 和服务器上的 gss_accept_sec_context() 获得的。尝试更多流的 GSS-API 插件将生成安全性插件意外错误,从而导致连接失败。
8 8 8消息加密和签名在 GSS-API 安全性插件中不可用。
7 7 7所有应用程序终止(正常和异常)隐式回滚未完成的工作单元,不管操作系统如何都是如此。
8 8 8在 DB2 Universal Database(DB2 通用数据库,UDB)版本 8.2 的“新增内容”文档中,『DB2 通用 JDBC 驱动程序改进』一节中的分布式事务支持信息中具有不正确的信息。这一节的最后一句不正确。正确信息应为:
8从版本 8.2 开始,DB2 UDB 支持符合 XA 规范的分布式事务处理。此支持实现 Java 2 Platform, Enterprise Edition(J2EE)Java 事务服务(JTS)和 Java 事务 API(JTA)规范。
[ 页的顶部 |上一页 | 下一页 | 目录 ]