手动更改时监控数据[关闭]

问题描述 投票:-3回答:2

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

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

mysql sql sql-server database
2个回答
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%的证据。 只有审计可以提供确凿的证据,但必须在之前而不是之后设置。 但是您还必须知道,如果您的数据库管理员知道应用程序用户的密码,并且他可以登录到应用程序服务器,那么他可以使用该应用程序用户登录到数据库,进行更改,并且几乎没有办法说它不是改变记录的应用程序(除非在数据库中设置了应用程序角色,只能由应用程序使用)。


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 = '[email protected]' , 
                        @body = 'Data in AdventureWorks2012 is changed', 
                        @subject = 'Your records have been changed' 
GO
© www.soinside.com 2019 - 2024. All rights reserved.