miércoles, 5 de junio de 2013

Como configurar Codeigniter para conectarse a SQL Server 2008

Este post es para aclarar el procedimiento para habilitar la conexión a Microsoft SQL Server desde Codeigniter ya que recientemente tuve la necesidad de hacerlo y me encontré con varios problemas y ninguna explicación clara, Para estas instrucciones tomen en cuenta que utilicé XAMPP en el servidor, pero se puede aplicar a cualquier otro stack que utilicen:

PARA WINDOWS XP

Para windows XP tenemos que limitarnos a usar php version 5.3.x, mas adelante les indicare por que, por lo tanto si usáran XAMPP, la version 1.7.3 funciona perfecto.Versiones antiguas de Xampp.

1er Paso - Instalar el SQL Native Client de Microsoft:

Para Windows XP es suficiente la versión SQL Native Cliente de 2008 para la version de el driver que instalaremos en el paso 2, pero se puede instalar la del 2012 tambien si se desea. La version del cliente para 2008 pueden descargarlo Aqui

2do Paso - Instalacion del Driver de Microsoft para PHP para SQL Server:

Para usar los Microsoft Drivers for PHP for SQL Server, deben tener instalado el SQL Server Native Client de el punto 1 en el mismo equipo donde esta corriendo PHP.
Bajaremos la versión 2 , que necesita el Native Cliente para 2008 que bajamos en el punto 1 , bajenselo de Microsoft Drivers 3.0 for PHP for SQL Server (Bajen la versión 2 ).
Por que la versión 2, pues es la que funciona con php 5.3.x, contiene los archivos:

php_sqlsrv_53_ts_vc6.dll
php_pdo_sqlsrv_53_ts_vc6.dll

Para mi caso, para su caso especifico, deben fijarse en la funcion phpinfo() de su servidor, qué version de PHP (de ahí la parte 53, osea 5.3.X) tienen, y con que Versión esta compilada( de ahí la parte vc6) y la opción Thread Safety, si esta activada ( de ahí a parte ts).

Este Driver lo tienen que instalar en la carpeta de extensiones de PHP, en el caso del Xampp esta en c:\xampp\php\ext

3er Paso- Configuracion en PHP.ini :

En la configuración de PHP, específicamente en el archivo php.ini, debemos activar estas extensiones adicionando las lineas:

extension=php_sqlsrv_53_ts_vc6.dll
extension=php_pdo_sqlsrv_53_ts_vc6.dll

Seguidamente debemos detener el servidor y volver a iniciarlo.

4to Paso - Configuracion en CodeIgniter:

Finalmente en el archivo database.php en la carpeta de configuración de Codeigniter debemos dejar las opciones de la siguiente manera (presten atención a los detalles):

$db['default']['hostname'] = '192.168.XX.XX'; //el ip o nombre del Servidor SQL
$db['default']['username'] = 'sa';
$db['default']['password'] = 'tupassword';
$db['default']['database'] = 'tu_DB';
$db['default']['dbdriver'] = 'sqlsrv'; //si, poner sqlsrv
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = FALSE; //ponerlo a False
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

Y listo, pueden usar MS SQL Server como base da datos para su proyecto en CodeIgniter.


PARA WINDOWS 7 O MAYOR:

Para Windows 7 podemos usar la ultima versión del XAMPP  que viene con PHP 5.4.x por lo tanto pueden bajarse la ultima versión del XAMPP de Aqui

1er Paso - Instalar el SQL Native Client de Microsoft:

Ahora si, necesitamos la versión para SQL Server 2012 pueden descargarla de Aqui

2do Paso - Instalación del Driver de Microsoft para PHP para SQL Server:

Para usar los Microsoft Drivers for PHP for SQL Server, deben tener instalado el SQL Server Native Client de el punto 1 en el mismo equipo donde esta corriendo PHP.
En el caso de Windows 7 podemos bajar la versión 3 para que trabaje con nuestro PHP versión 5.4.x, bajenselo de Microsoft Drivers 3.0 for PHP for SQL Server (Bajen la versión 3 ).

Contiene, ente otros, los archivos:

php_sqlsrv_54_ts.dll
php_pdo_sqlsrv_54_ts.dll
php_sqlsrv_54_nts.dll
php_pdo_sqlsrv_54_nts.dll

Según su PHP este configurado como Thread Safety(ts) o no (nts).

Este Driver lo tienen que instalar en la carpeta de extensiones de PHP, en el caso del Xampp esta en c:\xampp\php\ext

3er Paso- Configuracion en PHP.ini :

En la configuración de PHP, específicamente en el archivo php.ini, debemos activar estas extensiones adicionando las lineas:

extension=php_sqlsrv_54_ts.dll
extension=php_pdo_sqlsrv_54_ts.dll

Seguidamente debemos detener el servidor web y volver a iniciarlo.

4to Paso - Configuración en CodeIgniter :

Finalmente en el archivo database.php en la carpeta de configuración de CodeIgniter debemos dejar las opciones de la siguiente manera (presten atención a los detalles):

$db['default']['hostname'] = '192.168.XX.XX'; //el ip o nombre del Servidor SQL
$db['default']['username'] = 'sa';
$db['default']['password'] = 'tupassword';
$db['default']['database'] = 'tu_DB';
$db['default']['dbdriver'] = 'sqlsrv'; //si, poner sqlsrv
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = FALSE; //ponerlo a False
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

Bueno, eso es todo espero que les sea de ayuda.



7 comentarios:

  1. Gracias por la info, en mi maquina si funciono tengo el 8.1, mando todo el xampp a otra maquina con 7 y a otra con server 2003 y marca, Unable to connect to your database server using the provided settings.

    Filename: C:\xampp\htdocs\control\system\database\DB_driver.php

    Line Number: 124, creo que tengo que tener instalado el sql server 2012, tienen el 2000 y en la otra 2008 r2

    ResponderEliminar
  2. En efecto, para que todo funcione bien tienes que tener la combinación de el "SQL Native Client de Microsoft" y el "Driver de Microsoft para PHP para SQL Server" que funcionen bien entre ellos, Y en el caso de el setup que explique para Windows 7 es con la version para conectarse a SQL Server 2012.

    ResponderEliminar
  3. Gracias ya me funciona pero ahora no puedo unir GroceryCrud con sql server 2012, solo me funciona en Mysql. Tiene alguna idea de como integrarlos.

    ResponderEliminar
  4. En mi trabajo se utiliza MS SQL 2008 r2, alguna sugerencia he hecho todo lo que he encontrado y nada.
    Unable to connect to your database server using the provided settings.

    ResponderEliminar
  5. Como funciona si te conectas desde linux

    ResponderEliminar
    Respuestas
    1. en ese caso necesitas las librerias apropiadas para Linux, ( Y no creo que haya una publicada por Microsoft). Quizas este post te sea de ayuda PHP Accessing MS SQL Server in Linux

      Eliminar