Usuarios
no autorizados a conectarse a SQL Server. Seguridad.
Introducción.
Un
problema bastante común es intentar conectarse con SQL Server
y recibir un mensaje de error indicando que algo ha fallado. Las causas
pueden ser múltiples, entre ellas las siguientes:
- Se está
intentando la conexión con SQL Server mediante autentificación
estándar cuando ésta está deshabilitada.
- El usuario no tiene
permiso para conectarse a SQL Server
- El nombre del servidor
se ha especificado de forma incorrecta
- El servicio de
SQL Server está parado
- Hay un problema
de conexión en la red.
- Se está
usando un protocolo en el cliente que está deshabilitado en el
servidor
Usar autentificación standard cuando está deshabilitada.
Al
instalar SQL Server 2000 en cualquiera de sus ediciones incluida MSDE,
de forma predeterminada, sólo está disponible la autentificación
integrada, Windows o de confianza, estando deshabilitada la autentificación
SQL Server o estándar. De esta manera cualquier intento de conexión
usando autentificación estándar fallará. Por ejemplo
si intentamos conectarnos usando el usuario sa recibiríamos el
siguiente mensaje de error:
Error
de inicio de sesión del usuario 'sa'. Motivo: no está asociado
a una conexión de SQL Server de confianza
Para
resolver este problema tenemos dos alternativas, o usar autentificación
integrada o habilitar la autentificación mixta (integrada más
estándar).
Podemos
habilitar la autentificación estándar de dos formas diferentes:
mediante el Administrador Corporativo o escribiendo un valor en el registro
de Windows. Lo más recomendable es usar el Administrador Corporativo
y estos serían los pasos a seguir:
- Pulsar con el
botón derecho del ratón en el servidor
- Elegir propiedades
- En la ficha "seguridad"
elegir "SQL Server y Windows"
- Reiniciar el servicio
de SQL Server
Si
no tenemos disponible el Administrador Corporativo podemos cambiar el
valor LoginMode en el registro de Windows para que tenga un valor de 2
y reiniciar el servicio de SQL Server. La clave donde se encuentra este
valor depende de la instancia.
Para
la instancia predeterminada la clave es:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer
Y
para una instancia con nombre:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft
SQL Server\NombreInstancia\MSSQLServer
El
usuario no tiene permiso para conectarse con SQL Server.
Al
instalar SQL Server 2000 sólo hay dos inicios de sesión,
uno estándar: sa y otro windows: BUILTIN\Administradores.
Si además, como hemos visto antes, la autentificación estándar
está deshabilitada, sólo tenemos BUILTIN\Administradores
que son los administradores locales de la máquina donde se ejecuta
SQL Server. De tal manera que ningún otro usuario podrá
conectarse con SQL Server. Para que otro usuario pudidiera conectarse
con SQL Server habría por tanto que añadir el correspondiente
inicio de sesión.
Un
problema común en este sentido, es la conexión desde una
página ASP o ASP.NET utilizando autentificación integrada
cuando en el IIS tenemos habilitado el acceso anónimo. En este
caso el usuario que intenta iniciar sesión en SQL Server es IUSR_NombreMáquina
o IWAM_NombreMáquina o ASPNET. La solución a este problema
es añadir el inicio de sesión correspondiente a estos usuarios
de Windows o habilitar y usar la autentificación estándar.
Nombre
de servidor incorrecto, servicio parado, protocolo deshabilitado
Cuando
ponemos un nombre de servidor incorrecto o el servicio de SQL Server está
parado o el protocolo que estamos usando está deshabilitado en
el servidor, recibiremos un mensaje de error como este:
No
existe el Servidor SQL Server o se ha denegado el acceso al mismo
Tenemos
que tener en cuenta que para una instancia predeterminada sólo
es necesario poner el nombre de la máquina donde se ejecuta SQL
Server, pero para las instancias con nombre es necesario especificarlo
de la siguiente manera: NombreServidor\NombreInstancia.
Otra
cuestión es que no se pueda resolver el nombre del servidor como
por ejemplo cuando accedemos a través de Internet. En este caso
podríamos especificar la dirección IP del servidor en lugar
de su nombre.
Deberíamos
comprobar también que no esté parado el servicio, esto es
fácilmente comprobable con el administrador de servicios de SQL
Server.
Los
protocolos pueden estar habilitados o deshabilitados en el servidor. Para
comprobar y modificar esto, disponemos de la herramienta de red del servidor.
|