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

How to delete old aspnet users with aspnet_Users_DeleteUser procedure?

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

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

我可以写一个 SELECT 语句来取出要删除的用户名,但是我怎样才能对每个用户名执行该过程?

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

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