जैसा कि जोनास कहते हैं, प्रोफाइलर आपका सबसे अच्छा विकल्प है (और चयन प्रश्नों के लिए एकमात्र विकल्प)। INSERT, UPDATE, DELETEs के लिए, आप बिना प्रोफाइलर के जो निकटतम प्राप्त कर सकते हैं, वह DBCC INPUTBUFFER(@@SPID)
के माध्यम से इनपुट बफर को देखने के लिए हो सकता है। . यह केवल तदर्थ भाषा की घटनाओं के लिए काम करेगा, RPC कॉल के लिए नहीं, और आपको केवल SQL कथन के पहले 256 वर्ण दिखाएगा (संस्करण के आधार पर, मुझे विश्वास है)। कुछ उदाहरण कोड, (dbo के रूप में चलाएँ):
CREATE TABLE TBL (a int, b varchar(50))
go
INSERT INTO TBL SELECT 1,'hello'
INSERT INTO TBL SELECT 2,'goodbye'
go
GRANT SELECT, UPDATE ON TBL TO guest
go
CREATE TABLE AUDIT ( audittime datetime default(getdate())
, targettable sysname
, loginname sysname
, spid int
, sqltext nvarchar(max))
go
CREATE TRIGGER TR_TBL ON TBL FOR INSERT, UPDATE, DELETE
AS BEGIN
CREATE TABLE #DBCC (EventType varchar(50), Parameters varchar(50), EventInfo nvarchar(max))
INSERT INTO #DBCC
EXEC ('DBCC INPUTBUFFER(@@SPID)')
INSERT INTO AUDIT (targettable, loginname, spid, sqltext)
SELECT targettable = 'TBL'
, suser = suser_name()
, spid = @@SPID
, sqltext = EventInfo
FROM #DBCC
END
GO
/* Test the Audit Trigger (can be run as guest) */
UPDATE TBL SET a = 3 WHERE a = 2