Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Problema para conectar a MSSQL Server usando DBExpress (https://www.clubdelphi.com/foros/showthread.php?t=78600)

Leviatan 03-05-2012 00:31:36

Problema para conectar a MSSQL Server usando DBExpress
 
Hola amigos:

Estoy desarrollando una app en Delphi 2010 que accede a una BD SQL Server utilizando DBExpress. Las pruebas las estoy haciendo desde el Delphi a una BD SQL Server 2005 y funciona bien; el problema viene cuando lo instalo en el equipo en producción que accede a una BD SQL Server 2008. El error que me aparece cuando intento hacer la conexión es: "DBX error: Driver could not be properly initialized. Client library may be missing, not installed properly, or of the wrong version."

Estos son los archivos que incluyo en mi instalador para la distribución:

dbxconnections.ini
dbxdrivers.ini
dbxmss9.dll
midas.dll

¿Será que me estará faltando algún otro archivo?

Saludos y gracias de antemano.

olbeup 03-05-2012 09:12:06

Lo que parece que esta pasando es que necesitas los controladores de conexión para SQL SERVER 2008, en éste sito te lo puedes descargar en la parte de "Microsoft SQL Server 2008 Native Client" y el fichero es: sqlncli.msi, hay a veces que se necesita este otro: "Windows Installer 4.5."

Un saludo.

Leviatan 03-05-2012 20:00:43

Hola olbeup:

Muchas gracias por la información. Lo voy a probar y te cuento cómo me fue.

Saludos.

Leviatan 03-05-2012 21:12:58

Hola de nuevo olbeup:

Instalé la app y luego el sqlncli.msi. Reinicié el equipo para asegurar, ejecuté la app pero sigue dando el mismo error.

No sé qué podría ser; me parece un poco extraño. Si alguien piensa cuál podría ser el problema le agradecería una ayuda.

Saludos.

olbeup 04-05-2012 09:21:54

¿Cual es el parámetro de conexión que realizas?

Puedes descartar si el problema es de tu aplicación.

Realiza una prueba de conexión desde el ODBC al servidor, "Panel de control, Herramientas administrativas, Orígenes de datos (ODBC), Pestaña: DSN de sistema, Agregar, y seleccionar: SQL Native Client", establece los parámetros de conexión para comprobar que todo funciona bien.

Un saludo

Leviatan 04-05-2012 17:35:43

Por una razón de tiempo que apremiaba ya a mi cliente recurrí a la siguiente solución, una asignación dinámica a la cadena de conexión:

Código Delphi [-]
procedure TfrmParametro.btnProbarConexionClick(Sender: TObject);
var
  sConn: string;
begin
  try
    frmAcceso.ConnIntegracion.Connected := False;

    sConn := 'Provider=SQLOLEDB;' +
                 'Data Source=' + edServInt.Text + ';' +
                 'Initial Catalog=' + edBDInt.Text + ';' +
                 'User Id=' + edUsuInt.Text + ';' +
                 'Password=' + edContraInt.Text;
    frmAcceso.ConnIntegracion.ConnectionString := sConn;

    frmAcceso.ConnIntegracion.Connected := True;
    MyMessageDialog('Prueba de conexión exitosa', mtInformation, [mbOk], [OK]);
  except
    on E: Exception do
      MyMessageDialog(E.Message + '. ' + E.ClassName, mtError, [mbOk], [OK]);
  end;
end;

Y me funcionó súper bien.

Saludos.

olbeup 07-05-2012 09:24:20

La conexión que utilizas SQLOLEDB es para SQL 2000, para la conexión de SQL 2005..2008 es SQLNCLI

un saludo.

Leviatan 10-05-2012 02:46:48

Ok, gracias olbeup.

La verdad que he probado el SQLOLEDB y me ha funcionado bien (por el momento) tanto en SQL Server 2005 como en 2008. Pero de todos modos tendré en cuenta el SQLNCLI en caso de algún inconveniente.

Saludos.


La franja horaria es GMT +2. Ahora son las 17:59:59.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi