[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico] [Índice de assunto]

Re: Uso do SQL Server





On Thu, 5 Dec 2002, Flavio Luiz Coutinho wrote:

> > Quando eu tava todo alegre, vi que meu log não funcionava (apesar de o SQL
> > está ok, atualizando as tabelas e tudo). Eu estava tão bitolado com a
> > configuração do banco que esqueci que eu precisava de 2 SGBD´s. Meu log
> > passa batido quando uso um só banco. (muito justo, pelo menos o código do
> > JBoss não tá errado...). Agora vou ter que mudar minha arquitetura
> > acochambradística para incluir um segundo SGBD. Não sei como, mas...
> 
> Será que funcionaria usando dois bancos de dados diferentes dentro do mesmo
> SGBD??? Cada um com um DataSource diferente???
> 

  Creio que não. Do código do TransactionImpl:

  if (resourceCount == 0) {
               // Zero phase commit is really fast ;-)
               if (trace)
                  log.trace("Zero phase commit: No resources.");
               status = Status.STATUS_COMMITTED;
            } else if (isOneResource()) {
               // One phase commit
               if (trace)
                  log.trace("One phase commit: One resource.");
               commitResources(true);
            } else {
               // Two phase commit

  O método isOneResource() verifica se os XA's envolvidos na transação são
de resources diferentes. Ou seja, mesmo que se tenha dois ou mais
Datasources envolvidos na transação, ele trata como one-phase commit. E
isto faz sentido: se vc tem dois bancos de dados no mesmo SGBD, vc deveria
ter que mandar apenas um commit com o id da transação. O SGBD
identificaria os bancos sob sua administração envolvidos e realizaria o
commit de cada um deles.
  Isso tudo na teoria, mas eu não testei. E como estamos percebendo, sem
testar não quer dizer nada...

  Abraços,

  Beto
  <speicys@etc...>