/***************
创建一个审核表,其中EventData是一个XML数据列
3w@live.cn
*******************/
USE master
GO
CREATETABLE dbo.ChangeAttempt
(EventData xml NOTNULL,
AttemptDate datetimeNOTNULLDEFAULTGETDATE(),
DBUser char(50) NOTNULL)
GO
/***************
在目标数据库上创建一个触发器,以记录该数据库的索引变化动作,
包括Create|alter|Drop
3w@live.cn
*******************/
CREATETRIGGER db_trg_RestrictINDEXChanges
ONDATABASE
FOR CREATE_INDEX, ALTER_INDEX, DROP_INDEX
AS
SET NOCOUNT ON
INSERT dbo.ChangeAttempt
(EventData, DBUser)
VALUES (EVENTDATA(), USER)
GO
/***************
创建一个索引,以测试触发器
3w@live.cn
*******************/
CREATENONCLUSTEREDINDEX ni_ChangeAttempt_DBUser ON
dbo.ChangeAttempt(DBUser)
GO
/***************
查看审核记录
3w@live.cn
*******************/
SELECT EventData
FROM dbo.ChangeAttempt
--------/***************
--------在目标数据库服务器上创建一个触发器,以防止添加登录账号,
--------3w@live.cn
--------*******************/
USE master
GO
-- Disallow new Logins on the SQL instance
CREATETRIGGER srv_trg_RestrictNewLogins
ONALL SERVER
FOR CREATE_LOGIN
AS
PRINT'No login creations without DBA involvement.'
ROLLBACK
GO
--------/***************
--------试图创建一个登录账号
--------3w@live.cn
--------*******************/
CREATE LOGIN johny WITH PASSWORD ='123456'
GO
--------/***************
--------删除演示触发器
--------3w@live.cn
--------*******************/
CREATE LOGIN nightworker WITH PASSWORD ='123b3b4'
GO
--------/***************
--------演示数据库和审核表
--------3w@live.cn
--------*******************/
CREATEDATABASE ExampleAuditDB
GO
USE ExampleAuditDB
GO
CREATETABLE dbo.RestrictedLogonAttempt
(LoginNM sysname NOTNULL,
AttemptDT datetimeNOTNULL)
GO
--------/***************
--------创建登录触发器,如果不是在7:00-17:00登录,则记录审核日志,并提示失败
--------3w@live.cn
--------*******************/