SQL-Server - предоставить пользователю разрешение DBO на базу данных

12

У меня есть база данных отчетов, которую я восстанавливаю каждую ночь из резервной копии рабочей базы данных. При восстановлении мне нужно добавить пользователя в DBOроль для этой базы данных.

Я думал, что это будет работать:

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

Но я получаю следующую ошибку, так как этот пользователь не существует в базе данных Restored_Prod:

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

Как добавить пользователя 'chris' в базу данных, чтобы иметь возможность запустить его, sp_addrolememberчтобы сделать его DBOиз этой базы данных? Есть ли способ добавить пользовательские разрешения, используя sp_addrolememberкоманду из главной базы данных, где пользователь существует?

OrangeGrover
источник

Ответы:

30

Принципалы пользователей должны существовать в базе данных, прежде чем вы сможете предоставить им разрешения.

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

Майк Фал
источник
1
Это имеет смысл - я не знал, что существует различие между логином и пользователем. Спасибо
OrangeGrover
2
Посмотрите этот ответ на другой вопрос, где я объясню отношения логин / пользователь чуть более подробно.
Майк Фал