Мне нужно разрешить пользователю доступ к базе данных сразу после восстановления базы данных. Я попытался это:Восстановление сервера SQL и разрешение пользователя
Use [master]
go
restore database DBTest
from disk='E:\userTemp\DBTest1.bak'
WITH MOVE 'DBTest' TO 'E:\SQLData\DBTest1.mdf',
MOVE 'DBTest_log' TO 'F:\SQLData\DBTest1.ldf',
replace, recovery, stats=5, maxtransfersize=1048576
Print '---------------------------RESTORE COMPLETED ---------------------------'
-- Create the user.
CREATE USER [user_indi] FOR LOGIN [user_indi]
GO
USE [DBTest]
GO
EXEC sp_addrolemember N'db_owner', N'user_indi'
GO
Когда я делаю это, я получаю следующее сообщение об ошибке:
Msg 15023, Level 16, State 1, Line 22
User, group, or role 'user_indi' already exists in the current database.
Msg 15410, Level 11, State 1, Procedure sp_addrolemember, Line 75
User or role 'user_indi' does not exist in this database.
Итак, что добавляемая команду, чтобы удалить пользователь в середине. Теперь это выглядит так.
Use [master]
go
restore database DBTest
from disk='E:\userTemp\DBTest1.bak'
WITH MOVE 'DBTest' TO 'E:\SQLData\DBTest1.mdf',
MOVE 'DBTest_log' TO 'F:\SQLData\DBTest1.ldf',
replace, recovery, stats=5, maxtransfersize=1048576
Print '---------------------------RESTORE COMPLETED ---------------------------'
-- Remove the user
USE [DBTest]
GO
DROP USER [user_indi]
GO
-- Create the user.
CREATE USER [user_indi] FOR LOGIN [user_indi]
GO
USE [DBTest]
GO
EXEC sp_addrolemember N'db_owner', N'user_indi'
GO
Теперь, я получаю ошибку:
Msg 15151, Level 16, State 1, Line 2
Cannot drop the user 'user_indi', because it does not exist or you do not have permission.
Я не могу позволить ошибки, как мне нужно запланировать восстановление и разрешение работы. Почему я получаю эту ошибку и как ее можно обойти?
RM
Ваши инструкции 'USE [DBTest]' находятся в двух разных местах. В первом вы пытаетесь создать пользователя в MASTER. Во втором вы создаете его в DBTest. –
Вот и все. Благодаря!. Я не уверен, как я могу сделать это как ответ. – user1666952