SQL Server还原和用户权限

时间:2014-01-28 15:17:02

标签: sql sql-server permissions restore

我需要在数据库恢复后立即允许用户访问数据库。 我试过这个:

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_indi'已存在于当前数据库中   Msg 15410,Level 11,State 1,Procedure sp_addrolemember,Line 75
  此数据库中不存在用户或角色“user_indi”。

所以,添加命令以删除中间的用户。现在看起来像这样。

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
  无法删除用户'user_indi',因为它不存在或您没有权限。

我不能允许错误,因为我需要安排此恢复和权限作业。为什么我会收到此错误以及如何解决此问题?

RM

1 个答案:

答案 0 :(得分:0)

您的USE [DBTest]声明分布在两个不同的地方。

在第一个中,您尝试在MASTER中创建用户。在第二个中,您将在DBTest中创建它。

相关问题