2016-01-05 52 views
2

我正在使用標準的aspnet成員資格表,我正在維護我們的數據庫。我們要刪除所有未登錄一年的用戶。如何使用aspnet_Users_DeleteUser過程刪除舊的aspnet用戶?

我知道如何調用aspnet_Users_DeleteUser存儲過程以刪除單個用戶,但是如何使用它刪除所有用戶aspnet_Users.LastActivityDate < '1/1/2015'

我可以編寫一個SELECT語句來刪除要刪除的用戶名,但我該如何在每個用戶名上執行該過程?

+0

你能提供一個例子PROC電話? @TablesToDeleteFrom是我想知道的。你用什麼價值呢? –

+0

'EXEC \t @return_value = [DBO]。[aspnet_Users_DeleteUser] \t \t @ApplicationName = N '/', \t \t @UserName = N'usernameToDelete」, \t \t @TablesToDeleteFrom = 15, \t \t @NumTablesDeletedFrom = @NumTablesDeletedFrom OUTPUT '@TablesToDeleteFrom參數爲15意味着從所有的aspnet表中刪除。 – HackWeight

回答

4

這應該做的伎倆......

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