Основные методы восстановления данных



В SQL Server 7.0 можно выделить два метода восстановления данных: автоматическое и вынужденное, выполняемое системным администратором при повреждении данных.

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

• Отменяются транзакции, незавершенные на момент выключения SQL Server или потери работоспособности системы.

• На основании журнала проверяются транзакции, которые были завершены в промежуток времени между выполнением последней контрольной точки и потерей работоспособности системы. При наличии таких транзакций их выполнение повторяется и записываются изменения, произведенные в данных. Такое действие получило название откат вперед (rolling forward).

Автоматическое восстановление начинается с БДmaster, затем следуетmodel после чего стирается содержание БДtempdb и последовательно восстанавливаются БДmsdb, pubs и distribution (если сервер сконфигурирован для публикаций). После этого восстанавливаются БД пользователей. В процессе автоматического восстановления данных пользователи могут регистрироваться на сервере, но доступ к БД будет открыт только после полного завершения процесса.

Восстановление объектов SQL Server

Восстановление БД.

После восстановления устройства выполните следующие действия для воссоздания поврежденной БД:

1. Выполните приведенный ниже запрос для проверки использовавшихся поврежденной базой данных устройств:

SELECT segmap, ‘size’ = size/512 FROM sysusages

WHERE dbid =

(SELECT dbid FROM sysdatabases

WHERE name = ‘testDB’)

Таким образом, мы определили размеры блоков для БДtestDB. Вы можете и( пользовать те же параметры при пересоздании БД.

Например, если результат выполнения запроса такой:

Segmap                  size

---------             -----

3 20

3 10

4 10

3 2

4 4

 

Значения в столбцеsegmap означают: 3 – пространство используется для данных; 4 – пространство используется для журнала транзакций.

В столбцеsize приведен объем пространства в мегабайтах.

2. Создайте заново БД, используя команду CREATE DATABASE, дублирующую все записи старой таблицыsysusages, начиная с первой и до первого устройства, на котором располагался журнал транзакций:

CREATE DATABASE testDB ON datadevl = 20, datadev2 = 10

LOG ON logdevl = 10

3. При необходимости используйте команду ALTER DATABASE для расширения пространства на отдельных устройствах. Например, для увеличения размера, занимаемого БД на устройстве datadevl, выполните следующую команду:

ALTER DATABASE testDB ON datadevl = 2

Для выделения места для БД на другом устройстве можно выполнить команду:

ALTER DATABASE testDB ON datadev3 = 2

При выполнении команды ALTER DATABASE не забудьте, что при выделении места на устройстве, которое уже частично занято данной БД, оно автоматически будет использоваться так же, как и уже имеющееся пространство (если были записаны данные, то и будут записываться данные, если журнал транзакций — то журнал транзакций). Когда вы выделяете место на устройстве, которое до этого не использовалось данной БД, оно по умолчанию будет применяться для хранения данных. Для размещения на таком устройстве журнала транзакций выполните кoмaнду ALTER DATABASE с системной процедурой sp_logdevice. Например:

ALTER DATABASE testDB ON logdev2 = 4

EXEC sp_logdevice testDB, logdev2

4. Перезагрузите БД, используя команду LOAD DATABASE, и затем загрузите архив журнала транзакций и последнюю архивную копию текущего журнала транзакций, используя команду LOAD TRANSACTION.

Для загрузки БД применяется следующий шаблон:

LOAD DATABASE <Иия БД>

FROM <Архивное устройство 1> [, ... ]

[WITH <Опции>]

Для загрузки журнала транзакций используйте следующий шаблон:

LOAD TRANSACTION <Имя БД>

FROM <Архивное устройство 1> [, ... ]

[WITH <0пции>]

Для загрузки заголовка примените следующий шаблон:

LOAD HEADERONLY

FROM <Архивное устройство>

Восстановление БД master.

Повреждения БД master не могут остаться незамеченными, так как они вызовут невозможность запуска SQL Server или приведут к ошибкам чтения/записи данных. Наиболее распространенным случаем повреждения БД master является выход из строя жесткого диска во время записи данных.

Процедура восстановления поврежденной БД master отличается от восстановления БД пользователей. Если БД master недоступна из-за повреждения данных, ее придется пересоздать, используя SQL Server Setup, и затем восстановить на основе последней архивной копии. Естественно, изменения, выполненные после создания последней архивной копии, будут потеряны и их придется повторить еще раз.

Для восстановления БД master выполните следующие действия:

1. Запустите программу SQL Setup для пересоздания БД master. Эта БД должна быть создана с теми же кодовой страницей и порядком сортировки, которые использовались на момент создания последней архивной копии. Также необходимо убедиться, что указано такое же расположение, путь, имя и размер устройства.

2. Добавьте к устройствам сервера архивное устройство, если копия BQ.master находится не на дискетах.

3. Запустите SQL Server в однопользовательском режиме, как описано выше.

4. Восстановите БД, используя ее последнюю архивную копию.

5. Выполните изменения, которые не были отражены в архивной копии.

6. Восстановите БД msdb.

Восстановление БД master без архивной копии

При восстановлении БД master бывают и более тяжелые ситуации, когда:

• повреждено устройство, на котором расположена БД master;

• повреждена копия журнала транзакций или её не существует. При этом остались в целости данные для БД пользователей.

В случае повреждения копии журнала транзакций для восстановления БД master выполните следующие действия:

1. Запустите программу SQL Setup.

2. Создайте БД master c той же кодовой страницей и порядком сортировки, которые использовались на момент записи последней архивной копии. Также необходимо убедиться в правильности расположения, пути, имени и размера устройства master.

3. Запустите SQL Server в однопользовательском режиме.

4. Выполните команду DISK REINIT для инициализации устройств, имена которых не сохранились в таблице sysdevices.

5. Выполните команду DISK REFIT для перестройки таблиц sysusages и sysdatabases.


Дата добавления: 2018-04-04; просмотров: 185; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!