В SQL Server 2008 я использую триггеры для записи всех изменений, внесенных в конкретную таблицу в моей базе данных. Моя цель - запечатлеть все изменения. То есть для захвата того, какие данные вставляются, а не только эти данные вставляются. В триггере я использую столбец EventInfo набора результатов, возвращенного DBCC INPUTBUFFER, чтобы получить выполняемый в данный момент оператор SQL, а также столбец Parameters, чтобы получить счетчик используемых параметров. В большинстве случаев это работает, но когда внешнее приложение выполняет запрос, используя ADO.NET, или строки вставляются / удаляются, используя Edit Top 200 Rows в SSMS, EventInfo не имеет значений параметров.
Например, если строковый запрос выполняется в окне запроса или как непараметризованный строковый запрос в ADO.NET, EventInfo показывает:
INSERT INTO DTS_TABLE ([ID] ,[DTS_ID] ,[DTS] ,[TICS]) VALUES (10, 9, GETDATE(), 91234)
При вставке тех же данных с использованием Edit Top 200 Rows или параметризованного запроса в ADO.NET, EventInfo показывает (новые строки добавлены для удобства чтения):
(@id int,@dtsid int,@dts datetime,@tics int)
INSERT INTO DTS_TABLE ([ID] ,[DTS_ID] ,[DTS] ,[TICS])
VALUES (@id, @dtsid, @dts, @tics)
Есть ли способ доступа к значениям параметров в контексте моего триггера?