2014-02-10 1 views
0

У меня есть первичные ключи для таблицы моей базы данных для удаленных записей, я хочу проверить, кто удалил эти записи. Мое приложение использует членство asp.net для аутентификации пользователей. никто не регистрируется на SQL-сервере, кроме меня.SQL проверить, кто удалил строки и восстановить их

Я не администратор базы данных, так что это сбивает с толку для меня, найдено this, но это сбивает меня с толку. также найдены некоторые инструменты, такие как red-gate и apex-sql, но red-gate работает только с SQL 2000.

+1

Вы хотите восстановить (восстановить) строки SQL ... это не слишком просто - не невозможно, но его нетривиально. Если у вас есть контроль над своим приложением, то почему вы просто не ограничиваете операцию удаления на основе роли пользователя, и если она продолжается, запишите эти данные в таблице аудита. Или (и это то, что я делаю), фактически не удаляйте записи. Вместо этого есть флаг состояния (или перечисление), который указывает, активна ли запись или нет. Есть много способов кожи этой кошки. Если у вас нет контроля над приложением, то сохраненный процесс в операции удаления может быть способом. – robnick

+0

Являются ли эти строки физически удалены из таблиц? если да, то будет полезно восстановить их, если у вас нет резервной копии базы данных, IMO добавляет столбец IsDeleted в столбец и столбец DeletedBy, чтобы сохранить, кто удалил строку, а для восстановления просто измените поле IsDeleted. –

+0

@robnick: Да, у меня есть полный контроль над приложением, я также ограничил пользователей и роли, но когда мы провели аудит, было обнаружено, что некоторые записи были удалены. я нашел способ, с помощью которого пользователи могут удалять записи, но очень много времени, чтобы полностью удалить основную дочернюю запись. Теперь я планирую разместить файл журнала каждой операции, выполняемой в приложении в формате xml. но теперь мне нужно выяснить, кто их удалил. Я обновил дату, запросил timecreated, последнее обновление и последнее обновление. но информация об исключении отсутствует. –

ответ

0

Вы можете попробовать ApexSQL Log инструмент для восстановления удаленных строк, но вы не можете реально увидеть, кто их удалил. Все инструменты сторонних производителей могут захватить только логины SQL Server

Вы должны также проверить необходимые предпосылки для успешного восстановления:

  1. SQL Server 2005, 2008, 2008 R2 или 2012 баз данных
  2. база данных находится в полном восстановлении модель
  3. базе данных Авто-психиатром выключен
  4. журнал транзакций не усеченный
  5. резервные файлы не были сжаты и несжатых с помощью любого 3-го сторонние инструменты
  6. Резервное копирование полной резервной копии базы данных и резервное копирование журналов транзакций являются родными или родными SQL Server являются родными или родными SQL Server
  7. Целая цепочка резервных копий журнала транзакций с момента создания полной резервной копии базы данных. Или полную резервную копию базы данных, затем резервные копии дифференциальных баз данных, а затем цепочку резервного копирования журнала транзакций оттуда до момента, когда вы хотите восстановить
  8. Если база данных восстановлена ​​с использованием резервной копии исходной базы данных, вы должны предоставить резервные копии журналов транзакций из исходный сервер или восстановить базу данных с использованием исходного файла mdf и ldf сервера
Смежные вопросы