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

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

新建一个存储过程

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'

执行完后,就可以访问了。
posted @ 2007-04-19 16:15 小强(占卜师) 阅读(527) 评论(3) 编辑 收藏

 回复 引用 查看   
#1楼2007-04-19 18:37 | Jeff Yang      
我一直这样解决的:

EXEC sp_change_users_login 'Auto_Fix','xxxxxx',null,'yyyyyy';

其中:'xxxxxx' 为Login
'yyyyy'为其Password

 回复 引用 查看   
#2楼[楼主]2007-04-21 14:19 | coolstr[占卜師oοΟ]      
@Jeff Yang

有些时候你并不知道用户的密码,