怎样把用户登陆的时间存入自己创建的一个数据表中?

jjdelphi 2005-12-21 03:41:53
想在客户端连接到SQL Server时,SQL Server能够自动记录下登陆连接的时间,存入创建的一个数据表中?
...全文
170 9 打赏 收藏 举报
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
jjdelphi 2006-02-15
没有解决问题
  • 打赏
  • 举报
回复
Jpp 2005-12-22
用审计吧:
sp_trace_setevent [ @traceid = ] trace_id
, [ @eventid = ] event_id
, [ @columnid = ] column_id
, [ @on = ] on
  • 打赏
  • 举报
回复
unlme 2005-12-22
不能因为不负责客户端就不考虑实际吧,这种明显的前台事件入口你非放入数据库里面实现,你也知道开销大啊。
  • 打赏
  • 举报
回复
yesyesyes 2005-12-22
如果只要用户登录时间,错误日志中都有记录的,保存该日志即可
  • 打赏
  • 举报
回复
jjdelphi 2005-12-21
如果等到用户操作数据表,然后从数据表建立触发器记录的话,时间上就不准了。如果用户一直没有操作,就一直不会记录了。这样还不如写个程序,一直在检测syslogins系统表好了,一旦发现就写个记录,但是这样系统开销就大了。
  • 打赏
  • 举报
回复
zmjszm 2005-12-21
如果是用 域安全帐户, 有没有什么表是客户登录后必然要操作的表? 比如用户表[User]中如果有上次登录时间这类字段,每个用户登录进入系统后必然要更新字录。
如果这样,可以在[User]表中写个Trigger 记录下登录客户的安全帐户
Trigger 代码片段
Declare @nt_username nvarchar(128),@nt_domain nvarchar(128),@program_name nvarchar(128),@hostname nvarchar(128)

select @program_name=rtrim(program_name),@hostname=rtrim(hostname),@nt_domain=rtrim(nt_domain),@nt_username=rtrim(nt_username) from master.dbo.sysprocesses with(nolock) where spid=@@spid
  • 打赏
  • 举报
回复
zmjszm 2005-12-21
客户用什么帐户登录呢? Windows 的安全帐户 还是 sqlserver 的帐号, 如果每个客户都是用相同的sqlserver的帐户,你根本区分不出来呀!
  • 打赏
  • 举报
回复
jjdelphi 2005-12-21
不考虑前台自己编写的应用程序。因为数据库服务器面向的是多个数据库,客户端程序不归我们负责。
  • 打赏
  • 举报
回复
在前台程序中控制
if 登陆成功 then
insert 表
end
  • 打赏
  • 举报
回复
发帖
疑难问题

2.1w+

社区成员

MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
加入社区
帖子事件
创建了帖子
2005-12-21 03:41
社区公告
暂无公告