Como dice Jonas, Profiler es su mejor opción (y la única opción para consultas SELECT). Para INSERTAR, ACTUALIZAR, ELIMINAR, lo más cercano que puede obtener sin Profiler puede ser mirar el búfer de entrada a través de DBCC INPUTBUFFER(@@SPID)
. Esto solo funcionará para eventos de lenguaje ad-hoc, no llamadas RPC, y solo le mostrará los primeros 256 caracteres de la declaración SQL (según la versión, creo). Algún código de ejemplo, (ejecutar como 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