|
По материалам статьи Microsoft Knowledge Base «INF Restore
File and Filegroup Backups in SQL Server» Файлы или файлгруппы (filegroups) в базе данных могут резервироваться и восстанавливаться индивидуально. Это позволяет восстанавливать только поврежденные файлы без того, чтобы восстанавливать не повреждённую часть базы. Файлы в резервной копии файлгруппы могут быть восстановлены индивидуально или как группа. Эта статья обсуждает некоторые важные моменты и проблемы, связанных с восстановлением файлов и файлгрупп. Прежде всего, необходимо резервировать Transaction
Log! - SQL SERVER 7.0 требует, чтобы опция
TruncateLogOnCheckpoint не была установлена, и чтобы резервные
копии transaction log создавались в дополнение к резервной
копии файлгруппы или файла базы данных. ОБРАТИТЕ ВНИМАНИЕ: Вы должны создавать полный набор резервных копий файла, включая резервные копии журнала транзакций. Отсутствие средств резервирования может стать причиной потери всей базы данных, если нет актуальной резервной копии повреждённого файла. Не возможно прервать регенерацию отдельных файлов до её завершения. По этой причине, Вы должны всегда делать резервную копию transaction log до восстановления резервной копии файла. Если transaction log поврежден или Вы желаете восстановить полную копию базы данных на определенное время, Вы должны восстановить полный набор резервных копий файла, прежде чем Вы примените резервные копии transaction log. Чтобы уменьшить риск повреждения transaction log, расположите его на надёжном дисковом массиве. Если полная копия базы данных потеряна: - Вы должны иметь резервную копию каждого файла или
filegroup базы данных. ОБРАТИТЕ ВНИМАНИЕ: Если какое-либо из перечисленных выше условий не будет выполнено, базу данных восстановить будет не возможно. Резервные копии файла и Filegroup должны быть восстановлены в соответствующую базу данных: Резервные копии файла и Filegroup могут быть восстановлены только в базу данных, которой они принадлежат. Вы не можете создавать новую, пустую базу данных с той же самой структурой и именами файлов и затем пытаться восстанавливать отдельную резервную копию файла или filegroup; Вы должны восстановить их в существующую базу данных или выполнить восстановление полной копии базы данных в другом месте. (в SQL Server 2000 есть новая возможность, позволяющая осуществлять операции восстановления базы данных RESTORE DATABASE по частям). ОБРАТИТЕ ВНИМАНИЕ: Не пытайтесь отсоединять (detach) базу данных и затем снова прикрепить (attach) её, если файл базы данных, состоящей из нескольких файлов или filegroup, потерян. Вместо этого, восстановите необходимый файл или filegroup из резервной копии. Если база данных отсоединена, её переприкрепление окончится сбоем, и Вы будете вынуждены восстановить полную резервную копию базы данных. Это произойдёт потому, что файлы базы данных согласованы в базе данных, и этот механизм основан на глобальном идентификаторе (GUID). Этот механизм должен защитить целостность базы данных так, чтобы файлы, которые не принадлежат базе данных, не были бы смешаны с файлами базы, что может стать причиной серьезных проблем с целостностью данных. Даже притом, что Вы можете создать новую базу данных с теми же самыми именами файлов, GUID не будет соответствовать прежним значениям. SQL Server не позволяет Вам прикреплять отдельный файл базы данных, которая содержит несколько таких файлов. При прикреплении ищутся все файлы, которые принадлежат базе к которой файл прикрепляется и, если не удаётся найти файлы с соответствующими GUID, процедура прикрепления потерпит неудачу. Аналогично, если Вы создаёте новую базу данных с теми же самыми именами файлов и filegroups, как в первоначальной базе данных, попробуйте заменить некоторые из файлов, и затем пытайтесь инициировать регенерацию базы данных, выполняющуюся после запуска SQL сервера. Регенерация окончится сбоем, о чём будет сообщено в errorlog. Например, так: 2000-11-28 13:14:52.88 spid9 Opening file
C:\MSSQL7\data\f2_Data.NDF. Операции частичного восстановления базы данных (Только для SQL Server 2000): В SQL Server 2000 появилась новая опция PARTIAL инструкции
T- SQL: RESTORE, которая обеспечивает механизм восстановления
частей базы данных в другое месторасположение, причём так,
чтобы поврежденные или отсутствующие данные могли быть
скопированы назад, в первоначальную базу данных. Операции
частичного восстановления работают с базой данных имеющей
filegroups. Например, Вы имеете базу данных, которая состоит
из первичной filegroup, filegroup-А и filegroup-B.
Предположим, что таблица, которая постоянно находится в
filegroup-B, была случайно удалена. Если Вы имеете filegroup и
резервные копии transaction log доступны, чтобы восстановить
удаленную таблицу, Вы можете восстановить только filegroup-B
совместно с первичной filegroup. Инструкция RESTORE с
предложением PARTIAL позволяет осуществлять восстановление в
новую базу данных или даже на другой сервер. Вы сможете
извлечь и перезагрузить содержимое таблицы в первоначальную
базу данных. Пожалуйста, изучите следующие темы, относящиеся к файлам и filegroups: SQL Server 7.0 Books Online topics: SQL Server 2000 Books Online topics: |
Перевод: Александр Гладченко 2001г. |