Откат транзакции - PullRequest
       13

Откат транзакции

3 голосов
/ 04 августа 2009

Я обновляю некоторые данные в таблице, используя транзакцию. Журнал транзакций доступен в ldf файлах базы данных. Теперь по ошибке пользователь совершил транзакцию удаления записей, и он был зафиксирован, а данные были удалены. так есть ли способ откатить эту конкретную транзакцию. Пожалуйста, предложите. Буду очень признателен за вашу помощь.

Спасибо

Ответы [ 3 ]

3 голосов
/ 07 февраля 2014

Чтение журнала транзакций с использованием встроенных в SQL Server функций и команд, таких как fn_dblog и DBCC LOGINFO, может быть затруднено, поскольку все данные хранятся в шестнадцатеричном формате. Ручной запрос и преобразование необходимо для того, чтобы получить читаемые данные. Это недокументированные функции и они не могут дать готовые результаты. Теоретически вы можете отследить удаленную запись и посмотреть, что было удалено

Обратите внимание, что модель восстановления также очень важна, когда речь идет о восстановлении данных, следует использовать модель FULL или BULK LOGGED

Что касается восстановления во времени, вы можете взглянуть на статью , в которой описывается процедура с использованием SQL Server Management Studio и стороннего инструмента под названием ApexSQL Log . Существует и другой сторонний инструмент, такой как RedGate SQL Rescue. Обратите внимание, что вы должны предоставить полную цепочку резервных копий журнала транзакций: цепочку резервных копий журнала транзакций, поскольку существует полная резервная копия базы данных, или полная резервная копия базы данных, затем разностные резервные копии базы данных и затем цепочка резервных копий журнала транзакций оттуда до точки вовремя вы хотите восстановить данные.

Отказ от ответственности: я работаю в ApexSQL инженером службы поддержки

3 голосов
/ 04 августа 2009

Вы не можете откатить совершенную транзакцию.

Вы будете иметь ' момент восстановления ' базы данных до фиксации транзакции. Вы начинаете с последней полной резервной копии до инцидента, затем применяете самый последний дифференциал до инцидента, а затем регистрируете интересующую вас точку и останавливаетесь во время инцидента, когда восстанавливаете базу данных без применения любой дальнейший журнал. Подробнее в ссылке. Если после этого момента у вас есть другие транзакции, которые необходимо восстановить, вы можете восстановить копию базы данных в точке ошибки, а затем вручную скопировать удаленные данные из базы данных копирования в реальную базу данных.

0 голосов
/ 05 февраля 2013

Кроме того, для предыдущих решений (то есть выше) вы можете использовать опцию «WITH STANDBY = 'filename'» в командах восстановления журнала. Это позволит вам читать базу данных между восстановлениями, что немного облегчает восстановление данных.

Если это SQL 2000 и у вас есть полное резервное копирование и файлы резервных копий журнала транзакций, есть инструмент, который вы можете использовать, который позволит вам извлечь сценарии отмены. Он по-прежнему зависит от наличия восстанавливаемой резервной копии и файлов журналов транзакций, но позволяет фильтровать журналы транзакций и извлекать SQL в сценарий. У меня нет под рукой копии, но она была бесплатной, доступной у одного из крупнейших поставщиков инструментов SQL (например, Quest, Red Gate, Idera).

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