If you accidentally delete asp.net user from membership using this code Membership.DeleteUser but you have a backup of your previous database then you can restore it using the following sql.
assume :
your current database name is MYDB and your previous database name is MYDB2.
you must know the userid of the deleted user. you can get the userid using this code
select * from MYDB2.dbo.aspnet_users where username like '%somename%'
USE [MYDB]
GO
/****** Object: StoredProcedure [dbo].[RestoreMembershipDeleteUser] Script Date: 10/19/2010 11:23:17 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE proc [dbo].[RestoreMembershipDeleteUser](@userid uniqueidentifier)
as
begin
if not exists (select * from MYDB2.dbo.aspnet_users where userid=@userid)
begin
print 'userid not found in prev aspnet_users'
return 0
end
if not exists (select * from MYDB2.dbo.aspnet_membership where userid=@userid)
begin
print 'userid not found in prev aspnet_membership'
return 0
end
--get information from backup database
--MYDB2 is the backup database
declare @ApplicationId uniqueidentifier
declare @UserName nvarchar(256)
declare @Email nvarchar(256)
declare @CreateDate datetime
declare @Password nvarchar(128)
declare @PasswordSalt nvarchar(128)
declare @IsApproved bit
declare @IsLockedOut bit
declare @LastLoginDate datetime
declare @FailedPasswordAttemptCount int
declare @FailedPasswordAttemptWindowStart datetime
declare @FailedPasswordAnswerAttemptCount int
declare @FailedPasswordAnswerAttemptWindowStart datetime
declare @LastPasswordChangedDate datetime
declare @LastLockoutDate datetime
declare @LastActivityDate datetime
select @UserName = username from MYDB2.dbo.aspnet_users where userid=@userid
select
@ApplicationId = Applicationid,
@Email = email,
@CreateDate =CreateDate,
@Password=Password,
@PasswordSalt=PasswordSalt,
@IsApproved = IsApproved,
@IsLockedOut = IsLockedOut,
@LastLoginDate = LastLoginDate,
@LastPasswordChangedDate = LastPasswordChangedDate,
@LastLockoutDate = LastLockoutDate,
@FailedPasswordAttemptCount = FailedPasswordAttemptCount,
@FailedPasswordAttemptWindowStart = FailedPasswordAttemptWindowStart,
@FailedPasswordAnswerAttemptCount = FailedPasswordAnswerAttemptCount,
@FailedPasswordAnswerAttemptWindowStart = FailedPasswordAnswerAttemptWindowStart
from MYDB2.dbo.aspnet_membership
where userid=@userid
declare @TranStarted bit
set @TranStarted = 0
if( @@TRANCOUNT = 0 )
begin
begin transaction
set @TranStarted = 1
end
else
set @TranStarted = 0
--delete existing data
delete from aspnet_Membership WHERE UserID = @userid
if( @@ERROR <> 0 )
begin
print 'error delete aspnet_Membership'
goto Cleanup
end
delete from aspnet_Users WHERE UserID = @userid
if( @@ERROR <> 0 )
begin
print 'error delete aspnet_Users'
goto Cleanup
end
declare @ReturnValue int
EXEC @ReturnValue = dbo.aspnet_Users_CreateUser @ApplicationId, @UserName, 0, @CreateDate, @UserId OUTPUT
if( @@ERROR <> 0 or @ReturnValue = -1)
begin
print 'error exec aspnet_Users_CreateUser'
goto Cleanup
end
if not exists (select * from aspnet_Membership where userid=@userid)
begin
INSERT INTO aspnet_Membership
( ApplicationId,
UserId,
Password,
PasswordSalt,
Email,
LoweredEmail,
IsApproved,
IsLockedOut,
CreateDate,
LastLoginDate,
LastPasswordChangedDate,
LastLockoutDate,
FailedPasswordAttemptCount,
FailedPasswordAttemptWindowStart,
FailedPasswordAnswerAttemptCount,
FailedPasswordAnswerAttemptWindowStart
)
values
(@applicationid,
@userid,
@Password,
@PasswordSalt,
@email,
lower(@email),
@IsApproved,
@IsLockedOut,
@CreateDate,
@LastLoginDate,
@LastPasswordChangedDate,
@LastLockoutDate,
@FailedPasswordAttemptCount,
@FailedPasswordAttemptWindowStart,
@FailedPasswordAnswerAttemptCount,
@FailedPasswordAnswerAttemptWindowStart)
if( @@ERROR <> 0 )
begin
print 'error insert aspnet_Membership'
goto Cleanup
end
end
if( @TranStarted = 1 )
begin
set @TranStarted = 0
COMMIT TRANSACTION
end
return 0
Cleanup:
IF( @TranStarted = 1 )
BEGIN
SET @TranStarted = 0
print 'rollback'
ROLLBACK TRANSACTION
END
RETURN -1
end
Restore deleted ASP.net user membership
Posted by
Mantaf Gan
Wednesday, October 20, 2010
at
3:11 AM
Subscribe to:
Post Comments (Atom)
0 comments:
Post a Comment