|
По материалам статьи Alexander Chigrik: Troubleshooting
SQL Server Backup/Restore Problems Если у Вас возникают проблемы с резервированием/восстановлением баз данных, просмотрите следующие рекомендации по выявлению проблем и принятию по ним правильного решения. 1. Убедитесь в том, что для Вашего SQL Server установлен последний сервисный пакет (service pack) и последующие заплаты. Для того, чтобы проверить, какой сервиспак у Вас установлен, просмотрите следующую статью: How can I check what SQL service pack am I running? На момент перевода этой статьи, запрос select @@version должен возвращать: 8.00.818 2. Убедитесь в том, что у Вас достаточно прав для исполнения операций резервирования/восстановления. Для резервного копирования базы данных и журнала транзакций, т.е. исполнения команд: BACKUP DATABASE или BACKUP LOG, необходимо быть членом фиксированной серверной роли sysadmin или фиксированных ролей базы данных db_owner и db_backupoperator. Для восстановления базы данных нужно иметь разрешение присущие команде CREATE DATABASE, если в момент восстановления база данных не существует. Если же база данных восстанавливается поверх существующей, Вы должны иметь разрешения для RESTORE, т.е. быть членом фиксированных серверных ролей sysadmin или dbcreator, либо должны быть владельцем этой базы данных (dbo). 3. Если Вам нужно сделать резервную копию журнала транзакций, проверьте что опция 'trunc. log on chkpt' отключена. Вы не сможете сделать резервную копию журнала транзакций, если включена опция 'trunc. log on chkpt' , потому что в этом случае журнал транзакций будет усечён при выполнении контрольной точки и очистится от завершённых транзакций. В SQL Server 2000 аналогом опции 'trunc. log on chkpt' является модель резервирования - simple. 4. Если в момент выполнения операций
резервирования/восстановления, у Вас возникает ошибка 156,
перед запуском операторов BACKUP или RESTORE, установите: Ошибка 156 возникает в случае некорректного синтаксиса T-SQL оператора. Одной из причин возникновения этой ошибки является установка уровня совместимости с SQL Server 6.5 (Database compatibility level 65 ). Для того, чтобы оператороы BACKUP и RESTORE были корректными, нужно для SQL Server 7.0 установить Database compatibility level 70, и Database compatibility level 70 или 80 для SQL Server 2000. 5. Если в процессе восстановлении базы данных или резервного копирования журнала транзакций, произошла ошибка 1511, включите флаг трассировки 3222, чтобы отменить упреждающее чтение, которое используется во время фиксации завершенных транзакций, которые не были сохранены на диске. Дело в том, что восстановление, т.е. RESTORE можно выполнять в обычном режиме (с регенерацией - recovery), а можно её запретить опцией NORECOVERY. В таком случае, окончательное согласование журнала не происходит и база будет доступна только на чтение. Эту опцию используют, когда восстанавливают полную копию, а следом разностные копии и/или копии журнала. Однако, если в сервере установлен не приспособленный для обслуживания СУБД контроллер дисков, могут возникнуть проблемы при упреждающем чтении (которое обеспечивает кэширование резервной копии), т.е. при регенерации или восстановление может быть нарушен порядок следования виртуальных журналов. Для этого, упреждающее чтение можно отключить специальным флагом трассировки. Для отмены упреждающего чтения Вы можете использовать директиву DBCC TRACEON(3222) на то подключение, в котором пытаетесь выполнить операцию восстановления. Это известный баг SQL Server 7.0, в SQL Server 2000 нет таких проблем. 6. Если во время выполнения операции резервного копирования, произошла ошибка 3023, выполните резервное копирование после окончания операции, с которой оно конфликтует. Ошибка 3023 показывает, что операция резервного копирования не может быть выполнена во время создания, удаления и сжатие файлов базы данных. Таким образом, получив эту ошибку, Вы должны перезапустить операцию резервного копирования после окончания процесса, с которым она конфликтует. 7. Если при выполнении резервного копирования возникает ошибка 3036, используйте копии с основного сервера пока эта база имеет статус standby. Ошибка 3036 показывает, что база данных находится в состоянии горячего резерва (устанавливается выполнением оператора RESTORE WITH STANDBY) и для нее невозможно создать резервную копию пока последовательность копий не будет полностью загружена. 8. Когда при восстановлении возникает ошибка 3143, используйте оператор RESTORE HEADERONLY, чтобы получить описание резервного архива. Ошибка 3143 показывает, что восстанавливаемая копия была сохранена в правильном формате, но это копия была сделана не SQL Server, а с помощью другого программного продукта. В этом случае с помощью RESTORE HEADERONLY можно просмотреть описание резервной копии. 9. Если во время выполнения операции восстановления возникает ошибка 3154, перезапишите существующую базу данных используя команду RESTORE DATABASE с опцией WITH REPLACE или выполните восстановление в базу данных с другим именем. Ошибка 3154 возникает, когда Вы пытаетесь восстановить базу поверх существующей, но существующая база данных была создана оператором CREATE DATABASE с другим набором инструкций, чем при создании базы данных, восстанавливаемой из резервной копии. 10. Если во время резервного копирования произошла ошибка 3206 или 3209, создайте устройство резервного копирования с помощью хранимой процедуры sp_addumpdevice или обратитесь непосредственно к физическому устройству, определенному в операторе BACKUP, как TAPE = или DISK =. Эти ошибки возникают в случае если Вы пытаетесь использовать логическое устройство, которое не является устройством резервного копирования. 11. Если у Вас в процессе восстановления возникает ошибка 3249, замените текущее устройство резервирования на то, которое содержит начало набора резервных копий. Ошибка 3249 показывает, что набор резервных копий находится на разных устройствах и для того, чтобы можно было запустить восстановление данных, необходимо загрузить устройство, на котором находится начальная копия для восстановления. 12. Если в процессе восстановления Вы получаете ошибку 3256, восстановите разностную копию базы данных и выполните фиксацию транзакций. Эта ошибка показывает, что набор резервных копий не полный, т.к. операция по созданию резервных копий была завершена с ошибкой. 13. Если в процессе восстановления большой базы данных в Windows 98 происходит ошибка 3257, попытайтесь создать базу такого же размера, как у резервируемой, а затем восстановите по ней резервную копию исходной базы данных, или включать перед восстановлением флаг трассировки 3104. Эта ошибка возникает когда размер файла восстанавливаемой базы данных более 2Гб и база данных восстанавливается поверх существующей, размер которой меньше 2Гб. Эта ошибка показывает, что SQL Server не может правильно контролировать свободное пространство. Чтобы обойти контроль свободного пространства, можно использовать DBCC TRACEON(3104) на каждое подключение, в котором необходимо осуществить операцию восстановления. 14. Если в процессе резервного копирования или восстановления возникает ошибка 3267 или 3627, попытайтесь выполнить эти действия позже, когда нагрузка на сервере станет меньше. Эта ошибка возникает когда сервер занят и не может выполнить копирование/восстановление базы данных. 15. Выполняйте полное резервное копирование базы данных перед тем как копировать журнал транзакций. В противном случае, Вы можете в процессе восстановления получить ошибку 4214. Ошибка 4214 показывает, что данная копия базы не является текущей. Для восстановления базы данных после сбоя необходимо наличие полной резервной копии или полный набор всех копий файлов. 16. В случае возникновения ошибки 4305 при выполнении операции восстановления базы данных, восстановите копии журнала транзакций в том порядке, в котором они были созданы. Ошибка 4305 возникает в том случае, если операция восстановления находит промежуток между последним восстановлением и тем журналом транзакций, который пытаются применить. Таким образом, для устранения этой ошибки, Вы должны восстанавливать копии журнала транзакций в том порядке, в котором они были созданы. |
Перевод: Ирины Наумовой 2003г. |