lunes, 20 de abril de 2009

MostroEnTurno Vs Server is not configured to Data Access

Hago esto más bien como un respaldo para que no me pase lo de siempre y olvide donde demonios anoté la solución a este problema.

El escenario es que debo mover un servidor de bases de datos de una caja a otra, algo que he hecho en el pasado al menos una decena de veces y que nunca ha presentado mayor problema. Hasta hoy.

Luego de que se ha hecho todos los cambios de nombre y direcciones IP y que ya se ha validado el nuevo servidor en el dominio y refrescado el DNS aparece un error en la aplicación que no permite el acceso a nada, pareciera como si las consultas enviadas desde la aplicacion web hacia el servidor de bases de datos no se concretaran porque el servidor no se encuentra asi mismo.

Lo primero que pense es que quizas el desarrollador habia incluido el nombre del servidor en las sentencias de SQL, lo cual solo tendría sentido si la aplicacion hiciera uso de fuentes externas de datos (de otros servidores y otras bases de datos pues) pero no es así. Examinando el codigo en asp pude llegar hasta el stored procedure utilizado solo para constatar que la codificación era la correcta.

Hasta aqui ninguna teoría aún de porque el servidor de base de datos esta tratando de ejecutar las consultas sobre si mismo como si fuera un servidor vinculado.

El siguiente paso fue revisar que no fuera necesaria la creación de enlaces ODBC o definir alias para establecer la comunicacion entre el servidor WEB y el de bases de datos, despues de revisar la configuración del primero y de crear un alias el problema aun persistía mostrando el error:

Server: Msg 7202, Level 11, State 2, Line 1
Could not find server 'Server1' in sysservers. Execute sp_addlinkedserver to add the server to sysservers.


Como aun tenía el servidor anterior en linea lo que hice fue arrancar los servicios de SQL server y direccionar el sitio hacia el antiguo servidor y entonces si funciono, lo que hizo saber que el problema no se debia ni a problemas de ruteo ni a broncas en el dns a causa del cambio de nombres. La bronca estaba en el nuevo servidor de bases de datos.

Empece a comparar ambos servidores de bases de datos hasta que revisando la parte de remote servers note que el anterior tenia un enlace hacia si mismo que en el nuevo no aparecía. Segun recuerdo los remote servers en SQL se definen para lograr la compatibilidad con servidores con versiones atrasadas de SQL, digamos que si estás en SQL 2000 y tu consulta va extraer datos de un SQL 7.5 defines un enlace hacia servidor, aunque lo mismo puedes hacer definiendolo como servidor vinculado (linked server). Como recordara el público: en SQL no se puede establecer un servidor local como linked server, y este era principalmente el problema que tenia. Entonces lo obvio era definir el servidor como remote server haciendo el mapeo de usuarios de forma correcta. Una vez que hice esto cambio el mensaje de error por este:

Server 'SERVER1' is not configured for DATA ACCESS.

Luego de una búsqueda en google y de andar en una o dos páginas sin resultados (la mayoría de los posts hacian referencias a este problema pero en ejecución de paquetes DTS) encontre este post con un escenario similar al mio y - mejor aun - con una solución.

Aparentemente cuando se hizo el cambio de nombre el servicio de SQL decidio invalidar el servidor como una fuente activa de datos cerrando el acceso a las consultas, aunque no del todo porque si se podía iniciar sesión en la aplicacion y el error solo aparecia en partes especificas. La ejecución de un par de sentencias ayudaron a solucionar el problema.

Primero ejecute: exec sp_helpserver para darme cuenta que el servidor no estaba 'registrado' como una fuente valida, de nuevo el cambio de nombres e IP aparecía como causa del problema.

Enseguida ejecute una sentencia para cambiar el status del server y permitir el acceso por RPC y ejecución de consultas:

sp_serveroption @server = 'SERVER1',@optname = 'DATA ACCESS',@optvalue = 'TRUE'


Una vez hecho esto la aplicación ya funciono correctamente... bueno eso es una exageracion pero hasta el momento no se han presentado errores. Aunque no quede conforme con el estado del servidor y menos en tener ese tipo de configuracion de remote server para que funcione. Asi que este encuentro se queda en empate y este fin
o antes será el desenlace.

Espero que a alguien le sirva esto o de que al menos yo me acuerde que lo puse aqui para futuras broncas.

Paz.

PD: No espero muchos comentarios.

3 comentarios:

Johan dijo...

Gracias, me ayudó mucho.

Mostro En Turno dijo...

Orale pues que chido que te haya servido. Eso me anima a publicar otras soluciones a broncas igual de siniestrosas.

Saludos y gracias por comentar.

Anónimo dijo...

Tu diagnostico y solución son excelentes.

Muchas Gracias.