Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/12/2012, 05:01
ugeltroglodita
 
Fecha de Ingreso: diciembre-2012
Mensajes: 17
Antigüedad: 11 años, 10 meses
Puntos: 2
Replicar configuración antigua

En mi trabajo, el proyecto actual consiste en llevar el mantenimiento y desarrollo informático a otra empresa (empresa de comercio electrónico). Esta otra empresa tiene en su web su principal fuente de negocio, y tiene un solo servidor (no hay test, ni preproducción, ni un espejo por si cae el ppal).

Nuestra primera medida ha sido contratar un servidor en cloud para tener un espejo por si cae el principal, y luego ya entraríamos en temas de un entorno de pruebas y tal. Pero me estoy encontrando con problemas a la hora de reproducir la misma configuración, puesto que el servidor actual está configurado desde hace 7-8 años (por las fechas que veo en los archivos), y muchas cosas han cambiado desde entonces.

La arquitectura de la aplicación es Windows Server + PHP 5.0.4 + SQL Server 2005. Y mi problema está en la conexión con la base de datos (a través de la extensión php_mssql.dll). He leído mucho acerca del tema durante tres semanas, me he familiarizado con los problemas de la ntwdblib.dll, y he probado mil cosas. De inicio, ni siquiera conectaba con la base de datos, cosa que conseguí arreglar. Pero no consigo replicar el mismo funcionamiento, y obviamente el código debo dejarlo como está, porque es un código que, en las condiciones adecuadas, funciona.

Mi problema es que si pongo la misma versión de la ntwdblib.dll que mi cliente tiene en su servidor, a mí ni me conecta con la base de datos. He encontrado otra
versión que me permite conectar, pero me fallan queries que en el cliente van. E incluso si yo muestro por pantalla la query que falla, la cojo y la pongo directamente en la consola del SQL Server, la query funciona.

Se me escapa un poco qué puede estar pasando y no sé por dónde tirar. ¿Alguna idea?

Datos útiles:

Cliente: Windows Server 2003 + IIS 6 + PHP5.0.4 + ntwdblib (versión 2000.2.8.0, versión del producto 7.00.839) + SQL Server 2005
Local: Windows 7 en mi pc y Windows Server 2008 en el nuevo servidor + IIS7 + PHP5.0.4 + ntwdblib (versión 2000.2.8.0, versión del producto 7.00.839) + SQL Server 2005
Es curioso porque sale la misma versión para la dll en los dos casos, pero os aseguro que si cambio un archivo por otro deja de funcionar.

Y luego pongo un ejemplo de una query que no ejecuta y qué me dice el PHP:
"INSERT INTO clientes( nombre, apellidos, sexo, dni, alias, direccion, ciudad, provincia, cpostal, pais, telefono, fax, email, nclientemae, observaciones , contrasenya, fnacimiento, marketing, catalogo, alta) VALUES( 'Nombre', 'Apellidos', 'H', '', 'UsuarioN', 'Direccion', 'Poblacion', 'Provincia', '08000', 'España', '', '', '[email protected]', '', 'Observaciones', 'password', '31/12/1994', 0, 0, '31/12/2012' )"
Y el fallo que da es:
PHP Warning: mssql_query() [<a href='function.mssql-query'>function.mssql-query</a>]: message: No se puede insertar el valor NULL en la columna 'fNacimiento', tabla 'xxx.xxx'. La columna no admite valores NULL. Error de INSERT. (severity 16) in C:\inetpub\wwwroot\html\includes\db.php on line 73

Si pongo esta query directamente en el SQL Server funciona OK. Así que entiendo que es un problema con la librería que media entre el PHP y el SQL Server.