2013-11-29 146 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