2010-10-20 57 views
1

我管理的一个最重要的数据库设计不佳。使用它的程序只使用1次登录,这恰好是系统管理员。编辑和删除操作已完成,因此更改跟踪很困难。在SQL 2000中审计设计非常糟糕的数据库系统

此外,它缺乏适当的审计功能,所以我不能告诉哪个用户编辑或删除了某个记录。

我想我可能会诉诸使用SQL触发器并输出记录信息以及编辑/删除它的用户信息。我无法使用LoginName,因为该程序只使用一次登录。

我可以使用触发器导出其他信息,例如发送删除命令的桌面机器名称吗?

是否有任何其他信息可以帮助我?

回答

4

你可能会看sys.sysprocesses表(我认为在SQL Server 2000中的sysprocesses)。它包含通常在sp_who2存储过程的输出中看到的信息。它包括主机名,它是连接到SQL Server的计算机。其他一些列也可能有用。

+1

+1。即将回答这个'select hostname,program_name,nt_domain,nt_username,loginame from master..sysprocesses where spid = @@ spid' – 2010-10-20 20:33:50

+1

+1,'HOST_NAME()'函数也可用于获取主机名。此值可能不准确(由客户端应用程序设置),但对此可能足够可靠。 – 2010-10-20 20:39:48