引自http://www.cnblogs.com/coolstr/archive/2007/04/19/719799.html

新建一个存储过程

恢复数据库后,恢复原来数据用户的权限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'

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

或者也可以直接这样做:EXEC sp_change_users_login 'Auto_Fix','xxxxxx',null,'yyyyyy';

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

相关文章: