是否有任何工具可以监视SQL Server中的数据,以防它不是通过系统手动更改。
我想检查我们的数据库管理员是否手动编辑了任何记录
答案 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角色,只能由应用程序使用)。