Error al Restaurar una Base de Datos

Después de hacer una Restauración de una base de datos es probable que nos topemos con que no podemos accesar a dicha base de datos y se nos muestre un error como el siguiente:

"The table either does not exist or the current user does not have permissions on that table"

"La entidad de seguridad de servidor "usuario" no puede tener acceso a la base de datos "MI_BASE_DE_DATOS" en el contexto de seguridad actual."

"La base de Datos no está Accesible"

Esto es debido a que el propietario (owner) de nuestra base de datos quedó des-asignado  de la base de datos que fue restaurada. Lo que algunos llaman "Usuario Huerfano"

La solución es sencilla:

primero que nada debes loguearte a tu servidor de bases de datos con el usuario SA una vez logueado Ejecuta el siguiente Stored prodedure en la base de datos que quedó con el problema de usuario:

USE MI_BASE_DE_DATOS
SP_CHANGE_USERS_LOGIN 'REPORT'

El resultado serán los usuarios huérfanos de la bd:
usuario huerfano acceso base de datos




Ahora, cámbiate a la base de datos Master y ejecutas el siguiente SP sustituyendo los valores de los parámetros por tus valores.

Use Master
exec sp_addlogin @loginame = 'Mi_usuario', @passwd= 'Mi_password', @defdb = 'Mi_Base_De_Datos'

Quizá te marque un error como el siguiente:
La entidad de seguridad de servidor 'Mi_usuario' ya existe.
The server principal 'Mi_usuario' already exists.

No te preocupes, es solamente el paso 1, eso quiere decir que ya existe el usuario en el contexto del servidor. Ahora procedemos a reparar el usuario Huérfano con el siguiente SP. pero antes nos cambiamos a la base de datos que tenía el problema del usuario

Use Mi_Base_De_datos
sp_change_users_login 'Update_One', 'Mi_Usuario', 'Mi_usuario'

Comandos completados correctamente.


para comprobar podemos ejecutar nuevamente la siguiente consulta y ya no debería aparecernos el usuario huérfano.

USE MI_BASE_DE_DATOS
SP_CHANGE_USERS_LOGIN 'REPORT'

Para finalizar, cerramos la sesión del usuario SA y nos volvemos a conectar ahora con el usuario que tenía el problema.


Mis Mejores Saludos
Xavier García


No hay comentarios:

Publicar un comentario