在 SQL 服务器中获取用户名的 DDL 触发器
DDL trigger to get username in SQL Server
我的一位客户提出 "who-did-what-to-which-table-and-when" 要求。系统简要说明如下:
- 无软件源代码
- 软件没有跟踪事件
- 所有用户在"sa"登录
下使用该应用程序
- 数据库中有一个登录名 table,用于在应用程序启动期间验证用户凭据
- SQL 身份验证,而不是 Windows 身份验证。在 SQL 中创建单独的 users/roles 是不可能的,因为从前端到后端的连接字符串是硬编码的,无法编辑
我的问题如下:
- 我可以获得主机名、IP、Suser_Name()、MAC 地址等。但是客户对其中任何一个都不满意
- 我可以将 IP 地址映射到用户登录 table。客户又不高兴了。
我的问题是:
无论如何我都可以 link 从登录 table 到 DDL 触发器的用户名吗?登录 table 有 2 列,用户名和密码。是否有一些我可能在这里忽略的连接/任何其他操作?
系统适用于 SQL Server 2008
您也许可以跟踪 user/password
table 的 select
语句,然后在 spid 和时间范围内加入。
https://docs.microsoft.com/en-us/sql/relational-databases/sql-trace/sql-trace
- 使用
sp_trace_create
创建跟踪。
- 使用
sp_trace_setevent
添加项目事件。批量完成在这种情况下应该有效。
- 使用
sp_trace_setfilter
设置过滤器。将其过滤到您的 user/password
table.
- 从
sp_trace_setstatus
开始跟踪。
- 使用
sp_trace_setstatus
停止跟踪。
- 用
sp_trace_setstatus
关闭跟踪。
我的一位客户提出 "who-did-what-to-which-table-and-when" 要求。系统简要说明如下:
- 无软件源代码
- 软件没有跟踪事件
- 所有用户在"sa"登录 下使用该应用程序
- 数据库中有一个登录名 table,用于在应用程序启动期间验证用户凭据
- SQL 身份验证,而不是 Windows 身份验证。在 SQL 中创建单独的 users/roles 是不可能的,因为从前端到后端的连接字符串是硬编码的,无法编辑
我的问题如下:
- 我可以获得主机名、IP、Suser_Name()、MAC 地址等。但是客户对其中任何一个都不满意
- 我可以将 IP 地址映射到用户登录 table。客户又不高兴了。
我的问题是:
无论如何我都可以 link 从登录 table 到 DDL 触发器的用户名吗?登录 table 有 2 列,用户名和密码。是否有一些我可能在这里忽略的连接/任何其他操作?
系统适用于 SQL Server 2008
您也许可以跟踪 user/password
table 的 select
语句,然后在 spid 和时间范围内加入。
https://docs.microsoft.com/en-us/sql/relational-databases/sql-trace/sql-trace
- 使用
sp_trace_create
创建跟踪。 - 使用
sp_trace_setevent
添加项目事件。批量完成在这种情况下应该有效。 - 使用
sp_trace_setfilter
设置过滤器。将其过滤到您的user/password
table. - 从
sp_trace_setstatus
开始跟踪。 - 使用
sp_trace_setstatus
停止跟踪。 - 用
sp_trace_setstatus
关闭跟踪。