aspnet_Membership_GetNumberOfUsersOnline

ALTER  PROCEDURE dbo.aspnet_Membership_GetNumberOfUsersOnline --查询在线用户
    @ApplicationName            NVARCHAR(256),
    
@MinutesSinceLastInActive   INT
    
@TimeZoneAdjustment         INT --显示新的本地时间而必须添加到 [通用协调时间](utc) 的分钟数。
AS
BEGIN  
    
DECLARE @DateActive DATETIME --声明变量活动时间
    SELECT  @DateActive = DATEADD(minute,  -(@MinutesSinceLastInActive + @TimeZoneAdjustment), GETDATE())
     
/*当前时间的分钟数加上-(@MinutesSinceLastInActive + @TimeZoneAdjustment),字段……*/
     
/* GETDATE()按 datetime 值的 Microsoft? SQL Server? 标准内部格式返回当前系统日期和时间*/
    
DECLARE @NumOnline INT --声明变量用户在线数
    SELECT  @NumOnline = COUNT(*)
    
FROM    dbo.aspnet_Users u(NOLOCK),
            dbo.aspnet_Applications a(NOLOCK),
            dbo.aspnet_Membership m(NOLOCK)
    
WHERE   u.ApplicationId = a.ApplicationId                  AND
            LastActivityDate 
> @DateActive                     AND
            a.LoweredApplicationName 
= LOWER(@ApplicationNameAND
            u.UserId 
= m.UserId
    
/*最近活动时间大于设置的活动的时间就表示用户在线,可能是因为用户状态的原因,客户端不
     在线的话,服务器还要保存用户状态一段时间,所以要设置一个活动时间@DateActive。
     好象有点。
*/

    
RETURN(@NumOnline--返回查询符合条件的在线数
  /*COUNT()返回组中项目的数量*/
END
原文地址:https://www.cnblogs.com/ruanbl/p/490052.html