恢复数据库后,恢复原来数据用户的权限

我们公司有两个服务器,一个为测试用途,当从正式环境恢复到测试环境的时候,会出现原来用户无法访问的问题。但当你想加上原来用户的权限,系统会提示已经存在。但你并不没有看见,这个时候应该怎么办呢?
我们的组长提供了以下这个方法,

新建一个存储过程

SET  QUOTED_IDENTIFIER  ON  
GO
SET  ANSI_NULLS  ON  
GO

CREATE    PROCEDURE   [ sz_dvp_restore_login_user ]
-- INPUT
@DBName               nvarchar ( 50 ),
@UserName             nvarchar ( 50 )
AS
    
Exec  sp_configure  ' allow updates ' , 1
    
RECONFIGURE   WITH  OVERRIDE 
    
    
Declare   @ExecStr   nvarchar ( 4000 )    
   
    
Select   @ExecStr   = ' Declare @b varbinary(85)  '   +  
                    
' Use Master  '
                    
+   ' Select @b = sid From syslogins Where Name = '''   +   @UserName   +   ''''
                    
+   '  Use  '   +   @DBName
                    
+   '  Update sysusers Set sid = @b Where name = '''   +   @UserName   +   ''''  

    
-- Print @ExecStr
     Exec ( @ExecStr )

    
Exec  sp_configure  ' allow updates ' , 0
    
RECONFIGURE   WITH  OVERRIDE
GO
SET  QUOTED_IDENTIFIER  OFF  
GO
SET  ANSI_NULLS  ON  
GO

执行这个存储过程
sz_dvp_restore_login_user  ' dbName ' , ' username '

执行完后,就可以访问了。

你可能感兴趣的:(数据库)