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:
- A conexão é feita em dois passos: Conecta-se o primeiro banco (primário) e depois conecta-se os demais (catálogo).
- Ambos devem estar na mesma máquina. Quem faz o acesso ao banco catálogo é o processo _sqlsrv2 no banco primário.
- Apenas o banco primário poderá sofrer alterações. Os bancos "catálogo" são conectados apenas para leitura.
- 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).
- 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.