Configurando DBX para acessar o MS SQL Server 2000 e 2005 no Delphi 2010

 

No Delphi 2010, por padrão o DBX lista como opção pra acessar o MS SQL Server, um driver chamado MSSQL, que está configurado para acessar o SQL Server 2008, já que o VendorLib está com o valor “sqlncli10.dll”.

Para acessar o SQL Server 2005, tem uma configuração de driver pronta no arquivo dbxdrivers.ini, chamada MSSQL9 já configurado para acessar o SQL Server 2005 com o VendorLib “sqlncli.dll”. Mas este driver dbx não é ativado por padrão, para ativá-lo, você deve adicionar MSSQL9=1 no grupo [Installed Drivers] no início do arquivo dbxdrivers.ini. Após fazer esta alteração, basta reiniciar o Delphi e você vai ver a opção de conexão chamada MSSQL9 no Data Explorer.

O início do meu arquivo dbxdrivers.ini ficou assim:

[Installed Drivers]
DBXTrace=1
DBXPool=1
BlackfishSQL=1
DataSnap=1
ASA=1
ASE=1
DB2=1
Firebird=1
Informix=1
Interbase=1
MSSQL=1
MSSQL9=1
MySQL=1
Oracle=1

 

Para configurar o acesso para o MS SQL Server 2000, você deve usar o Driver MSSQL, e mudar o VendorLib para oledb.dll.

Dica: Se quiser deixar mais claro os nomes dos drivers, você pode mudar o nome dos grupos no dbxdrivers.ini e dos itens no [Installed Drivers], assim:

[Installed Drivers]

MSSQL2008=1
MSSQL2005=1
MSSQL2000=1

[MSSQL2008]

LibraryName=dbxmss.dll
VendorLib=sqlncli10.dll

[MSSQL2005]

LibraryName=dbxmss9.dll
VendorLib=sqlncli.dll

[MSSQL2000]

LibraryName=dbxmss.dll
VendorLib=oledb.dll

 

 

Estas informações estão documentadas no “Release Notes”, que está na pasta de instalação do delphi 2010, a seguir uma tradução do que está escrito, com algumas alterações pra ficar mais claro:

  • O driver MSSQL requer a instalação do Cliente Nativo SQL.
  • Versões suportadas: Microsoft SQL Server 2008, 2005, 2000 (Ent) (Driver dbxMSS.dll, Client oledb.dll) 
MS SQL Server Driver DBX Driver Client
2008 dbxmss.dll sqlncli10.dll
2005 dbxmss9.dll sqlncli.dll
2000 dbxmss.dll oledb.dll
 
 
 

