如何使用aspnet_Users_DeleteUser过程删除旧的aspnet用户?

时间:2016-01-05 22:31:22

标签: asp.net sql-server stored-procedures asp.net-membership

我正在使用标准的aspnet成员资格表,而且我正在维护我们的数据库。我们希望删除所有未登录一年的用户。

我知道如何调用aspnet_Users_DeleteUser存储过程以删除单个用户,但如何使用它来删除aspnet_Users.LastActivityDate < '1/1/2015'的所有用户?

我可以编写一个SELECT语句来输出要删除的用户名,但是如何在每个语句上执行该过程呢?

1 个答案:

答案 0 :(得分:6)

这应该可以解决问题......

Declare @ApplicationName  nvarchar(256),
        @UserName         nvarchar(256),
        @TablesToDeleteFrom int = 15, 
        @NumTablesDeletedFrom int

Declare cur 
Cursor  For
Select  aa.LoweredApplicationName,
        au.LoweredUserName
From    [dbo].[aspnet_Users] au
Join    [dbo].[aspnet_Applications] aa
        On  au.ApplicationId = aa.ApplicationId
Where   LastActivityDate < '1/1/2015'

Open    cur

Fetch   Next
From    cur
Into    @ApplicationName,
        @UserName

While   @@FETCH_STATUS = 0
Begin
        Exec    [dbo].[aspnet_Users_DeleteUser] 
                    @ApplicationName,
                    @UserName,
                    @TablesToDeleteFrom,
                    @NumTablesDeletedFrom Out

        Fetch   Next
        From    cur
        Into    @ApplicationName,
                @UserName
End

Close   cur
Deallocate cur