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
Muito boa a explicação.
Eu estava usando o native client, agora nem vou precisar mais.
Valeu.
[...] 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 [...]
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.
@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.
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
@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.
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…
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…
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
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
@Alvaro, vc deve instalar o MDAC que deve baixar do site da microsoft.
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?
@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.
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..
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é.
@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.
Mas qual é a configuração para rodar no SQL 2000??
Podem me mandar o drivers.ini??
@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
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
Caro Cesar
Informo que estou usando conexão dbexpress e banco SQL Server 2000
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.”
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.
Muito bom poder conta com os colegas, com suas explicações técnicas e corretas.
Feliz natal!!!!
Carlos
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.
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
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!
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?
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á…
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.