29 Comments

 
  1. Sérgio Guedes disse:

    Muito boa a explicação.

    Eu estava usando o native client, agora nem vou precisar mais.

    Valeu.

  2. [...] 2010 in DB, Delphi, Dicas, Programação, Rad Studio, SQL Há alguns dias eu postei o artigo Configurando DBX para acessar o MS SQL Server 2000 e 2005 no Delphi 2010, hoje o Bob Swart postou em seu blog o artigo Delphi/C++Builder 2010 DBX4 and SQL Native Client [...]

  3. Jhosef disse:

    Segui sua dica, em tempo de designe, o SQLConnection conecta no banco numa boa, agora em tempo de execução não funciona, estou usando o Delphi 2010 com SQL Server 2005 e IntraWeb.

    Vlw e parabéns pelo Blog.

  4. Cesar disse:

    @Jhosef:

    Se funciona na IDE, com certeza vai funcionar em tempo de execução, por acaso o TSQLConnection esta carregando os parametros quando executa?

    O TSQLConnection esta fechado qdo vc compila?
    Se você carrega os parametros de conexão dinamicamente via código, experimenta colocar o código no Evento TSQLConnection.OnBeforeConnect.

  5. Jhosef disse:

    Bom dia Cesar, hoje quando carreguei o Delphi 2010, e fui trabalhar com o SQLConnection começou a dar problema em tempo de designe também, na verdade o que acontece agora é que o drive MSSQL9 quando é selecionado nem aparece mais as opções do Drive (usuário, password, database, hostname)…
    Isso foi de ontem para hoje, agora numa segunda máquina isso não está acontecendo… Fica no problema de antes, em tempo de designe conecta e em tempo de execução não funciona…

    Tá complicado, to quase voltando pro Delphi 7

  6. Cesar disse:

    @Jhosef:

    Bom dia! Estas configurações ficam no arquivo dbxconnections.ini, alguma coisa neste arquivo foi mudada.

    A lista de drivers disponívels ficam no dbxdrivers.ini, para o 2010 no Win7, estes arquivos ficam na pasta:

    C:\Users\Public\Documents\RAD Studio\dbExpress\7.0\

    Outro dia um amigo estava com problemas parecidos com o seu, e foi pra ajudar ele que escrevi estes posts, após ele entender bem como funciona estas configurações, ele não teve mais problemas.

  7. Jhosef disse:

    Achei o problema… rs

    No ServerController, a propriedade ComInitialization estava setada como clNone e eu acho que isso atrapalhava em carregar os dados do driver de forma correta.

    Mas ainda estou com o problema no meu notebook em ver as propriedades dos drive do MSSQL9

    Vlw pela ajuda…

  8. Jhosef disse:

    Achei o problema… rs

    No ServerController, a propriedade ComInitialization estava setada como clNone e eu acho que isso atrapalhava em carregar os dados do driver de forma correta.

    Vlw pela ajuda…

  9. Alvaro disse:

    Prezado Cesar

    não consigo achar o oldb.dll na minha máquina onde encontro esta dll, estou usando o SQL 2000 e segundo sua configuração
    eu encontrei o sqloledb.dll este serve

    Ats. Álvaro

  10. Alvaro disse:

    Prezado Cesar (Correção)

    não consigo achar o oledb.dll na minha máquina onde encontro esta dll, estou usando o SQL 2000 e segundo sua configuração
    eu encontrei o sqloledb.dll este serve

    Ats. Álvaro

  11. Cesar disse:

    @Alvaro, vc deve instalar o MDAC que deve baixar do site da microsoft.

  12. Fernando Arana disse:

    Cara, que luta!
    Cesar, sua dica foi o começo, mas tem mais:
    Pra funcionar o MSSQL 2005 Express: No arquivo “dbxdrivers.ini”, além de colocar o valor “1″ no [MSSQL9], a configuração logo abaixo correta é essa:

    [MSSQL9]
    SchemaOverride=%.dbo
    DriverUnit=DBXMSSQL
    DriverPackageLoader=TDBXDynalinkDriverLoader,DBXCommonDriver120.bpl
    DriverAssemblyLoader=Borland.Data.TDBXDynalinkDriverLoader,Borland.Data.DbxCommonDriver,Version=12.0.0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b
    MetaDataPackageLoader=TDBXMsSqlMetaDataCommandFactory,DbxMSSQLDriver120.bpl
    MetaDataAssemblyLoader=Borland.Data.TDBXMsSqlMetaDataCommandFactory,Borland.Data.DbxMSSQLDriver,Version=12.0.0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b
    GetDriverFunc=getSQLDriverMSSQL
    LibraryName=dbxmss9.dll
    VendorLib=sqlncli
    HostName=localhost
    DataBase=
    User_Name=user
    Password=password
    BlobSize=-1
    ErrorResourceFile=
    LocaleCode=0000
    MSSQL TransIsolation=ReadCommited
    OS Authentication=False
    Prepare SQL=False

    claro que no campo HostName, User e Password você já adiciona os valores padrão pra vc trabalhar

    Em outros arquivos, como o dbxconnections.ini, não mexer em nada, ok?

  13. Cesar disse:

    @Fernando Arana:

    Na verdade eu postei somente as propriedades que mudam para cada versão do MSSQL, as outras todas permanecem, como vc listou.

    Sim o dbxconnections.ini não precisa ser alterado, nele serão salvas as conexões que você criar no Data Explorer, baseadas nos modelos salvos no dbxdrivers.ini.

  14. Eduardo disse:

    Cara to apanhando do delphi 2009 ja copiei todos os arquivos q encontrei na net mas nao consigo fazer funcionar d2009+dbxpress e tbem algums sps com ADO, quais sao os benditos dos arquivos, pq nao esta querendo funcionar..

  15. Fernando Arana disse:

    Cesar, parabéns pelo blog!
    Seguinte, por quê meu aplicativo feito em Delphi2010 usando o Sql Server 2005 Express não funciona nos outros computadores? Meu note roda Win7 e as máquinas do cliente rodam WinXP. Já tentei instalar o dbxmss9.dll na pasta raiz, no diretório do windows, midas.dll, dbxmss.dll e nada! Pô, quebra essa que te envio R$ 50,00 pro café.

  16. Cesar disse:

    @Fernando,

    Qual é a mensagem de erro?

    1) Você precisa instalar o Client do SQL Server 2005 nestas máquina, você pode utilizar o instalador padrão e selecionar somente a instalação das bibliotecas cliente, esta parte irá instalar a DLL sqlncli.dll

    2) Você pode dispensar a necessidade do Midas.dll, adicionando MidasLib na uses do seu projeto .dpr, mas se preferir mandar a DLL, deve seguir a mesma regra do ítem 3.

    3) Para o SQL Server 2005, você deve mandar dbxmss9.dll, junto com o seu aplicativo, ele deve estar na mesma pasta do seu executável ou em alguma pasta que esteja na variável de ambiente %PATH%, normalmente na pasta C:\Windows\System32.

  17. marcusco disse:

    Mas qual é a configuração para rodar no SQL 2000??
    Podem me mandar o drivers.ini??

  18. Cesar disse:

    @marcusco:

    Use a configuração que você tem pra qualquer das versões do SQL Server, e mude apenas estas 2 linhas:
    LibraryName=dbxmss.dll
    VendorLib=oledb.dll

  19. Alvaro disse:

    Prezado Cesar

    Configurei ClienteDataset delphi 2010 ativei tudo ok, mas quando em tempo de execução vou gravar um registro dá mensagem
    Projct Project3.exe exception class ‘EAccessViolation with message ‘Access violation at address OOCB8E1E
    in module ‘dbxmss.dll’, Read of address 00000000′

    O que poderá ser isso.

    Ats. Álvaro

  20. Alvaro disse:

    Caro Cesar

    Informo que estou usando conexão dbexpress e banco SQL Server 2000

  21. AFDominguez disse:

    Boa Tarde.
    Cesar fiz todas essas configurações e nao estou conseguindo acessar uma base sql server 2000.
    esta dando o seguinte erro:

    “DBX Error: Driver could not be properly initialized. Client library may be missing, not installed properly, or of the wrong version.”

  22. Joel disse:

    Prezado Cesar,
    preciso executar um mesmo programa compilado em Delphi2010 em clientes com MSSQL 2000, 2005 e 2008; no evento BeforeConnect do SqlConnection adicionei uma validação que verifica um determinado parâmetro e altera as propriedade LibraryName e VendorLib conforme tabela descrita no final do artigo; Te pergunto, essa linha de raciocínio está correta ou devo seguir outra linha? infelizmente não estou avançando, algo está passando batido, se tiveres alguma orientação quanto a este cenário lhe agradeço. Parabéns pelo post, está bastante claro. Abraço.

  23. Carlos disse:

    Muito bom poder conta com os colegas, com suas explicações técnicas e corretas.

    Feliz natal!!!!

    Carlos

  24. Cleber disse:

    Ola, ja li, re-li, e nao consigo fazer o delphi 2010 conectar no MSSQL 2008 EXPRESS
    Seguinte:
    tenho o delphi numa maquina xp
    o banco, sql express, em outra maquina xp

    recebo a mensagem
    “driver could not be properly initialized”
    ja coloquei as 2 dll, no system32, na pasta do aplicativo, e nada, nao consigo conectar nem em tempo de IDE

    alguem pode me ajudar a resolver ?

    Obrigado.

  25. Daniel Lucena disse:

    eu só instalei o sqlncli no site da microsoft tem pra download e resolveu meu problema com o xe no windows 7 e no windows xp fikdik

  26. Gilberto G Lins disse:

    Amigo, estou com problema ao utilizar uma grid no delphi 7 utilizando o dbexpress no mssql 2008
    aparece a seguinte mensagem :
    Operation no allowed on Unidirectional dataset.

    Vc pode mim ajudar Cesar pelo amo de Deus!

  27. Rodrigo disse:

    Nos testes que eu fiz conectou belezinha localhost, porem quando se utiliza em REDE fica muiiiiiiiiito lento, alguem ja passou por este porblema e ou sabe como resolve-lo?

  28. Thiago Dias disse:

    Caro… Após pesquisar muito por aí, o único conteúdo encontrado que se aproxima do que preciso foi o seu. Estou migrando um sistema relativamente grande que utiliza SQL 2000 para SQL 2008, até aí tudo bem, mas como percebi não consigo conectar ao 2008 utilizando o driver MSSQL, mas somente com o native client 10, o que gerou uma série de problemas no sistema, já que o mesmo utiliza BDE. Sabe me dizer se há a possibilidade de fazer com que o Delphi se conecte ao SQL2008 utilizando o driver MSSQL, e como ?
    Obrigado desde já…

  29. Maicon disse:

    Olá,

    Tenho o SQLServer 2005 instalado completo, banco, estudio, e nao tem jeito de aparecer o conection name no componente, aparece o driver apenas.

    Já fiz os passos acim. Se puder me ajudar agradeço muito.

 

Leave a Comment

 

You must be logged in to post a comment.