SQL Server: Workaround para solucionar el problema “xp_regread() returned error 5, ‘Access is denied.’”!

Pues este fue uno de los errores con los qué me encontré al intentar, entre otras cosas, intentar añadir configurar el modo mixto de autenticación en una instancia de SQL Server Express creada en una máquina con Windows 7. Por suerte, casi siempre hay algún workaround para este tipo de errores “tan majos” por lo que os voy a contar el que me funcionó en mi caso:

  • Lo primero, forzar a SQL Server a soportar el modo mixto de autenticación tocando el registro (http://support.microsoft.com/kb/285097):
    • Ejecutamos Regedit en el equipo y nos vamos a Go to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQLServer.
    • Cambiamos el valor de la propiedad LoginMode a 2 para forzar el modo mixto de autenticación.
    • Reiniciamos SQL Server y comprobamos en las propiedades de la instancia (usando SQL Server Management Studio) que se ha configurado correctamente el modo de autenticación.
image image
  • En segundo lugar, a pesar de esta pequeña victoria puede que nos encontremos con problemas a la hora de por ejemplo crear un login de SQL de nuevo por tema de permisos…pero de nuevo tenemos un workaround que pasa por crear dicho login a través de la línea de comandos y usando directamente el ejecutable sqlservr.exe disponible en el directorio de instalación de SQL Server. Para ello (http://msdn.microsoft.com/en-us/library/dd207004.aspx):
    • Abrimos la utilidad SQL Server Configuration Manager y paramos la instancia concreta para la que vamos a crear el login de SQL usando la línea de comandos.
    • Abrimos una ventana de línea de comandos y nos vamos a la ruta donde reside sqlservr.exe que en mi caso, y para SQL Server Express, es C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Binn.
    • Ejecutamos sqlservr.exe con las opciones –m –c –sSQLEXPRESS de forma que iniciamos la instancia por línea de comandos y podamos ejecutar operaciones contra la misma también por línea de comandos y usando la herramienta sqlcmd que reside en el mismo directorio que sqlservr.
image image image
    • Abrimos otra ventana de línea de comandos, nos vamos a la ruta comentada y en este caso ejecutamos sqlcmd –s <NombreMaquina>\SQLEXPRESS para poder lanzar nuestros comandos T-SQL contra la instancia de SQL Server Express.
    • Ejecutamos las sentencias T-SQL para crear el login de BD que necesitamos:
   1: CREATE LOGIN jcgonzalez WITH PASSWORD='jcgonzalez', DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF

   2: EXEC sys.sp_addsrvrolemember 'jcgonzalez','sysadmin'

   3: GO

    • Si todo va bien, en la salida por pantalla no debería mostrarse ningún error de ejecución:

image

  • Finalmente, comprobamos que el login se ha creado y lo podemos usar en SQL Server Management Studio:
    • Paramos la ejecución de sqlservr y sqlcmd  en la línea de comandos mediante Ctrl+C.
    • Arrancamos la instancia de SQL Server en el SQL Server Configuration Manager.
    • Iniciamos sesión con el login de BD creado usando SQL Server Management Studio.

image

Fuente: http://social.msdn.microsoft.com/Forums/en-US/sqlsecurity/thread/60b888bf-30dc-4eaf-bea8-5fd55181f8e5

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s