| ||||||||||||||||
| ||||||||||||||||
| ||||||||||||||||
Добавление и удаление файла базы данных между резервированиями журнала По материалам статьи Microsofr: «INF: Effect of Database File Additions or Deletions on Database Recovery»
Добавление файлов базы данных SQL Server 7.0 между резервными копиями transaction log нарушает последовательность резервирования
записей transaction log, созданных после некорректно добавленного файла. Server: Msg 3155, Level 16, State 1, Line 1 The RESTORE operation cannot proceed because one or more files have been added or dropped from the database since the backup set was created. Server: Msg 3013, Level 16, State 1, Line 1 Backup or restore operation terminating abnormally.
Поэтому, Вы должны создать полную резервную копию базы данных после добавления или удаления файла к базе данных, чтобы начать
новую последовательность резервных копий журнала.
RESTORE LOG NORTHWIND FROM DISK ='path for the transaction log backup file'
Результат исполнения запроса, это база данных вместе с добавленным файлом. Операция восстановления создаст и новый файл, что позволит
начать в него запись данных. Вы можете использовать команду RESTORE без опции MOVE. Если файл базы данных удален из базы данных
SQL Server 2000, операция восстановления продолжится без любs[ изменений, и SQL Server самостоятельно узнает об удаление файлов
и соответственно откорректирует базу данных. SQL Server 7.0
Рассмотрим случай, когда используется промышленная база данных SQL Server 7.0, работающая в режиме 24х7 (круглосуточно всю неделю).
При попытке восстановить её из backup, Вы должны вначале восстановить последнюю, полную резервную копию (используя WITH NORECOVERY),
а затем, все n-1 резервные копии transaction log (используя WITH NORECOVERY) и последнюю резервную копию transaction log (используя
WITH RECOVERY).
1. Выполните резервное копирование базы данных SQL Server 7.0.
ALTER DATABASE northwind 4. Выполните резервное копирование transaction log в файл tran_log2.trn. Когда происходит разрушение базы данных или если Вы хотите восстановиться из резервной копировании в целях восстановления прошлого состояния базы данных, используя резервную последовательность, созданную до момента сбоя, следуйте представленным ниже шагам: 1. Восстановите базу данных SQL Server 7.0, используя:
WITH NORECOVERY Processed 360 pages for database 'northwind', file 'Northwind' on file 1. Processed 1 pages for database 'northwind', file 'Northwind_log' on file 1. Backup or restore operation successfully processed 361 pages in 0.810 seconds (3.642 MB/sec) 2. Восстановите резервную копию transaction log, используя WITH NORECOVERY из tran_log1.trn: Restore Successful Processed 1 pages for database 'northwind', file 'Northwind_log' on file 1. Backup or restore operation successfully processed 1 pages in 0.004 seconds (1.664 MB/sec). 3. Восстановите transaction log, используя WITH NORECOVERY из tran_log2.trn: Операция восстановления потерпит неудачу с сообщением об ошибке: Server: Msg 3155, Level 16, State 1, Line 1 The RESTORE operation cannot proceed because one or more files have been added or dropped from the database since the backup set was created. Server: Msg 3013, Level 16, State 1, Line 1 Backup or restore operation terminating abnormally.
Поскольку сообщение об ошибке указывает, что восстановление transaction log не может быть продолжено из заданной резервной копии
transaction log (tran_log2.trn). Такое поведение соответствует дизайну SQL Server 7.0 и не позволяет добавлять или удалять файлы между
резервными копиями журнала. SQL Server 2000 Для SQL Server 2000, добавление или удаление файлов обрабатывается без необходимости создания новой последовательности резервирования. После добавления файла к базе данных в середину последовательности резервного копирования записей transaction log, следующее резервное копирование transaction log должно быть запущено вручную, с использованием опции WITH MOVE. Рассмотрим сценарий, подобный используемому для SQL Server 7.0. После добавления файла к промышленной базе данных, выполните:
ALTER DATABASE Northwind Если резервное копирование transaction log базы данных выполнено после добавления файла, попробуйте восстановить первую, после добавления файла, резервную копию transaction log (tran_log2.trn), что приведёт к следующему сообщению об ошибке:
Processed 1 pages for database 'northwind', file 'Northwind_log' on file 1.
Сообщение об ошибке выдаётся потому, что команда RESTORE не запускалась с опцией, создающей новый файл (соответствующий файлу,
добавляемому к промышленной базе данных) и позволяющей записать данные в файл. 1. Вручную восстановите первую резервную копию transaction log, созданную после добавления файла (для SQL Server Query Analyzer или SQL Server Enterprise Manager) используйте следующий код:
RESTORE LOG NORTHWIND FROM
Теперь Вы создали новый файл базы данных, такой же, как существует в промышленной базе данных сервера, на котором создавалась
резервная копия transaction log. SQL Server 2000 Log Shipping Сценарий
Если Ваш SQL Server 2000 использует Log Shipping, и если добавляется файл базы данных к промышленной базе и заданию на загрузку в
резервный сервер (непрерывно выполняющемуся в заданных интервалах времени), выполнение загрузки на резервный сервер будет
прервано сбоем с сообщением об ошибке 5105. [Microsoft SQL-DMO (ODBC SQLState: 42000)] Error 5105: [Microsoft][ODBC SQL Server Driver][SQL Server]Device activation error. The physical file name 'C:\Program Files\Microsoft SQL Server\MSSQL$SQL2K1\data\northwnd_data2.NDF' may be incorrect. [Microsoft][ODBC SQL Server Driver][SQL Server]File 'northwnd_data2' cannot be created. Use WITH MOVE to specify a usable physical file name. [Microsoft][ODBC SQL Server
Это сообщение об ошибках появляется потому, что не определено новое расположение файла в опции восстановления, а SQLMAINT не
запрограммирован на определение нового расположения файла. Чтобы избежать появления этой ошибки на резервном сервере, для первого
резервного копирования transaction log, созданного после добавления файла к базе данных SQL Server, в Query Analyzer, используйте
опцию WITH MOVE и определите расположение, в котором добавленный файл должен быть создан на резервном сервере.
restore log pubs2 from disk ='C:\Program Files\Microsoft SQL Server\MSSQL$SQL2K1\BACKUP\northwind_tlog_200101270219.TRN'
После того, как Вы выполните эту команду, дальнейшее восстановление transaction log будет проходить без сообщения об ошибке 5105.
Вам, вероятно, придется сделать некоторые исправления в зависимости от установки load_all для Log Shipping пары.
Дополнительную информацию можно получить в статье Microsoft Knowledge Base: |
|
| ||||||||||||||||
|