2017年計(jì)算機(jī)等考三級(jí)數(shù)據(jù)庫輔導(dǎo):SQLServer2000數(shù)據(jù)表用觸發(fā)器來生成操作日志

字號(hào):

導(dǎo)讀:此文章主要向大家講述的是用觸發(fā)器來生成SQL Server2000數(shù)據(jù)表的實(shí)際操作日志,在實(shí)際操作中有時(shí)如果想知道登錄到數(shù)據(jù)庫的用戶具體做了什么,考試大編輯提示,記錄用戶執(zhí)行的SQL語句就非常有必要,這將是重要的參考依據(jù)。
    


    

我們先建一張日志表(DBLoger)用于保存用戶執(zhí)行的SQL語句:
    

Create TABLE DBLoger(  
LoginName nvarchar(50),  
HostName nvarchar(50),  EventInfo nvarchar(500),  
Parameters int,  EventType nvarchar(100)  
)

接著再建一個(gè)觸發(fā)器,在用戶對(duì)表進(jìn)行增/刪/改時(shí)觸發(fā),將執(zhí)行的SQL語句記錄到日志表中:
    


    

Create TRIGGER Loger ON student  FOR Insert, Update, 
Delete   AS  SET NOCOUNT ON  
Create TABLE #T(
EventType nvarchar(100),Parameters int,
EventInfo nvarchar(500))  
Insert #T exec('dbcc inputbuffer(' + @@spid + ')')

記錄到日志表
    

Insert INTO DBLoger(LoginName,HostName,
EventInfo,Parameters,EventType)   
Select suser_sname(),host_name(),
EventInfo,Parameters,EventType FROM #T

說明:由于dbcc inputbuffer的EventInfo最多只能保存255個(gè)字符,所以一旦執(zhí)行的SQL過長,日志表中將無法看到完整的SQL語句!
    

上述的相關(guān)內(nèi)容就是對(duì)用觸發(fā)器生成SQL Server2000數(shù)據(jù)表的操作日志的描述,希望會(huì)給你帶來一些幫助在此方面。