У нас на работе парень (извинюсь, но он из Индии) запустил update без указания секции where прямо на боевой базе данных. Результат - записи всей таблицы обновились, хотя ему нужно были изменить только одну. Ну со всеми бывает, надеюсь, что будет редко и меня обойдет.
Самое обидное, что он делал все по правилам - открыл транзакцию, запустил обновление, увидел, что изменено 11 тысяч строк вместо одной и почему-то проигнорировал и закомитил данные. Только потом увидел свой косяк.
Всего 11 тысяч строк, но в достаточно важной таблице. Восстанавливать базу из резервной копии - слишком долго. Нужно за просить последнюю копию у админов, получить разрешение на копирование 300 гигабайт PCI ограниченных данных, восстановить где-то на сервере и складировать данные. Нереально. Проще обновить все затертые данные случайным мусором и сказать, что во всем виноват Билл Гейтс.
Потом решили все же попытаться восстановить данные. Мы много делает отчетов и различные конвертации данных, поэтому первым делом проверили все места, где могла быть копия данных. Не повезло, ничего не оказалось.
Потом решили копать в сторону репликации. Как раз три дня назад мы сделали полный снимок и инициализировали заново один из серверов, потому что репликация глюкнула. Я точно не знаю причин, почему сделали инициализацию заново, потому что меня не было на работе, да мне и все равно, главное, что нам повезло. Залезли в папку, где находятся файлы с последнего снапшота и скопировали файлы .bcp (по идее это означает Bulk Copy, но тут я могу ошибаться). Скопировали файлы на локальный диск одного из серверов баз и используя утилиту командной строки bcp скормили это все серверу. SQL Sever загрузил данные в новую таблицу и мы из этой таблицы скопировали затертые данные в боевую базу данных. Из 11 тысяч записей в репликационных данных мы нашли почти все записи, кроме новых строк, которые создали с момента полной копии.
Восстановить новые записи, которые были созданы уже после последней полной копии можно через просмотр записей в журнале, который храниться на дистрибуторе в базе данных distribution. Просто выполняем команду sp_browsereplcmds и она показывает все, что нужно. Только отфильтруй записи по таблице, указав параметр article_id.
Этот метод не самый идеальный, потому что показывает SQL запросы, которые нужно еще обработать, но если данных для восстановления не много, то можно и воспользоваться им. Если данных много, то наверно лучше будет все же воспользоваться полной резервной копией.
Понравилось? Кликни Лайк, чтобы я знал, какой контент более интересен читателям. Заметку пока еще никто не лайкал и ты можешь быть первым
Индус работает или уже нет?
как надо натупить чтобы уволили? Вообще есть какая то система наказания за невнимательность и т.п.?
Ну это у него первый такой сильный косяк, так то он вполне не плохо соображает. Редкие косяки у нас прощают, потому что все могут ошибаться, это нормально, главное, чтобы он сделал вывод и работал над косяками.
Михаил, скажите, вы когда скролите страницу, то как считаете- опускаете страницу или ее поднимаете?
Сролю вниз - по движению руки в Windows компьютерах по тач паду.
Весело у вас там))
Хотите найти еще что-то интересное почитать? Можно попробовать отфильтровать заметки на блоге по категориям.