La interacción entre PHP y SQL Server es una necesidad común en ciertos entornos empresariales, especialmente cuando se trabaja con sistemas legados o se requiere integrar aplicaciones PHP con infraestructuras de bases de datos Microsoft ya existentes. Aunque MySQL es una elección popular con PHP, la conectividad con SQL Server es perfectamente viable, aunque requiere una configuración específica de los controladores.
- Configuración de SQL Server 2008 Express
La instalación de SQL Server 2008 Express es un proceso relativamente sencillo. Sin embargo, es crucial recordar el nombre de la instancia de la base de datos que se establece durante la instalación. Comúnmente, la instancia predeterminada es SQLEXPRESS, aunque es posible configurar un nombre personalizado, como SQLSERVER.
1.1. Configuración del Acceso a la Base de Datos
Para facilitar la conectividad desde aplicaciones, es esencial configurar un método de autenticación y establecer una contraseña robusta para el usuario sa. Este paso es fundamental para el acceso programático a la base de datos.
- Acceso y Gestión de la Base de Datos
La herramienta principal para la gestión de SQL Server es SQL Server Management Studio. Al intentar conectarse, es posible encontrar un error común relacionado con la conexión de red o la instancia. Un ejemplo de mensaje de error podría ser:
Error relacionado con la red o específico de la instancia al establecer una conexión con SQL Server. El servidor no fue encontrado o no es accesible. Verifique que el nombre de la instancia sea correcto y que SQL Server esté configurado para permitir conexiones remotas. (provider: Proveedor de canalizaciones con nombre, error: 40 - No se pudo abrir una conexión con SQL Server) (Microsoft SQL Server, Error: 53)
Este problema suele resolverse especificando el nombre del servidor en el formato NombreDeEquipo\NombreDeInstancia. Por ejemplo, si el nombre de su equipo es MI_PC y la instancia es SQLEXPRESS, la entrada correcta sería MI_PC\SQLEXPRESS. Asegúrese de que el servicio de SQL Server esté en ejecución y configurado para aceptar conexiones remotas si es necesario.
Una vez que la conexión a través de Management Studio es exitosa, se confirma que la instalación de SQL Server es funcional. El siguiente paso es configurar PHP.
- Preparación de Controladores para PHP
A partir de PHP 5.3, los controladores oficiales para SQL Server son mantenidos por Microsoft. Estos archivos DLL no vienen incluidos en el paquete base de PHP y deben descargarse por separado.
3.1. Instalación del Cliente Nativo de SQL Server
Es necesario instalar el Microsoft SQL Server Native Client correspondiente a la versión de SQL Server. Para SQL Server 2008, se suele requerir el Microsoft SQL Server 2008 R2 Native Client. Puede encontrar enlaces de descarga en la documentación oficial de PHP o en el sitio de descargas de Microsoft.
3.2. Descarga del Controlador de SQL Server para PHP
Para PHP 5.3.x, el controlador adecuado es SQLSRV 3.0. Este paquete incluye los archivos DLL necesarios para la extensión sqlsrv y su versión PDO (pdo_sqlsrv). Puede descargarlo desde el Centro de Descargas de Microsoft.
3.3. Selección y Ubicación de los Archivos del Controlador
Después de descargar y descomprimir el paquete SQLSRV 3.0 (generalmente un archivo .exe autoextraíble), se obtendrán varios archivos DLL. Es crucial seleccionar los correctos según la configuración de su PHP. Para PHP 5.3.x en un entorno con "Thread Safety" (seguridad de hilos) habilitada, los archivos a elegir son php_pdo_sqlsrv_53_ts.dll y php_sqlsrv_53_ts.dll. Estos archivos deben copiarse al directorio ext dentro de la instalación de PHP (por ejemplo, C:\php\ext).
### 3.4. Verificación de la Seguridad de Hilos de PHP
Para determinar si su instalación de PHP es "Thread Safe" (TS) o "Non-Thread Safe" (NTS), puede crear un archivo phpinfo.php con el siguiente contenido:
<?php phpinfo(); ?>
Al acceder a este archivo en su nvaegador, busque la línea "Thread Safety". Si su valor es "enabled", significa que PHP es Thread Safe (TS), y deberá usar los DLL con el sufijo _ts. Si está "disabled", PHP es Non-Thread Safe (NTS) y deberá usar los DLL sin el sufijo _ts.
4. Configuración del Archivo php.ini
Una vez que los archivos DLL de los controladores están en el directorio ext, el siguiente paso es activar estas extensiones en el archivo de configuración de PHP, php.ini.
4.1. Habilitación del Controlador SQLSRV
Busque la sección de extenisones en php.ini y agregue la siguiente línea para cargar la extensión sqlsrv (ajuste el nombre del DLL según sea TS o NTS):
extension=php_sqlsrv_53_ts.dll
4.2. Habilitación del Controlador PDO_SQLSRV
De manera similar, para usar la capa de abstracción de datos PDO con SQL Server, agregue la siguiente línea:
extension=php_pdo_sqlsrv_53_ts.dll
Además, asegúrese de que la extensión general de PDO también esté habilitada:
extension=php_pdo.dll
4.3. Verificación de la Carga de Extensiones
Después de guardar los cambios en php.ini y reiniciar el servidor web (Apache, Nginx, IIS, etc.), vuelva a cargar el archivo phpinfo.php. Deberá ver secciones dedicadas a sqlsrv y pdo_sqlsrv, lo que indica que los controladores se han cargado correctamente.
5. Consideraciones Importantes
Al trabajar con SQL Server, es importante evitar nombrar tablas como user, ya que este es un nombre reservado para una tabla de sistema. Esto puede causar conflictos y errores inesperados en sus aplicaciones.