不使用 Windows 身份验证时是否可以在数据库触发器中获取用户名?

Is it possible to get the username in a database trigger when not using Windows authentication?

我创建了一个带有简单 AspNet 身份验证的 Azure 网站。然后我煞费苦心地 simple trigger based auditing 使用我的 azure 数据库。除了 UserName 是数据库连接用户名外,一切都很好。

是否可以在数据库触发器中获取登录到我的应用程序的用户的用户名?

如果您没有使用 SQL 服务器帐户,触发器将无法知道登录的用户。

一种实施策略是使用存储过程进行所有更新。然后,您可以将用户名作为每个存储过程的参数。

另一种可能的策略是在每个 table 中有一个 username 列,您将在每次插入或更新时设置该列,然后触发器可以访问该列。我想不出用这种方法来审核删除的方法,但是如果您的数据库在每一行中使用 deleted 标志而不是实际删除行,那将不是问题。