sábado, abril 02, 2011

Disaster Recovery: ¿Cómo recuperar la contraseña del usuario SA en SQLServer 2005 y 2008?

El post el cual cito como referencia al final de este artículo fue el que me salvó de tener que reinstalar SQLServer 2008 Express Edition, si bien la solución planteada en el post era para SQLServer 2005 también sirve para la versión 2008.

El problema fue, obviamente, que me olvidé de la contraseña del SA de la instancia del SQLServer 2008 Express pues además tengo instalada la versión 2005 Express que es la que uso habitualmente.

Lo primero que intenté fue loguearme en el SQLServer Management Studio Express usando la autenticación Windows, es decir, entrar con mi usuario de red y así poder cambiar la contraseña del SA, pero me encontré con este mensaje de error:

Msg 15151, Level 16, State 1, Line 1
Cannot alter the login 'sa', because it does not exist or you do not have permission.

La solución fue seguir las indicaciones del post que mencioné antes y los pasos fueron:

  1. Abrir el Configuration Manager Tool desde el menú "Microsoft SQL Server 2008 \ Configurations Tools"
  2. Parar la instancia del SQLServer de la cual se quiere recuperar la contraseña del SA.
  3. Acceder a las propiedades de la instancia (botón derecho Properties) e ir hasta el tab Advanced y ahí ir hasta la propiedad "Startup parameters" y agregar al final de todo ";-m" (las comillas no van y asegurarse de no dejar espacio entre el ; y lo que ya había en esa propiedad)
  4. Guardar este cambio en las propiedades y "arrancar" nuevamente la instancia
  5. Desde una línea de comandos DOS, conectarse a la instancia con sqlcmd -S ComputerName\instance (ComputerName es el nombre de la computadora o servidor e instance es el nombre de la instancia en mi caso era SQLEXPRESS2008)
  6. Luego escribir esta línea y presionar enter EXEC sp_addsrvrolemember 'DOMINIO\USUARIO', 'sysadmin'; (en este caso puse el dominio y usuario con el que me logueo a mi PC y que además tiene permisos de administrador sobre mi PC, se supone que esto lo que hace es darle los mismos previlegios a mi usuario que los que tiene el SA pues se le asigna el rol sysadmin)
  7. Luego escribir GO y presionar enter
  8. Luego de esto sacar el ";-m" de los "Startup parameters" y reiniciar la instancia
  9. Conectarse al SQLServer Management Studio Express usando la autenticación Windows y si van a Security \ Logins van a ver el usuario que le agregaron el rol de sysadmin en el paso 6 y yendo a las propiedades del usuario SA deberían poder cambiarle la contraseña
Disclaimer: es una receta que en mi caso me funcionó y no me hago responsable del uso que puedan hacer de estas indicaciones ni de lo que puedan llegar a romper haciendo esto.

La fuente original esta aquí: