2014-01-28 2 views
0

Мне нужно разрешить пользователю доступ к базе данных сразу после восстановления базы данных. Я попытался это:Восстановление сервера 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

+0

Ваши инструкции 'USE [DBTest]' находятся в двух разных местах. В первом вы пытаетесь создать пользователя в MASTER. Во втором вы создаете его в DBTest. –

+0

Вот и все. Благодаря!. Я не уверен, как я могу сделать это как ответ. – user1666952

ответ

0

Ваших USE [DBTest] заявлений находятся в двух разных местах.

В первом случае вы пытаетесь создать пользователя в MASTER. Во втором вы создаете его в DBTest.

Смежные вопросы