Conectando vários bancos Progress no mesmo acesso ODBC/JDBC

Escrito por Adriano Corrêa em 26 de janeiro de 2009, 08:10h

A partir da versão 10.1B o Progress permite conectar mais de um banco de dados no mesmo acesso ODBC ou JDBC, possibilitando executar queries de consulta nos vários bancos utilizados.

Esse acesso possui severas limitações:

  1. A conexão é feita em dois passos: Conecta-se o primeiro banco (primário) e depois conecta-se os demais (catálogo).
  2. Ambos devem estar na mesma máquina. Quem faz o acesso ao banco catálogo é o processo _sqlsrv2 no banco primário.
  3. Apenas o banco primário poderá sofrer alterações. Os bancos "catálogo" são conectados apenas para leitura.
  4. O banco primário é conectado obrigatoriamente em modo cliente-servidor. Os bancos "catálogo" são conectados obrigatoriamente em modo self-service (acesso direto à shared-memory).
  5. O usuário e senha usados na conexão do banco primário serão usados para conexão dos bancos catálogo.

Quando ocorre uma conexão SQL, o Progress inicia para o banco de dados um processo server (_sqlsrv2) para estabelecer o acesso. Esse processo poderá ser identificado no promon como SQSV. Quando o número mínimo de usuários por servidor for atingido (-Mi) o processo inicia um novo processo server, e assim por diante, até estourar a quantidade de servers permitido (-Mn ou -Mpb).

Quando ocorre uma conexão a um banco catálogo, o Progress estabelece uma conexão chamada SQFA (SQL Federated Agent). Essa conexão é equivalente ao SQSV, porém sem o processo _sqlsrv2 associado. O acesso real do usuário é reconhecido no Progress como SQFC (SQL Federated Client). Da mesma forma que o SQSV, um novo SQFA é criado quando estoura o parâmetro -Mi.

É possível conectar um banco catálogo de duas formas:

Da forma manual, execute o comando: connect 'c:\banco\demo' as catalog demo; .

Da forma automática, utilize o parâmetro -mdbq. Simulei essa situação conforme o exemplo a seguir:

Criei dois bancos de dados exemplo, a partir dos bancos sports e demo, que a Progress disponibiliza. Serví ambos com os comandos:
proserve sports -S 30000
proserve demo -S 40000

Vou conectar o banco sports como primário e o banco demo como catálogo. Dessa forma, criei no diretório do banco de dados sports, o arquivo sports.oesql.properties com o seguinte conteúdo:

[sql-configuration]
configuration-names-list=cfgTeste

[configuration.cfgTeste]
database-id-list=dbdemo

[database.dbdemo]
Name=dbdemo
Catalog=demo
Location=d:\workarea\catal\demo

Com o arquivo configurado, abrí o SQL Explorer com a seguinte sintaxe:

sqlexp -db sports[-mdbq:cfgTeste] -H localhost -S 30000 -N TCP

Dentro do SQL Explorer, executei o seguinte comando para verificar os bancos conectados:

show catalogs all;

Ele apresentou a seguinte informação:

PRO_NAME                         PRO_TYPE  PRO_STATUS
-------------------------------- --------- ----------
SPORTS                           primary   default
DEMO                             auxiliary notdefault

Esse é um exemplo de conexão utilizando JDBC. Para conexão ODBC, proceda da mesma forma, adicionando o parâmetro -mdbq no nome do banco especificado no DSN.

Categorias: Banco de dados | Conectividade | Novidades | Progress

Tags: , , ,

Comentários

Comentar




biuquote
  • Comentário
  • Pré-visualização
Loading