手动更改时监控数据

时间:2017-12-11 11:07:03

标签: mysql sql sql-server database

是否有任何工具可以监视SQL Server中的数据,以防它不是通过系统手动更改。

我想检查我们的数据库管理员是否手动编辑了任何记录

2 个答案:

答案 0 :(得分:0)

您可以创建触发器

插入,删除或更新记录时将触发触发器,并且应立即使用msdb.dbo.sp_send_dbmail向指定的电子邮件收件人发送电子邮件警报:

CREATE TRIGGER t_Pers 
ON Person.Person 
AFTER INSERT, UPDATE, DELETE 
AS 
   EXEC msdb.dbo.sp_send_dbmail 
                        @profile_name = 'ApexSQLProfile', 
                        @recipients = 'marko.radakovic@apexsql.com' , 
                        @body = 'Data in AdventureWorks2012 is changed', 
                        @subject = 'Your records have been changed' 
GO

答案 1 :(得分:0)

您可以通过多种方式执行此操作,但实际上应该在MSSQL Server或mysql服务器上设置一个功能。在第一种情况下,您应该切换特定数据库的审核。如果你之前没有这样做,你可以记录交易日志:
https://solutioncenter.apexsql.com/read-a-sql-server-transaction-log/
但这很费时间,并没有带来决定性的结果 对于MySQL,有一个使用audit api的插件,由mysql从5.5.3版本提供。开发了大量插件,Oracle提供了一个带有企业解决方案的插件,percona提供了一个插件,我相信还有其他插件。
在这种情况下,您还可以挖掘bin日志,分析sql查询日志(如果已设置),慢查询日志(如果已设置)。但同样 - 这是耗时的,实际上你可能无法肯定找到100%的证据。
只有审计才能提供确凿的证据,但必须在之前而不是之后设置 但是您还必须知道,如果您的数据库管理员知道应用程序用户的密码,并且他可以登录到应用程序服务器,那么他可以使用该应用程序用户登录到数据库,进行更改,并且几乎没有办法说这不是改变记录的应用程序(除非在数据库中设置了app角色,只能由应用程序使用)。