Как восстановить базу данных, которая случайно удалена с помощью SQL-сервера 2008

Вам не придется восстановить полное до другой системы.

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

Какое обслуживание SAN происходит, что необходимо вывести базу данных из эксплуатации в течение нескольких дней?

6
задан 13 July 2010 в 09:57
6 ответов

Эта ссылка отвечает на некоторые общие вопросы, просто связанные с этим:

SQL-СЕРВЕР – база данных восстановления без или с резервным копированием – все о восстановлении и резервном копировании

Подзаголовок:

Вы должны завершить резервное копирование для откатывания изменений. Если у Вас нет полного резервного копирования, Вы не можете вернуться назад.Прошу прощения.

5
ответ дан 3 December 2019 в 00:11

У Вас есть резервное копирование? Если так, восстановите от этого.

В противном случае у Вас нет дальнейших опций. MDF и файлы LDF удалены (см. DROP DATABASE),

2
ответ дан 3 December 2019 в 00:11

Это будет немного долго, в надежде более детально проработать тему, чем другие ответы.

Когда вы удаляете базу данных, лежащие в ее основе файлы не перемещаются в корзину, а фактически удаляются. «Удалено» означает, что записи каталога, которые файловая система NTFS использует для описания местоположения и длины, удаляются и, что касается ОС, пространство на диске, где находятся эти файлы, становится свободным для использования в любых целях. Там могут быть записаны другие файлы, которые перезапишут данные, которые вы хотите «вернуть».

Возможно, можно «восстановить» файлы данных и журналов с помощью сторонней утилиты восстановления. Проблема заключается в том, что эти утилиты часто не возвращают файл на 100% в целости и сохранности, поскольку данные, возможно, уже были записаны в ту область на диске, где ранее находился файл. Это особенно верно, если система продолжала работать некоторое время после удаления файлов при удалении базы данных. (Лучше всего, но не лучшим вариантом было бы выключить систему сразу после удаления базы данных. Я предполагаю, что этого не произошло.)

Если файлы не на 100% должным образом восстановлены утилитой восстановления удаления, ваши данные и / или внутренняя структура файлов баз данных будут повреждены. SQL Server может заметить это, когда файлы возвращаются в оперативный режим (с помощью команды присоединения), а затем помечает базу данных как подозрительную. Вы бы вернулись туда, где были, без рабочей базы данных.

Даже если SQL Server успешно переведет базу данных в оперативный режим, это не гарантирует, что ваши данные не были повреждены. Первое, что вы должны сделать после подключения потенциально опасной базы данных с помощью команды подключения, - это запустить для нее DBCC CHECKDB (). Если эта команда работает без проблем, вероятно, все в порядке (и вам следует немедленно сделать резервную копию). Более вероятно, что он обнаружит повреждение, которое невозможно исправить.

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

Хотя «героизм» с технической точки зрения интересно читать, лучше всего избегать ситуаций, когда вам придется прибегать к необычным средствам, чтобы вернуть свои данные. (Это верно вдвойне (фактически в три раза) для людей, которые не администрируют базы данных на постоянной основе.) Самое простое, что можно сделать, - это регулярно создавать резервные копии ваших данных любыми необходимыми средствами и тестировать процесс восстановления. Дисковое пространство кажется дорогим, пока вы не поймете, насколько дорого обходится получение данных через сторонних специалистов.

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

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

4
ответ дан 3 December 2019 в 00:11

Спасибо @talonx, я провел небольшое исследование, у Amazon Autoscale есть API для запроса текущего статуса группы автомасштабирования и перечисления ее членов. Он возвращает идентификатор экземпляра ( http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/api_requests.html#query-example ), затем вы можете использовать инструменты описания, чтобы получить имя сервера. ( http://docs.aws.amazon.com/AWSEC2/latest/CommandLineReference/ApiReference-cmd-DescribeInstances.html ) и, наконец, воссоздать включаемый файл восходящего потока. Я чувствовал, что уведомления автомасштабирования запускают процесс, выполняющий эти задачи.

Я все еще не реализовал его, но это способ сделать.

Также можно использовать автоматическое масштабирование с SNS http: // docs .aws.amazon.com / AutoScaling / latest / DeveloperGuide / ASGettingNotifications.

1
ответ дан 3 December 2019 в 00:11

, если транзакция, которую вы случайно удалили, была выполнена в рамках транзакции Begin и не была зафиксирована, ее можно восстановить с помощью функции fn_dblog (). вы можете применить приведенную ниже команду для просмотра случайно удаленных данных.

SELECT
    [Current LSN],
    [Transaction ID],
    [Operation],
    [Context],
    [AllocUnitName]
FROM fn_dbLog(NULL, NULL)
WHERE [Operation] = 'LOP_DELETE_ROWS'

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

0
ответ дан 3 December 2019 в 00:11

Пока ничего не было записано на этот диск с момента удаления, они все еще там. Просто пошло выделение в файловой системе. Попробуйте https://www.ccleaner.com/recuva/download - у меня сработало :-)

0
ответ дан 30 June 2020 в 17:26

Теги

Похожие вопросы