如何登录用户删除MS Access中的记录?

问题描述:

这是一个带有SQL Server链接表的MS Access应用程序。我需要在SQL Server上记录它,因为我无法修改MS Access应用程序。如何登录用户删除MS Access中的记录?

该应用程序通过默认的SQL用户名连接到SQL Server。

您将需要一个触发器和一个表来存储结果。非常快速的原型:

CREATE TRIGGER dbo.trigger_name 
ON dbo.table_name 
FOR DELETE 
AS 
    INSERT INTO dbo.LogTable(RowID, UserName) 
     SELECT PK_Column, SUSER_SNAME() 
     FROM deleted; 
GO 

需要注意的是,除非每个接入用户验证到SQL Server作为自己,你可能需要使用主机名或一些其他财产,以确定他们(如果他们都连接为相同的SQL用户,有是小SQL Server可以做,以确定他们真的是谁)。

+0

由于某些原因,当我使用HOSTNAME()时,它为异地用户返回多个用户的相同HOSTNAME()。我认为这是一个网络问题。 SUSERNAME()返回BOGUS。我无法修改Access应用程序,因此我无法对它们进行每次验证。 – Bruno 2012-02-14 16:56:13

+1

是的SQL Server无法到达远程机器来查看主机名称,它只能看到任何主机名称传递该请求到SQL Server。如果他们使用SQL身份验证(我认为这就是'BOGUS'),你将很难获得Windows用户名。我不确定Profiler如何显示实际的用户名 - 您确定它对所有用户都是准确的吗? Profiler运行在哪里,与Access应用程序运行在同一台机器上? – 2012-02-14 17:06:59

+0

Profiler从我的机器上运行,SQL Server在服务器上运行,Access应用程序从不同的网络共享中运行。 – Bruno 2012-02-14 18:18:56