连接字符串上的用户ID不是变量,与程序的用户ID(例如,可以是GUID)不同。如果连接字符串的用户标识是静态的,如何审核日志删除?
记录插入/更新/删除的最佳位置是通过触发器。但是使用静态连接字符串时,很难记录删除某些内容的人。有什么替代方案?
答案 0 :(得分:1)
使用SQL Server,您可以使用CONTEXT_INFO将信息传递给触发器。
我在代码中使用它(由web应用程序调用),我必须使用触发器(例如,表上有多个写入路径)。这是无法将我的逻辑放入存储过程的地方。
答案 1 :(得分:0)
我们有类似的情况。我们的Web应用程序始终作为相同的数据库用户运行,但使用不同的逻辑用户来运行应用程序跟踪和控制。
我们通常将逻辑用户ID作为参数传递到每个存储过程中。要跟踪删除,我们通常不会删除该行,只需将状态标记为已删除,相应地设置LastChgID和LastChgDate字段。对于重要的表,我们保留审计日志(每个更改状态的副本),我们使用上面的方法,触发器将行复制到审计表,LastChgID已经正确设置,触发器不需要担心关于获取身份证。