Buscando comentários sobre drivers dbExpress do Delphi

Há anos venho utilizando drivers dbExpress de terceiros (DevArt) em meus aplicativos. O motivo é simples: sempre comprei Delphi Professional, que não traz drivers para Firebird e MSSQL.

No Delphi XE2 fiz upgrade de todas as licenças para Enterprise, e esta versão já traz os drivers. Então estou considerando migrar dos drivers da DevArt para eles, e ter um produto de terceiro a menos para me preocupar.

Gostaria de saber de quem usa esses drivers se estão satisfeitos. Só preciso acessar Firebird 2.5+ e SQL Server 2005+. Agradeço qualquer comentário.

  • Fábio

    Olá Erick,

    Não posso opinar sobre o SQL Server, mas utilizo o Firebird desde que o drive para ele foi lançado. Me atende em uma aplicação com uma média de 20 usuário simultâneos conectados em uma base de +- 300mb, não tenho o que reclamar. Um único problema que tive, era algo relacionado com a DBX e a versão 2.5 do Firebird, na utilização do método returning, mas foi corrigido na versão 2.5.1 que ainda é RC.

    Há, eu utilizo o Delphi 2010 :)

    • http://www.ericksasse.com.br Erick Sasse

      Obrigado Fábio!

  • Rafael

    Olá Erick..

    Na empresa onde trabalho usamos o driver dbExpress com Firebird 2.5, as aplicações já estão em produção a um bom tempo, até agora tudo certo, também usávamos DevArt e passamos ao driver nativo.

    abraço.

    • http://www.ericksasse.com.br Erick Sasse

      Rafael, bom saber que migrou de DevArt e está satisfeito. Obrigado pelos comentários.

  • http://www.tdevrocks.blogspot.com Adriano Santos

    Tranquilo Eric, funciona bem pra caramba. Vai sem medo.

    • http://www.ericksasse.com.br Erick Sasse

      Hehe, você é suspeito para falar. :)

      • Adriano Santos

        Caraca, não posso nem dar minha opinião mais pq sou suspeito, que vida viu. kkkkkkkkkkkkkkk. Meu, vai na fé. Funciona mesmo cara. Se precisar de um help é só gritar. Abs.

        • http://www.ericksasse.com.br Erick Sasse

          Haha. Lógico que pode, só estava tirando uma. :) Valeu!

          • Adriano Santos

            hahaha, sei que sim. Tava só brincando. Reforçando: tô a disposição. Só gritar. Até mais maluco.

  • http://www.logicatreinamentos.com.br Marcelo Varela

    Olá Erick, já usei em ambos bancos de dados. Uso com mais frequência o SQL Server. Neste posso afirmar que não há problema nenhum. Inclusive com o SQL 2008 R2. Os drivers DBX na verdade são delegates que repassam a responsabilidade de conexão para o banco de dados para as dll clientes do próprio banco. No caso do SQL Server, ele usa a sqlncli10.dll, que usa os drivers do .NET SQL Native Client, recomendado pela MS, e não mais o OLEBD, embora este último também esteja disponível.
    Qualquer dúvida entra em contato.

    Abraço,

    Marcelo Varela

    • http://www.ericksasse.com.br Erick Sasse

      Bom saber Marcelo, obrigado.

  • Lucas

    Sempre trabalhei com dbExpress, e realmente, como falam nunca tive problema… A maior parte do tempo com Firebird mesmo, mas recentemente migramos na empresa um módulo para MSSQL, que inicialmente havia sido desenvolvido utilizando tecnologia ADO.

    Mais tarde, resolvemos mudar essa forma de conexão, passando de ADO para dbExpress, e também houve bastante transparência no processso, mas é fato que para SQLServer, conexões via ADO ainda consegue ter uma performance melhor, mas isso tem diminuido com o novo framework DBX…

    Existe o pequeno detalhe da midas dll, mas que facilmente é embutida no fonte, como você já deve saber.

    Abraco e boa sorte!

    • http://www.ericksasse.com.br Erick Sasse

      Obrigado pelos comentários.

      Como meus sistemas são 3 camadas, a diferença de performance entre ADO e DBX não faz diferença. O gargalo é em outro lugar.

  • Lucas

    Na verdade acho que a midas dll não está relacionada ao dbExpress, mas sim ao uso dos clientdataset… certo? kk

    Lucas

    • http://www.ericksasse.com.br Erick Sasse

      Sim. :)

  • Leo

    Olá Erick,

    nosso sistema de ERP trabalha com banco SQL Server e não recomendo utilizar o driver do Delphi. Não sei como vai vir no Delphi XE 2, a partir do Delphi 2010 já houve muita melhoria, mas possui muitos bugs e a própria Embarcadero recomendou o driver da DevArt para SQL Server.

    A propósito existem muitas pessoas no grupo “NDDV” (acho que vc conehce) que relatam tais problemas e a solução é sempre partir pro driver da DevArt.

    Abraços!!

    • http://www.ericksasse.com.br Erick Sasse

      Leo, obrigado pelos comentários. Você lembra algum dos problemas que teve?

      • Leo

        Geralmente ocorrem os seguintes erros:

        1. Connection is busy with results for another command (A conexão está ocupada com os resultados para outro comando);
        2. Cannot create new transaction because capacity was exceeded (Não é possível criar uma nova transação porque a capacidade foi excedida).

        Pelas mensagens parece que resolver problema é fácil “Ah devo ter esquecido de fechar alguma transação”. Errado! É bug mesmo do driver dbExpress para o SQL Server.

        Uma solução paliativa é chamar o método CloseDataSet do TSQLConnection (Não resolve pra todos os bugs). Pode-se chamar no método AfterOpen do DataSet.

        Faça o seguinte teste: Abra uma transação, aplique as alterações e antes de comitar tente fazer um select. Vai ver que ocorre erro, é sem explicação. Se testar com banco firebird este tipo de rotina roda sem problemas.

        Seguem os links onde foi discutido este problema no grupo NDDV:

        - http://br.groups.yahoo.com/group/NDDV/message/23097
        - http://br.groups.yahoo.com/group/NDDV/message/828

        Se procurar no google as mensagens de erro que comentei, vai ver que é mais comum do que se imagina. e a solução definitiva é partir para o driver da DevArt, ou para que utiliza somente SQL Server deve-se utilizar o componente nativo SDAC, o desempenho é fenomenal. E para quem tem um sistema multi-banco, deve-se utiliza o UniDAC, ambos são componentes da DevArt.

        Descobri todos estes problemas porque estou migrando o sistema para DataSnap e o a tecnologia era BDE, então já que ia ter que alterar tudo, resolvi partir para o dbExpress que é infinitamente melhor.

        Abraços!!

  • Alan Glei

    Trabalho com os dois e nunca tive problemas! Pode ir sem medo…

  • Lucas

    Realmente, o que o Leo diz tem procedência, a própria Embarcadero recomenda DevArt… Também ví isso quando passamos por alguns percalços que não me lembro agora.

  • Lucas Chagas

    Olá Erick, desde o Delphi 2010 que utilizo os drivers dbExpress, sempre com ótimos resultados.

    Ainda não testei o Delphi XE2, mas se for como no Delphi XE (minha atual versão), acho que não vale a pena investir em um driver de banco de terceiros, no caso do Firebird sempre obtive ótimos resultados, com o MSSQL existem duas opções de Drivers.

    Acho que é isso qualquer coisa estou a disposição.

  • Anderson Santos

    Erick,

    Migramos o nosso ERP do Delphi 2006 para o XE, foi bem complexo uma vez que aproveitamos para mudar toda a estrutura (BSS para o novo DataSnap).

    O ERP se tornou muito mais rápido, não só pelo fato da troca de tecnologia, mas pela atualização do driver do Firebird (InterXpress para Embarcadero).

    Atualmente iniciamos os trabalhos pra homologar o uso do SQL Server, tivemos que adquirir o drive da Devart, não foi possível usar o da Embarcadero infelizmente.

    Houveram muitos problemas (Do tipo que o Update afetava mais que um registro, e outras coisas mais.).

    Sem falar que o Driver da Devart para SQL Server (usando o SQLClient) é muito mais rápido que o driver da Embarcadero.

    É isso.

    Pra mim Firebird vai com o driver da Embarcadero, SQL Server com o da Devart.

    • http://www.ericksasse.com.br Erick Sasse

      Oi Anderson, você chegou a verificar se algum destes bugs já está registrado na Embarcadero e se foram corrigidos no XE2?

      • Anderson Santos

        Não Erick, quando eu vi que o Driver da Devart era muito mais rápido do que da Embarcadero, eu não prossegui nos testes.

        Talvez no XE2 foi melhorado, mas o fato que no XE o tempo de Acesso (Entre logar e carragar as preferências do usuário no meu ERP) caiu de 5.8 para 1.2 segundos.

        • http://www.ericksasse.com.br Erick Sasse

          Em teoria eles deveriam usar as mesmas bibliotecas por baixo, então não deveria ter uma diferença desse tamanho.

          Vou fazer testes, obrigado pelos comentários.

          • Anderson Santos

            Erick, gostaria de esclarecer uma coisa em relação ao comparativo que fiz na questão velocidade do driver para o SQL Server entre a Embarcadero e Devart.

            Descobri que a propriedade GetMetadata (TSQLDataSet) que fez toda a diferença. Quando True, a perda de desempenho no driver da Embarcadero fio muito grande comparado ao da Devart, corrigido isso (False), o desempenho fica praticamente o mesmo entre os drivers.

            Fica a dica.

  • Antonio Arruda

    Olá Erick,

    Estou a alguns dias estudando o drive da devart e hoje vi que usa este drive. Gostaria de pedir algumas dicas de material para estudo sobre ele ou exemplos de uso.
    Se puder ajudar ficarei muito grato.
    Abraços.

  • Rodrigo

    Erick,

    O DBExpress dá muitas dores de cabeças, muitos problemas, parece que os “caras” lá da embarcadero ficam batendo cabeça… o certo é mesmo correr para componentes de terceiros. o ORACLE é um exemplo onde dependendo da versão e do delphi dá muitos erros.

    Um erro sem fazer gambiarra só consertaram depois de 8 anos (O famoso erro do BCD Overflow e a inversão de parâmetros nas procedures), portanto nós corremos para o DOA.

    Algumas pessoas usam o ZEOS, outras acessam direto pelo banco, mas se vc tem o devArt.. fique com ele, é uma ótima ferramenta (Suporta MacOSx, IOS, etc) eh eh sempre atualizado.

  • joão elson

    Quando começei a trabalhar com delphi usava o access, logo, mudei diretamente para sql server 7 depois 2000 e etc..
    No projeto inicial usava DBExpress para acessar, depois de muito apanhar passei para ADO. Com o DBX é impossível trabalhar com sql server devido a vários bugs que até hoje não corrigiram.
    Ex. se vc der um select com INNER Join acontecem vários erros e etc.
    Agora com as versões do delphi apartir da 7 mudou-se o nome de ADO para dbgo, mas foi só o nome pq na verdade não mudou nada tanto é que com ADO ou dbgo vc só pode acessar o sql server usando os drivers OLE DB Provider for SQL Server.
    Se usar o SQL Server Native Client também dá erro devido a incopatibilidade de versões ou seja: ADO ou dbgo são muito atrasados para usar umas bibliotecas de acesso tão novas baseadas no ADO.NET.
    Infelizmente porque o Native Client é visivelmente 30% mais rápido que o OLE DB que parou na versão 2.8 onde é instalado junto com o Microsofit Data Access(mdac 2.8)
    Lembrando que os components DevArt Usam o mesmo OLE DB.
    Resumindo, DevArt, ADO, dbgo usam as mesmas bibliotecas de acesso a dados o OLE DB.

    • Anderson Santos

      Só pra atualizar, no driver da Devart você já pode pode configurar o driver pra acessar através do SQL OLE DB provider ou do SQL Native Client provider.

      O meu ERP acessa através do SQL Native Client de forma perfeita, sem os bugs mencionados. Mas afirmo que acessando através do OLE DB ocorreram vários problemas.

      Se não estou enganado, a partir da versão XE o acesso nativo também se faz pela SQL Native Client. Mas mesmo assim apresenta problemas que no driver da Devart não ocorre.

      É isso.

      • joão elson

        Acessar até com o Delphi 7 consegue, ja que o objeto que configura o acesso ao banco é do proprio windows, lá aparece todas as bibliotécas instaladas no sistema, mas como disse, os erros são frequentes.
        Agora que o Devart faz isso sem erro é uma ótima notícia, não sabia que estava assim.
        Já sabia que outras ferramentas faziam isso como o muita perfeição, como é o caso da Rem objects usando o Data Abstract, esse é fera acessa todas as bases de dados com o mesmo conponet, dá pra fazer muita coisa boa mas o preço, esse é o foda, a liceça é cara pra porra!

      • joão elson

        Anderson, só pra me tirar uma dúvida os components Devart que vc usa no seu ERP são esse: http://www.devart.com/sdac/
        Se for é impressionante como não dá erro pq no proprio site diz q o acesso é por OLE DB.
        Existe um que usa o SqlClient mas parece ser para visual studio e delphi prism ou outros que usam a Framework do visual studio esse sim usa o sql client como diz no link do produto.
        http://www.devart.com/dotconnect/sqlserver/

        • Anderson Santos

          Não,o que eu uso é o http://www.devart.com/dbx/sqlserver/, se você instalar o Trial dele, no readme explica certinho como configurar o driver pra usar o Native ou o OLEDB.

          No meu caso, mudei para o Native Client. Funciona certinho, sem stress.

        • joão elson

          Haa bom, vc usa o DBX.
          Achei um bem interessante da DevArt o http://www.devart.com/unidac/
          Esse funciona com quase todos os Bancos. Segundo o Proprio Comp. A engine usa o Ole DB e SQL Client. para sql server.

  • http://crosoft.biz/ Marcos Paulo

    Olá Erick!

    Eu acho que você já deve ter se decidido sobre o uso do DBX, e minha opinião poderá estar um pouco atrasada; Mas nunca é demais!

    Eu sempre usei o DBX desde que lançaram, bem antes de ter um nativo para Firebird, até porque eu não usada o servidor e sim outro, e até o momento eu não tive nenhum problema com o DBX a não ser quando eu testei a versão Embedded do Firebird, mas não procegui com mais testes; Nas Versões XE2 eu ainda não testei mas houve bastante melhorias!

    Abraços!