.net+mssqlserver2005环境,数据库中有20多张表,但就这一个表出问题。IIS日志上没有被SQL注入的痕迹,SQL端口防火墙只对WEB服务器开放,怀疑有两种可能:
1、程序BUG。
程序中有地方对该表有操作,在非常特殊的条件下触发,UPDATE或DELETE事件,但是在整个项目中查找表名关键字,未果。
存储过程中也没有类似操作。可能性基本排除。2、公司内部有人登录服务器进行操作。
目前来看,虽然没有动机,但这种可能性最大,我想针对该表进行监控,如果数据发生变化时,记录客户端消息,如时间、应用程序、客户端IP等,但是找不到办法。我尝试在触发器中查询系统表[活动监视器],但在after操作之后,系统表中已经查不到相关操作,请问有什么办法吗?
1、程序BUG。
程序中有地方对该表有操作,在非常特殊的条件下触发,UPDATE或DELETE事件,但是在整个项目中查找表名关键字,未果。
存储过程中也没有类似操作。可能性基本排除。2、公司内部有人登录服务器进行操作。
目前来看,虽然没有动机,但这种可能性最大,我想针对该表进行监控,如果数据发生变化时,记录客户端消息,如时间、应用程序、客户端IP等,但是找不到办法。我尝试在触发器中查询系统表[活动监视器],但在after操作之后,系统表中已经查不到相关操作,请问有什么办法吗?
给你个例子USE master
CREATE SERVER AUDIT testAudit TO FILE(FILEPATH='D:\TempSelectAudit\')
GO
CREATE DATABASE AUDIT SPECIFICATION testAudSpec FOR SERVER AUDIT testAudit
ADD (SELECT ON HumanResources.Employee BY Public)
GO
USE master
SELECT is_state_enabled,* FROM sys.server_file_audits
USE AdventureWorks
SELECT is_state_enabled,* FROM sys.database_audit_specifications
GO
USE master
ALTER SERVER AUDIT testAudit WITH (STATE=ON)
GO
USE AdventureWorks
ALTER DATABASE AUDIT SPECIFICATION testAudSpec WITH (STATE=ON)
GO
SELECT session_server_principal_name, statement, *
FROM fn_get_audit_file ('D:\TempSelectAudit\*',NULL, NULL)
SET TEXTSIZE 2147483647
SET NOCOUNT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ARITHABORT ON
SET LOCK_TIMEOUT -1
SET QUERY_GOVERNOR_COST_LIMIT 0
SET DEADLOCK_PRIORITY NORMAL
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
SET ANSI_NULLS ON
SET ANSI_NULL_DFLT_ON ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
SET CURSOR_CLOSE_ON_COMMIT OFF
SET IMPLICIT_TRANSACTIONS OFF
SET QUOTED_IDENTIFIER ON不是刚开始审计的时候,是审计已经开了几天,监控到的几万条语句其中之一,
它在干什么呢?