2013-11-29 72 views
1

我们有一个Winform应用程序,要求用户使用他们的用户名和密码登录。该软件是免费的,但支持不是。支持费用将基于全职等效用户的数量,因此我们基本上需要跟踪每月使用软件的时间。该软件使用VS 2010书面和后端是MS SQL 2008跟踪用户在Winform应用程序上的使用情况

目前,我们有一个表如下:

>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

你将有近似“退出”的时间记录更新的超时纪录一分钟谢谢大家已经每5分钟更新一次该字段。我忘了在我的操作中提到这一点。其他从这个解决方案,有没有更好的方法? – theUnderdog