sábado, 2 de julio de 2011

Sql Server does not exists or Access is Denied Error

Trabajar con Base de Datos muchas veces necesita de la colaboración bien de cerca de un administrador de redes, ya que para muchos negocios no se concibe una base de datos sin comunicación externa al servidor. Y un error que se le puede presentar a cualquier persona que trabaje con SQL Server (no importa la versión, 7, 2000, 2005 o 2008) es que no te deje conectar desde fuera del servidor donde se encuentra ejecutándose.

Si en un momento dado recibe el error de SQL Server does not exists or access is denied, entre otros errores de conexión indicando que no se puede acceder o que no permite conexiones remota, favor verificar cada una de la configuración del servidor, como les muestra en las siguientes pantallas.

Para esto, vamos a tomar como piloto un motor de base de datos SQL Server. Lo primordial es verificar que tenga acceso remoto. En este caso marcamos el Check Box indicando que deseamos permitir que se puedan conectar remotamente al servidor.

Otro punto importante es el tipo de autenticación que se está utilizando para acceder al servidor, si es Windows only solo podrá loggearse si tiene un dominio y si el mismo está asociado al SQL. De otra forma prefiero que se utilice la opción de SQL and Windows, pero ojo, utilizar un strong password para estos fines (nada de ., 123, abc, etc).
Ojo, tener en cuenta la configuración de la forma en que va a acceder desde fuera, cuales son los protocolos configurados, TCP/IP para poder acceder al servidor mediante una dirección IP o named Pipes para acceder con el nombre del servidor o el alias que se encuentre configurada. Algo que muchos desconocen (hasta hace unos días no lo sabía) es que aunque SQL Server se configura para ser accedido por el puerto 1433, es muy posible que ese no sea el único puerto que utilice para conectarse. 

Como pueden ver en la siguiente imagen, de todas las conexiones que tenía mi servidor, ninguna era utilizando el puerto 1433, y habían dos clientes conectados al mismo en el momento de realizar esta traza. Los puertos de conexión son generados de forma dinámica por el servidor al momento de crearse la conexión ODBC (si, no es solo una conexión nativa, SQL configura una conexión ODBC por nosotros al momento de instalarse).
Como pueden ver LocalServer es mi conexión de SQL Server y ese es el nombre que tiene el ODBC, y el puerto que utiliza es dinámico, aunque se puede configurar por defecto el 1433 como puede ver en la siguiente pantalla.
Espero que esto les ayude, existen otras formas de setear el puerto de forma estática por medio del registro de Windows, sin embargo, nunca me gusta hacer referencia a estas técnicas, ya que pueden ser un poco molestas e incómodas de interpretar, así como delicadas para su equipo. Si nada de esto funciona, verifique cuidadosamente la configuración de su firewall, ya que puede estar denegando el acceso, así como su antivirus en caso de tener uno configurado.

No hay comentarios: