SQL-Server - Accorder l'autorisation DBO utilisateur sur la base de données

12

J'ai une base de données de rapports que je restaure tous les soirs à partir d'une sauvegarde de la base de données de production. Lors de la restauration, je dois ajouter un utilisateur au DBOrôle de cette base de données.

Je pensais que cela fonctionnerait:

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

Mais j'obtiens l'erreur suivante, car cet utilisateur n'existe pas dans la base de données Restored_Prod:

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

Comment ajouter l'utilisateur «chris» à la base de données pour pouvoir exécuter le sp_addrolememberpour en faire un DBOde cette base de données? Existe-t-il un moyen d'ajouter les autorisations utilisateur à l'aide de la sp_addrolemembercommande de la base de données master où l'utilisateur existe?

OrangeGrover
la source

Réponses:

30

Les principaux utilisateurs doivent exister dans une base de données avant de pouvoir leur accorder des autorisations.

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
la source
1
Cela a du sens - je ne savais pas qu'il y avait une distinction entre la connexion et l'utilisateur. Merci
OrangeGrover
2
Voir cette réponse à une autre question où j'explique la relation login / utilisateur de manière plus détaillée.
Mike Fal