我们有一个Winform应用程序,要求用户使用他们的用户名和密码登录。该软件是免费的,但支持不是。支持费用将基于全职等效用户的数量,因此我们基本上需要跟踪每月使用软件的小时数。该软件使用VS 2010编写,后端使用MS SQL 2008
目前,我们有一张表格如下:
>CREATE TABLE [UserUsages](
> [GUID] [uniqueidentifier] NOT NULL,
> [Source] [varchar](50) NOT NULL, -- Name of the software/front end
> [WksName] [varchar](50) NOT NULL, -- Name of the workstation
> [WksIP] [varchar](50) NOT NULL, -- IP of the workstation
> [UserGUID] [uniqueidentifier] NOT NULL, -- UID of the User who logged in
> [TimeIn] [datetime] NOT NULL, -- Time the user logged in
> [TimOut] [datetime] NOT NULL, -- Time the user logged out
>CONSTRAINT [pk_Usages_GUID] PRIMARY KEY CLUSTERED
>([GUID] ASC)
>) ON [PRIMARY]
每当用户登录时,我们在此表上创建一条新记录并将时间保存到TimeIn列。当用户注销时,我们会更新TimeOut列。
这种方法的问题是,如果某个用户决定使用Windows任务管理器终止任务或系统崩溃并需要冷重启,则TimeOut不会更新。
有没有更好的办法呢?而且就表格结构而言,我们可以采取哪些措施使其更好地运作?
答案 0 :(得分:0)
也许您可以在用户登录时以每分钟一次的当前时间更新TimeOut记录...这样即使系统崩溃,您也会有大约“退出”时间