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(@ApplicationName) AND
u.UserId = m.UserId
/*最近活动时间大于设置的活动的时间就表示用户在线,可能是因为用户状态的原因,客户端不
在线的话,服务器还要保存用户状态一段时间,所以要设置一个活动时间@DateActive。
好象有点。*/
RETURN(@NumOnline) --返回查询符合条件的在线数
/*COUNT()返回组中项目的数量*/
END
@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(@ApplicationName) AND
u.UserId = m.UserId
/*最近活动时间大于设置的活动的时间就表示用户在线,可能是因为用户状态的原因,客户端不
在线的话,服务器还要保存用户状态一段时间,所以要设置一个活动时间@DateActive。
好象有点。*/
RETURN(@NumOnline) --返回查询符合条件的在线数
/*COUNT()返回组中项目的数量*/
END