просмотреть измененные значения после обновления - PullRequest
0 голосов
/ 29 сентября 2011

просто интересно, можно ли просмотреть изменения команды обновления таблицы после того, как это произошло?

будет ли журнал транзакций хранить такую ​​информацию, т.е. это предыдущее / текущее значение, этоновое / измененное значение

не уверен, возможно ли это.сервер MS SQL 2008

Ответы [ 2 ]

0 голосов
/ 30 сентября 2011

Журнал транзакций действительно содержит информацию, хотя декодирование не является тривиальным - я написал сообщение в блоге с примером декодирования простого оператора обновления в журнале транзакций - http://sqlfascination.com/2010/02/21/decoding-a-simple-update-statement-within-the-transaction-log/

Однако, в зависимости отвыполняемое обновление, записи в журнале становятся намного более сложными, и нет никакой документации о том, как их декодировать.Обратный инжиниринг их довольно сложен.

Я бы никогда не рекомендовал использовать этот метод проверки журнала для извлечения данных, его стоит только изучить с точки зрения изучения внутренних органов / судебной экспертизы.

0 голосов
/ 29 сентября 2011

Вы можете использовать OUTPUT, чтобы вставить изменения в другую таблицу и / или вернуть набор результатов изменений:

set nocount on
DECLARE @Table     table (PK int, col1 varchar(5))
DECLARE @SavedPks  table (PK int)

INSERT INTO @Table VALUES (1,'g')
INSERT INTO @Table VALUES (2,'g')
INSERT INTO @Table VALUES (3,'g')
INSERT INTO @Table VALUES (4,'g')
INSERT INTO @Table VALUES (5,'x')
INSERT INTO @Table VALUES (6,'x')
set nocount off

UPDATE @Table
    SET col1='xyz'
    OUTPUT INSERTED.PK INTO @SavedPks --save in a table
    OUTPUT 'result set',INSERTED.PK, INSERTED.col1 AS new_col1, DELETED.col1 AS old_Col1 --result set
    WHERE col1='g'

select * from @Table
select * from @SavedPks

ВЫВОД:

           PK          new_col1 old_Col1
---------- ----------- -------- --------
result set 1           xyz      g
result set 2           xyz      g
result set 3           xyz      g
result set 4           xyz      g

(4 row(s) affected)

PK          col1
----------- -----
1           xyz
2           xyz
3           xyz
4           xyz
5           x
6           x

(6 row(s) affected)

PK
-----------
1
2
3
4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...