O mecanismo do cursor de cliente do OLE DB e o CommandBuilder do OLE DB .NET Data Provider geram instruções de atualização e exclusão com base nas informações da coluna fornecidas pelo IBM DB2 OLE DB Provider. Se a instrução gerada contiver um tipo LONG na cláusula WHERE, a instrução irá falhar porque os tipos LONG não podem ser utilizados em uma pesquisa com um operador de igualdade. Definir a palavra-chave OleDbReportIsLongForLongTypes para 1 fará com que o IBM DB2 OLE DB Provider relate tipos LONG (LONG VARCHAR, LONG VARCHAR FOR BIT DATA, LONG VARGRAPHIC e LONG VARGRAPHIC FOR BIT DATA) com o conjunto de sinalizadores DBCOLUMNFLAGS_ISLONG. Isso impedirá que as colunas longas sejam utilizadas na cláusula WHERE.
A especificação OLE DB da Microsoft requer que IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) retorne o conjunto de linhas classificado pelas colunas TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME. O IBM DB2 OLE DB Provider está de acordo com a especificação. Porém, os aplicativos que utilizam o provedor Microsoft ODBC Bridge (MSDASQL) foram tipicamente codificados para obter o conjunto de linhas classificado pelo ORDINAL_POSITION. Definir a palavra-chave OleDbSQLColumnsSortByOrdinal para 1 fará com que o provedor retorne um conjunto de linhas classificado pelo ORDINAL_POSITION.
O IBM DB2 OLE DB Provider incluiu um novo grupo de propriedade: DB2 Data Source. O conjunto de propriedades para DB2 Data Source é DBPROPSET_DB2DATASOURCE.
O GUID para o conjunto de propriedades é {0x8a80412a,0x7d94,0x4fec,{0x87,0x3e,0x6c,0xd1,0xcd,0x42,0x0d,0xcd}}
DBPROPSET_DB2DATASOURCE tem três propriedades:
#define DB2PROP_REPORTISLONGFORLONGTYPES 4 Grupo de propriedades: DB2 Data Source Conjunto de propriedades: DB2PROPSET_DATASOURCE Tipo: VT_BOOL R/W típico: R/W Descrição: Relata IsLong para Tipos Longos
O mecanismo do cursor de cliente do OLE DB e o CommandBuilder do OLE DB .NET Data Provider geram instruções de atualização e exclusão com base nas informações da coluna fornecidas pelo IBM DB2 OLE DB Provider. Se a instrução gerada contiver um tipo LONG na cláusula WHERE, a instrução irá falhar porque os tipos LONG não podem ser utilizados em uma pesquisa com um operador de igualdade.
Valores | Significado |
---|---|
VARIANT_TRUE | Fará com que o IBM DB2 OLE DB Provider relate tipos LONG (LONG VARCHAR, LONG VARCHAR FOR BIT DATA, LONG VARGRAPHIC e LONG VARGRAPHIC FOR BIT DATA) com o conjunto de sinalizadores DBCOLUMNFLAGS_ISLONG. Isso impedirá que as colunas longas sejam utilizadas na cláusula WHERE. |
VARIANT_FALSE | DBCOLUMNFLAGS_ISLONG não é definido para LONG VARCHAR, LONG VARCHAR FOR BIT DATA, LONG VARGRAPHIC e LONG VARGRAPHIC FOR BIT DATA. Este é o padrão. |
#define DB2PROP_RETURNCHARASWCHAR 2 Grupo de propriedades: DB2 Data Source Conjunto de propriedades: DB2PROPSET_DATASOURCE Tipo: VT_BOOL R/W típico: R/W Descrição: Retornar Char como WChar
Valores | Significado |
---|---|
VARIANT_TRUE | OLE DB descreve colunas do tipo CHAR, VARCHAR, LONG VARCHAR ou CLOB como DBTYPE_WSTR. A página de códigos de dados implicada em ISequentialStream será UCS-2. Este é o padrão. |
VARIANT_FALSE | OLE DB descreve colunas do tipo CHAR, VARCHAR, LONG VARCHAR ou CLOB como DBTYPE_STR. A página de códigos de dados implicada em ISequentialStream será a página de códigos local do cliente. |
#define DB2PROP_SORTBYORDINAL 3 Grupo de propriedades: DB2 Data Source Conjunto de propriedades: DB2PROPSET_DATASOURCE Tipo: VT_BOOL R/W típico: R/W Descrição: Classificar Por Ordinal
A especificação OLE DB da Microsoft requer que IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) retorne o conjunto de linhas classificado pelas colunas TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME. O IBM DB2 OLE DB Provider está de acordo com a especificação. Porém, os aplicativos que utilizam o provedor Microsoft ODBC Bridge (MSDASQL) foram tipicamente codificados para obter o conjunto de linhas classificado pelo ORDINAL_POSITION.
Valores | Significado |
---|---|
VARIANT_TRUE | Fará com que o provedor retorne um conjunto de linhas classificado pelo ORDINAL_POSITION. |
VARIANT_FALSE | Fará com que o provedor retorne um conjunto de linhas classificado pelo TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME. Este é o padrão. |
No tópico "Instalando o Driver JDBC do DB2 Universal", o diagrama de sintaxe DB2Binder define incorretamente a sintaxe de URL para o Driver JDBC do DB2 Universal. A representação correta da sintaxe de URL para DB2Binder é mostrada no diagrama a seguir:
O recurso de reencaminhamento de cliente automático no DB2 UDB (Universal Database) para Linux, UNIX, e Windows permite que os aplicativos clientes se recuperem de uma perda de comunicação com o servidor para que eles possam continuar a funcionar com interrupção mínima.
Sempre que um servidor trava, cada cliente conectado a ele recebe um erro de comunicação, que encerra a conexão e resulta em um erro de aplicativo. Quando a disponibilidade é importante, você deve ter uma configuração redundante e suporte a failover. (Failover é a capacidade de um servidor de tomar o controle de operações quando outro servidor falha). Em qualquer caso, o cliente do driver JDBC do DB2 Universal tenta restabelecer a conexão com um novo servidor ou com o servidor original, que pode estar em execução em um nó de failover. Quando a conexão é restabelecida, o aplicativo recebe uma SQLException que o informa sobre o defeito da transação, mas o aplicativo pode continuar com a próxima transação.
Depois que o administrador de banco de dados especifica a localização do servidor alternativo em um banco de dados particular na instância do servidor, as localizações do servidor principal e do alternativo serão retornadas ao cliente no momento da conexão. O driver JDBC do DB2 Universal cria uma instância do objeto Referenciável DB2ClientRerouteServerList e armazena essa instância em sua memória temporária. Se a comunicação for perdida, o driver JDBC do DB2 Universal tentará restabelecer a conexão utilizando as informações do servidor retornadas do servidor.
A propriedade clientRerouteServerListJNDIName DataSource fornece suporte adicional de reencaminhamento de cliente no cliente; clientRerouteServerListJNDIName tem duas funções:
O clientRerouteServerListJNDIName identifica uma referência JNDI a uma instância DB2ClientRerouteServerList em um repositório JNDI para informações do servidor alternativo. Depois de uma conexão bem-sucedida com o servidor principal, as informações do servidor alternativo que são fornecidas pelo clientRerouteServerListJNDIName são sobrescritas pelas informações do servidor. O driver JDBC do DB2 Universal tentará propagar as informações atualizadas para o armazenamento de JNDI depois de um failover se a propriedade clientRerouteServerListJNDIName for definida. Se clientRerouteServerListJNDIName for especificada, as informações do servidor principal especificadas no DB2ClientRerouteServerList serão utilizadas para conexão. Se o servidor principal não for especificado, as informações serverName especificadas sobre a origem de dados serão utilizadas.
DB2ClientRerouteServerList é um bean Java serializável com quatro propriedades:
São fornecidos os métodos getter e setter para acessar essas propriedades. A definição da classe DB2ClientRerouteServerList é a seguinte:
package com.ibm.db2.jcc; public class DB2ClientRerouteServerList implements java.io.Serializable, javax.naming.Referenceable { public String[] alternateServerName; public synchronized void setAlternateServerName(String[] alternateServer); public String[] getAlternateServerName(); public int[] alternatePortNumber; public synchronized void setAlternatePortNumber(int[] alternatePortNumberList); public int[] getAlternatePortNumber(); public synchronized void setPrimaryServerName (String primaryServerName); public String getPrimaryServerName (); public synchronized void setPrimaryPortNumber (int primaryPortNumber) public int getPrimaryPortNumber (); }
Uma conexão de failover estabelecida recentemente é configurada com as propriedades da origem de dados originais, exceto para o nome do servidor e o número da porta. Além disso, quaisquer registros especiais do DB2 UDB modificados durante a conexão original são restabelecidos na conexão de failover pelo driver JDBC do DB2 Universal Driver.
Quando ocorre um defeito de comunicação, o driver JDBC do DB2 Universal primeiro tenta a recuperação para o servidor principal. Se isso falhar, o driver tentará se conectar à localização alternativa (failover). Depois que uma conexão é restabelecida, o driver lança uma java.sql.SQLException para o aplicativo com SQLCODE -4498, para indicar ao aplicativo que a conexão com o servidor alternativo foi automaticamente restabelecida. O aplicativo pode então tentar novamente sua transação.
Para configurar o armazenamento para tornar o DB2ClientRerouteServerList persistente, siga essas etapas:
// Criar um contexto inicial para operações de nomenclatura InitialContext registry = new InitialContext(); // Criar um objeto DB2ClientRerouteServerList DB2ClientRerouteServerList address=new DB2ClientRerouteServerList(); // Definir o número da porta e o nome do servidor para o servidor principal address.setPrimaryPortNumber(50000); address.setPrimaryServerName("mvs1.sj.ibm.com"); // Definir o número da porta e o nome do servidor para o servidor alternativo int[] port = {50002}; String[] server = {"mvs3.sj.ibm.com"}; address.setAlternatePortNumber(port); address.setAlternateServerName(server); registry.rebind("serverList", address);
datasource.setClientRerouteServerListJNDIName("serverList");
As propriedades de configuração do driver JDBC do DB2 Universal permitem definir valores de propriedades que têm escopo em todo o driver. Estas definições se aplicam a aplicativos e instâncias DataSource. Você pode alterar as definições sem precisar alterar o código fonte do aplicativo ou as características do DataSource.
Cada definição de propriedade de configuração do driver JDBC do DB2 Universal possui o seguinte formato:
property=value
Se a propriedade de configuração começar com db2.jcc.override, ela será aplicável a todas as conexões e substituirá qualquer propriedade Connection ou DataSource pelo mesmo nome de propriedade. Se a propriedade de configuração começar com db2.jcc ou com db2.jcc.default, o valor dela será um padrão. As definições da propriedade Connection ou DataSource substituem esse valor.
Para definir propriedades de configuração:
Para aplicativos Java independentes, você pode definir as propriedades de configuração como propriedades do sistema Java especificando -Dproperty=value para cada propriedade de configuração quando executar o comando java.
Para aplicativos Java independentes, você pode definir as propriedades de configuração especificando a opção -Ddb2.jcc.propertiesFile=path quando executar o comando java.
DB2JccConfiguration.properties pode ser um arquivo independente ou pode ser incluído em um arquivo JAR.
Se DB2JccConfiguration.properties for um arquivo independente, o caminho para DB2JccConfiguration.properties deverá estar na concatenação de CLASSPATH.
Se DB2JccConfiguration.properties estiver e um arquivo JAR, o arquivo JAR deverá estar na concatenação de CLASSPATH.
É possível definir as seguintes propriedades de configuração do driver JDBC do DB2 Universal. Todas as propriedades são opcionais.
Especifique um nome completo de arquivo para o valor da propriedade db2.jcc.override.traceFile.
A propriedade db2.jcc.override.traceFile substitui a propriedade traceFile para um objeto Connection ou DataSource.
Por exemplo, a especificação da seguinte definição para db2.jcc.override.traceFile ativa o rastreio do código Java do Driver JDBC do DB2 Universal para um arquivo denominado /SYSTEM/tmp/jdbctrace:
db2.jcc.override.traceFile=/SYSTEM/tmp/jdbctrace
É necessário definir as propriedades de rastreio de acordo com as instruções do Suporte ao Software IBM.
A função db2secFreeToken (Memória livre mantida retida por token) não faz mais parte da API do plug-in de autenticação do usuário db2secGssapiServerAuthFunctions_1.
A integridade da instalação do DB2 UDB (Universal Database) poderá ser comprometida se a implementação dos plug-ins de segurança não for adequadamente codificada, revisada e testada. O DB2 UDB toma precauções contra muitos tipos comuns de defeitos, mas não pode garantir a integridade completa quando plug-ins de segurança gravados pelo usuário são implementados.
Se estiver utilizando seu próprio plug-in de segurança personalizado, você poderá utilizar um ID do usuário com até 255 caracteres em uma instrução connect emitida através do CLP ou uma instrução SQL dinâmica.
Para as APIs db2secGetGroupsForUser, db2secValidatePassword e db2secGetAuthIDs, o parâmetro de entrada, dbname, pode ser nulo e seu parâmetro de entrada de comprimento correspondente, dbnamelen, será definido como 0.
.so é, agora, aceito como uma extensão de nome de arquivo para bibliotecas de plug-in de segurança gravadas pelo usuário em todas as plataformas Linux e UNIX.
No AIX, as bibliotecas do plug-in de segurança podem ter uma extensão de .a ou .so. Se existirem as duas versões da biblioteca de plug-ins, será utilizada a versão .a.
Para HP-UX no PA-RISC, as bibliotecas de plug-ins de segurança podem ter uma extensão .sl ou .so. Se existirem as duas versões da biblioteca de plug-ins. será utilizada a versão .sl.
Em todas as outras plataformas Linux e UNIX, .so é a única extensão de nome de arquivo suportada para bibliotecas do plug-in de segurança.
No AIX, as bibliotecas do plug-in de segurança podem ter uma extensão de nome de arquivo de .a ou .so. O mecanismo utilizado para carregar a biblioteca de plug-ins depende da extensão utilizada:
Por exemplo, para construir uma biblioteca de plug-ins de estilo de archive de 32 bits:
xlc_r -qmkshrobj -o shr.o MyPlugin.c -bE:MyPlugin.exp ar rv MyPlugin.a shr.o
xlc_r -qmkshrobj -o MyPlugin.so MyPlugin.c -bE:MyPlugin.exp
Em todas as plataformas diferentes de AIX, as bibliotecas do plug-in de segurança são sempre consideradas objetos compartilhados dinamicamente carregáveis.
A autenticação GSS-API é limitada a enviar fluxo de um token do cliente para o servidor e um token do servidor para o cliente. Esses tokens são obtidos de gss_init_sec_context() no cliente e de gss_accept_sec_context() no servidor. Os plug-ins GSS-API que estão tentando fluxos adicionais irão gerar um erro inesperado de plug-in de segurança, fazendo com que a conexão falhe.
A criptografia e a assinatura de mensagens não estão disponíveis em plug-ins de segurança GSS-API.
Os encerramentos de aplicativos (normais e anormais) revertem implicitamente unidades de trabalho pendentes, independentemente do sistema operacional.
Na documentação das novidades para o DB2 UDB (Universal Database) Versão 8.2, as informações de suporte à transação distribuídas para a seção de aprimoramentos do driver JDBC do DB2 Universal possuem informações incorretas. A última frase dessa seção está incorreta. As informações corretas são:
A partir da Versão 8.2, o DB2 UDB fornece suporte ao processamento de transações distribuídas que está de acordo com a especificação XA. Este suporte implementa as especificações do J2EE (Java 2 Platform, Enterprise Edition) JTS (Java Transaction Service) e JTA (Java Transaction API).
[ Início da Página |Página Anterior | Próxima Página | Índice ]