我在其上创建了一个带有vb.net的数据库。用户正在将记录输入系统并进行更新。有没有办法捕获谁输入或更新了数据库?
示例:
LastModifiedBy | CreatedBy
Joe Bob | Sally Joe
答案 0 :(得分:1)
由于您在连接字符串中使用预定义的用户名和密码,因此您的选项仅限于.NET端。通过数据库,您可以访问执行更新/插入/删除的计算机名称,但不能访问哪些用户。 SYSTEM_USER将始终返回连接字符串中指定的帐户。
如果您确实需要访问运行应用程序的用户的Windows用户名,则需要更新VB.NET代码以将其作为参数传递给您的查询并将其记录在某些列中。结合历史记录表,可以为您提供关于谁正在更改数据的全面情况(通过SSMS直接数据编辑之外)。
Environment.UserName
属性是您正在寻找的内容,您可以找到更多here。
答案 1 :(得分:-1)
ALTER trigger [dbo].[audit_trigger] on [dbo].[table_name] for insert, update, delete
as
begin
insert into audit(user,table,time_stamp) values (SYSTEM_USER,'table_name',getdate())
end
或在表格中创建一个字段用户并创建默认的SYSTEM_USER