SQL-Server: concede permiso DBO al usuario en la base de datos

12

Tengo una base de datos de informes que restauro todas las noches a partir de una copia de seguridad de la base de datos de producción. Cuando restauro, necesito agregar un usuario a la DBOfunción de esa base de datos.

Pensé que esto funcionaría:

use Restored_Prod
go
exec sp_addrolemember 'db_owner', 'chris'
go

Pero recibo el siguiente error, ya que ese usuario no existe en la base de datos Restored_Prod:

Msg 15410, Level 11, State 1, Procedure sp_addrolemember, Line 75
User or role 'chris' does not exist in this database.

¿Cómo agrego el usuario 'chris' a la base de datos para poder ejecutarlo sp_addrolemembery convertirlo en uno DBOde esa base de datos? ¿Hay alguna manera de agregar los permisos de usuario usando el sp_addrolemembercomando del master db donde existe el usuario?

OrangeGrover
fuente

Respuestas:

30

Los principios de usuario deben existir en una base de datos antes de que pueda otorgarles permisos.

use Restored_Prod
GO

CREATE USER [chris] FROM LOGIN [chris];
exec sp_addrolemember 'db_owner', 'chris';
GO

http://technet.microsoft.com/en-us/library/ms173463.aspx

Mike Fal
fuente
1
Eso tiene sentido: no sabía que había una distinción entre inicio de sesión y usuario. Gracias
OrangeGrover
2
Vea esta respuesta a una pregunta diferente donde explico la relación de inicio de sesión / usuario con un poco más de detalle.
Mike Fal