【发布时间】:2016-08-26 11:48:37
【问题描述】:
我的一位客户提出了“谁做了什么到哪个表和时间”的要求。系统简要说明如下:
- 没有软件源代码
- 软件不跟踪事件
- 所有用户在“sa”登录下使用应用程序
- 数据库中有一个登录表,用于在应用程序启动期间验证用户凭据
- SQL 身份验证,而不是 Windows 身份验证。无法在 SQL 中创建单独的用户/角色,因为从前端到后端的连接字符串是硬编码的,无法编辑
我的问题如下:
- 我可以获得主机名、IP、Suser_Name()、MAC 地址等。但客户对其中任何一个都不满意
- 我可以将 IP 地址映射到用户登录表。客户又不高兴了。
我的问题是:
无论如何我可以将登录表中的用户名链接到 DDL 触发器吗?登录表有 2 列,用户名和密码。是否有一些加入/我可能在这里忽略的任何其他操作?
系统在 SQL Server 2008 上运行
【问题讨论】:
-
我很确定答案是否定的。如果登录例程更新了用户登录表(例如使用上次登录日期值),您可能会使用 CONTEXT_INFO 和该表上的触发器执行某些操作,但由于您的登录表只有两列,应用程序显然只读取以验证用户的身份,我觉得你倒霉了。您尝试将 IP 映射到用户登录,或获取主机名/IP/SUser_Name/MAC 地址详细信息,可能是客户端可以获得的最佳结果。
-
在您的应用程序登录期间,将 SPID - 用户名信息保存在另一个表中。在触发时,基于 SPID 并检索用户名
-
@MartW,是的,看来我运气不好。感谢您的评论。
-
@Squirrel,我会试试这个。我想我必须为此创建一个触发器,因为我无法编辑从前端到后端的任何命令。
-
登录表是否与AD关联?
标签: sql-server tsql triggers audit-logging