|
Добавление файлов базы данных 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: |
Перевод: Александр Гладченко 2001г. |