我在SQL Server中有一个表。可以更新此表,也可以从.NET应用程序插入新行,也可以直接从SSMS插入新行(使用T-SQL)。因此,我想在此表上创建一个触发器,用于插入和更新,并检测导致触发器触发的原因,无论是.NET应用程序还是当前在SSMS会话中进行身份验证的用户。如果这可能吗?如果是这样的话?
答案 0 :(得分:1)
触发器在用户的会话中运行,因此您可以查看会话。但请注意,program_name是由客户端发送的,因此使用SSMS的用户可以更改它:
select program_name, client_interface_name, login_name
from sys.dm_exec_sessions
where session_id = @@spid
这是一项安全功能,允许应用程序提供机密以获取未授予连接用户的权限,称为Application Roles
应用程序角色是启用a的数据库主体 应用程序以其自己的类似用户的权限运行。您可以使用 应用程序角色,只允许访问特定数据 通过特定应用程序连接的用户。