asp.net - 如何使用aspnet用户删除用户程序删除旧的aspnet用户?

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

我正在使用标准的 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

关于asp.net - 如何使用aspnet用户删除用户程序删除旧的aspnet用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34622437/

相关文章:

sql-server - 从 Visual Basic API 读取 SQL Server 存储过程

sql - 在存储过程中使用 CASE 语句

asp.net - 使用 jQuery 通过 GET 方法调用 ASP.NET Web 服务函数

c# - 服务器端相当于 HttpContext?

sql-server - 为什么在存储数据时不总是使用 nvarchar 而不是 varchar?

sql - 如何在sql server中选择彼此相隔一小时的记录

循环中的Postgresql plpgsql存储过程更新语句

asp.net - asp.net mvc3错误消息

c# - 选项卡更改时重定向 url

使用 CTE 的 SQL 更新不更新记录