由于我们没有将应用程序的用户实现为SQL Server中的用户,因此当应用程序服务器连接到数据库时,每个应用程序始终使用相同的凭据连接到每个数据库.
这提出了审计问题.使用触发器,我们希望存储每个更新,插入和删除以及将每个更新属于特定用户.一种可能的解决方案是向每个表添加"按用户更新"列,并每次更新.这意味着每个表上都有一个新列,每个存储过程都有一个新参数.这也意味着您只能进行软删除.
取而代之的是,我建议使用连接字符串的Application Name属性,并使用触发器内的App_Name()属性读取它.我用一个简单的应用程序测试了它,它似乎工作(格式可能如此:App = MyApp | User = 100).
对你们这个问题是,这是一个坏主意,你有一个更好的主意吗?
我为此使用SET CONTEXT_INFO.这正是你所需要的.