Поделиться через


Устранение неполадок операций резервного копирования и восстановления SQL Server

В этой статье приведены решения распространенных проблем, которые могут возникнуть во время операций резервного копирования и восстановления Microsoft SQL Server, а также ссылки на дополнительные сведения об этих операциях.

Исходная версия продукта: SQL Server
Исходный номер базы знаний: 224071

Операции резервного копирования и восстановления занимает много времени

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

  • Журнал ошибок SQL Server содержит сведения о предыдущих операциях резервного копирования и восстановления. Эти сведения можно использовать для оценки времени, необходимого для резервного копирования и восстановления базы данных в текущем состоянии. Ниже приведен пример выходных данных из журнала ошибок:

    RESTORE DATABASE successfully processed 315 pages in 0.372 seconds (6.604 MB/sec)
    
  • В SQL Server 2016 и более поздних версиях можно использовать XEvent backup_restore_progress_trace для отслеживания хода выполнения операций резервного копирования и восстановления.

  • Для отслеживания хода выполнения операций резервного копирования и восстановления можно использовать percent_complete столбец sys.dm_exec_requests .

  • Вы можете измерять сведения о пропускной способности резервного копирования и восстановления с помощью Device throughput Bytes/sec Backup/Restore throughput/sec счетчиков монитора производительности. Дополнительные сведения см. в разделе SQL Server, объект устройства резервного копирования.

  • Используйте скрипт estimate_backup_restore для получения оценки времени резервного копирования.

  • Узнайте, как это работает: что такое восстановление и резервное копирование?. Эта запись блога содержит сведения о текущем этапе операций резервного копирования или восстановления.

Параметры, подлежащие проверке

  1. Проверьте, возникают ли какие-либо известные проблемы, перечисленные в следующей таблице. Рассмотрите возможность реализации изменений или применения исправлений и рекомендаций, которые рассматриваются в соответствующих статьях.

    Ссылка на базу знаний или электронную книгу Объяснение и рекомендуемые действия
    Оптимизация производительности резервного копирования и восстановления в SQL Server В разделе "Электронная книга" рассматриваются различные рекомендации, которые можно использовать для повышения производительности операций резервного копирования и восстановления. Например, можно назначить специальные SE_MANAGE_VOLUME_NAME привилегии учетной записи Windows, работающей под управлением SQL Server, чтобы включить мгновенное инициализацию файлов данных. Это может привести к значительному повышению производительности.
    2920151 рекомендуемые исправления и обновления для отказоустойчивых кластеров на основе Windows Server 2012 R2

    накопительный пакет обновления windows 8 и Windows Server 2012 2822241: апрель 2013 г.
    Текущие накопительные пакеты системы могут включать исправления известных проблем на уровне системы, которые могут снизить производительность таких программ, как SQL Server. Установка этих обновлений может помочь предотвратить такие проблемы.
    2878182 ИСПРАВЛЕНИЕ. Процессы пользовательского режима в приложении не отвечают на серверы под управлением Windows Server 2012

    Операции резервного копирования являются интенсивными и могут повлиять на эту ошибку. Примените это исправление, чтобы предотвратить эти проблемы.
    Настройка антивирусного программного обеспечения для работы с SQL Server Антивирусное программное обеспечение может содержать блокировки в .bak файлах. Это может повлиять на производительность операций резервного копирования и восстановления. Следуйте инструкциям из этой статьи, чтобы исключить файлы резервного копирования из проверок вирусов.
    2820470 сообщение об ошибке с задержкой при попытке получить доступ к общей папке, которая больше не существует в Windows Обсуждает проблему, возникающую при попытке доступа к общей папке, которая больше не существует в Windows 2012 и более поздних версиях.
    967351 Сильно фрагментированные файлы в томе NTFS не могут превышать определенный размер. Обсуждает проблему, возникающую при фрагменте файловой системы NTFS.
    304101 программа резервного копирования завершается неудачно при резервном копировании большого системного тома
    2455009 ИСПРАВЛЕНИЕ. Низкая производительность при восстановлении базы данных при наличии большого количества VLF в журнале транзакций в SQL Server 2005 в SQL Server 2008 или SQL Server 2008 R2 Наличие многих файлов виртуального журнала может повлиять на необходимое время для восстановления базы данных. Это особенно верно во время этапа восстановления операции восстановления. Сведения о других возможных проблемах, которые могут быть вызваны наличием многих VLFs, см. в статье "Операции базы данных" занимает много времени, или они вызывают ошибки, когда журнал транзакций содержит множество виртуальных файлов журнала.
    Операция резервного копирования или восстановления в сетевом расположении медленна Изолируйте проблему в сети, пытаясь скопировать файл аналогичного размера в сетевое расположение с сервера, на котором выполняется SQL Server. Проверьте производительность.
  2. Проверьте наличие сообщений об ошибках в журнале ошибок SQL Server и журнале событий Windows для получения дополнительных указателей на причину проблемы.

  3. Если вы используете стороннее программное обеспечение или планы обслуживания базы данных для одновременного резервного копирования, рассмотрите, следует ли изменить расписание, чтобы свести к минимуму состязания на диске, на котором записываются резервные копии.

  4. Обратитесь к администратору Windows, чтобы проверить наличие обновлений встроенного ПО для оборудования.

Проблемы, влияющие на восстановление базы данных между различными версиями SQL Server

Резервная копия SQL Server не может быть восстановлена до более ранней версии SQL Server, чем версия, в которой была создана резервная копия. Например, вы не можете восстановить резервную копию, которая выполняется в экземпляре SQL Server 2019 в экземпляре SQL Server 2017. В противном случае появится следующее сообщение об ошибке:

Ошибка 3169: база данных была создана на сервере под управлением %ls. Эта версия несовместима с данным сервером, на котором работает версия %ls. Необходимо восстановить базу данных на сервере, который поддерживает эту резервную копию, либо использовать резервную копию, совместимую с данным сервером.

Используйте следующий метод, чтобы скопировать базу данных, размещенную в более поздней версии SQL Server, в более раннюю версию SQL Server.

Примечание.

В следующей процедуре предполагается, что у вас есть два экземпляра SQL Server с именем SQL_A (более поздняя версия) и SQL_B (более раннюю версию).

  1. Скачайте и установите последнюю версию SQL Server Management Studio (SSMS) на SQL_A и SQL_B.
  2. В SQL_A выполните следующие действия.
    1. Щелкните правой кнопкой мыши <задачи>YourDatabase>Tasks Generate Scripts и выберите параметр для скрипта всей базы данных и всех объектов базы данных.
    2. На экране "Параметры задания скриптов" выберите "Дополнительно" и выберите версию SQL_B в разделе "Общий>скрипт" для версии SQL Server. Кроме того, выберите вариант, который лучше всего подходит для сохранения созданных скриптов. Затем перейдите к мастеру.
    3. Используйте программу массового копирования (bcp) для копирования данных из разных таблиц.
  3. В SQL_B выполните следующие действия.
    1. Используйте скрипты, созданные на сервере SQL_A, чтобы создать схему базы данных.
    2. В каждой из таблиц отключите все ограничения и триггеры внешнего ключа. Если в таблице есть столбцы удостоверений, включите вставку удостоверений.
    3. Используйте bcp для импорта данных, экспортированных на предыдущем шаге, в соответствующие таблицы.
    4. После завершения импорта данных включите ограничения и триггеры внешнего ключа и отключите вставку удостоверения для каждой из таблиц, затронутых на шаге c.

Эта процедура обычно хорошо подходит для баз данных малого и среднего размера. Для больших баз данных проблемы с нехваткой памяти могут возникать в SSMS и других средствах. Следует рассмотреть возможность использования СЛУЖБ SQL Server Integration Services (SSIS), репликации или других параметров для создания копии базы данных из более поздней версии в более раннюю версию SQL Server.

Дополнительные сведения о создании скриптов для базы данных см. в разделе Создание скрипта базы данных с помощью команды "Создать скрипты".

Проблемы заданий резервного копирования в средах группы доступности AlwaysOn

Если возникают проблемы, влияющие на задания резервного копирования или планы обслуживания в средах AlwaysOn, обратите внимание на следующее:

  • По умолчанию для параметра автоматического резервного копирования задано значение "Предпочитать вторичную". Это указывает, что резервные копии должны выполняться на вторичной реплике, за исключением случаев, когда первичная реплика является единственной репликой в сети. Вы не можете создавать разностные резервные копии базы данных с помощью этого параметра. Чтобы изменить этот параметр, используйте SSMS в текущей первичной реплике и перейдите на страницу "Параметры резервного копирования" в разделе "Свойства группы доступности".
  • Если вы используете план обслуживания или запланированные задания для создания резервных копий баз данных, обязательно создайте задания для каждой базы данных доступности на каждом экземпляре сервера, на котором размещена реплика доступности для группы доступности.

Дополнительные сведения о резервных копиях в среде AlwaysOn см. в следующих разделах:

Если вы получаете сообщения об ошибках, указывающие на проблему с файлом, это симптоматично поврежденного файла резервной копии. Ниже приведены некоторые примеры ошибок, которые можно получить, если резервный набор поврежден:

  • 3241: семейство носителей на устройстве "%ls" неправильно сформировано. SQL Server не может обработать это семейство носителей.

  • 3242. Файл на устройстве "%ls" не является допустимым набором резервного копирования формата ленты Майкрософт.

  • 3243. Семейство носителей на устройстве "%ls" было создано при помощи Microsoft Tape Format версии %d.%d. SQL Server поддерживает версию %d.%d.

Примечание.

Инструкцию "Восстановить заголовок " можно использовать для проверки резервных копий.

Эти проблемы могут возникать из-за проблем, влияющих на базовое оборудование (жесткие диски, сетевое хранилище и т. д.) или связанные с вирусом или вредоносными программами. Просмотрите журналы событий системы Windows и журналы оборудования для обнаруженных ошибок и выполните соответствующие действия (например, обновление встроенного ПО или устранение проблем с сетью).

Чтобы предотвратить эти ошибки, включите параметр BACKUP CHECKSUM при запуске резервной копии, чтобы избежать резервного копирования поврежденной базы данных. Дополнительные сведения см. в разделе "Возможные ошибки мультимедиа во время резервного копирования и восстановления" (SQL Server).

Вы также можете включить флаг трассировки 3023, чтобы включить контрольную сумму при выполнении резервных копий с помощью средств резервного копирования. Дополнительные сведения см. в разделе "Включение параметра CHECKSUM", если служебные программы резервного копирования не предоставляют этот параметр.

Чтобы устранить эти проблемы, необходимо либо найти другой доступный файл резервного копирования, либо создать новый резервный набор. Корпорация Майкрософт не предлагает никаких решений, которые могут помочь получить данные из поврежденного резервного набора данных.

Примечание.

Если файл резервной копии успешно восстанавливается на одном сервере, но не на другом, попробуйте скопировать файл между серверами. Например, попробуйте выполнить команду robocopy вместо обычной операции копирования.

Сбой резервных копий из-за проблем с разрешениями

При попытке выполнить операции резервного копирования базы данных возникает одна из следующих ошибок.

  • Сценарий 1. При запуске резервного копирования из SQL Server Management Studio резервная копия завершается ошибкой и возвращает следующее сообщение об ошибке:

    Сбой резервного копирования для имени> сервера.< (Microsoft.SqlServer.SmoExtended)
    System.Data.SqlClient.SqlError: не удается открыть устройство резервного копирования "<имя> устройства". Ошибка операционной системы 5(Доступ запрещен.). (Microsoft.SqlServer.Smo)

  • Сценарий 2. Сбой запланированных резервных копий и создание сообщения об ошибке, вошедшего в журнал заданий неудачного задания, и похожее на следующее:

    Executed as user: <Owner of the job>. ....2 for 64-bit  Copyright (C) 2019 Microsoft. All rights reserved.    
    Started:  5:49:14 PM  Progress: 2021-08-16 17:49:15.47    
    Source: {GUID}      Executing query "DECLARE @Guid UNIQUEIDENTIFIER      EXECUTE msdb..sp...".: 100% complete  End Progress  
    Error: 2021-08-16 17:49:15.74     
    Code: 0xC002F210     
    Source: Back Up Database (Full) Execute SQL Task     
    Description: Executing the query "EXECUTE master.dbo.xp_create_subdir N'C:\backups\D..." failed with the following error: "xp_create_subdir() returned error 5, 'Access is denied.'". 
    Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.
    

Любой из этих сценариев может произойти, если у учетной записи службы SQL Server нет разрешений на чтение и запись в папку, в которую записываются резервные копии. Инструкции резервного копирования можно запускать как часть шага задания, так и вручную из SQL Server Management Studio. В любом случае они всегда выполняются в контексте учетной записи запуска службы SQL Server. Таким образом, если у учетной записи службы нет необходимых привилегий, вы получите сообщения об ошибках, которые были отмечены ранее.

См. дополнительные сведения об устройствах резервного копирования.

Примечание.

Вы можете проверить текущие разрешения учетной записи службы SQL в папке, перейдя на вкладку "Безопасность " в свойствах соответствующей папки, нажав кнопку "Дополнительно ", а затем с помощью вкладки "Действующий доступ ".

Операции резервного копирования или восстановления, использующие сторонние приложения резервного копирования, завершаются сбоем

SQL Server предоставляет средство интерфейса виртуального резервного копирования (VDI). Этот API позволяет независимым поставщикам программного обеспечения интегрировать SQL Server в свои продукты, чтобы обеспечить поддержку операций резервного копирования и восстановления. Эти API предназначены для обеспечения максимальной надежности и производительности, а также для поддержки полного диапазона функций резервного копирования и восстановления SQL Server. Это включает полный спектр возможностей моментального снимка и горячего резервного копирования.

Общие инструкции по устранению неполадок

Дополнительные ресурсы

Как это работает: сколько баз данных можно создавать одновременно?

Прочие проблемы

Симптом или сценарий Исправление действий или дополнительных сведений
Резервные копии могут завершиться ошибкой, если отслеживание изменений включено в базах данных и возвращает ошибки, похожие на следующие:

"Ошибка: 3999, серьезность: 17, состояние: 1.

<Метка> времени spid spid <> Не удалось очистить таблицу фиксации на диск в dbid 8 из-за ошибки 2601. Дополнительные сведения см. в журнале ошибок".


См. следующие статьи базы знаний Майкрософт:
Проблемы с восстановлением резервных копий зашифрованных баз данных Перемещение базы данных, защищаемой прозрачным шифрованием, в другой экземпляр SQL Server
Попытка восстановить резервную копию CRM из выпуска Enterprise завершается сбоем в выпуске Standard 2567984 ошибка "База данных не может быть запущена в этом выпуске SQL Server" при восстановлении базы данных Microsoft Dynamics CRM

Часто задаваемые вопросы о операциях резервного копирования и восстановления SQL Server

Как проверить состояние операции резервного копирования?

Используйте скрипт estimate_backup_restore для получения оценки времени резервного копирования.

Что делать, если SQL Server выполняет отработку отказа в середине резервного копирования?

Перезапустите операцию восстановления или резервного копирования на перезапуск прерванной операции восстановления (Transact-SQL).

Можно ли восстановить резервные копии базы данных из более старых версий программ на более новых версиях и наоборот?

Резервное копирование SQL Server не может быть восстановлено с помощью версии SQL Server, которая позже, чем версия, создающая резервную копию. Дополнительные сведения см. в разделе "Поддержка совместимости".

Разделы справки проверить резервные копии базы данных SQL Server?

См. процедуры, описанные в инструкциях RESTORE — VERIFYONLY (Transact-SQL).

Как получить журнал резервных копий баз данных в SQL Server?

Узнайте , как получить журнал резервных копий баз данных в SQL Server.

Можно ли восстановить 32-разрядные резервные копии на 64-разрядных серверах и наоборот?

Да. Формат хранилища SQL Server на диске совпадает с 64-разрядными и 32-разрядными средами. Поэтому операции резервного копирования и восстановления работают в 64-разрядных и 32-разрядных средах.

Общие советы по устранению неполадок

  • Обязательно подготовьте разрешения на чтение и запись в учетной записи службы SQL Server в папке, в которой записываются резервные копии. Дополнительные сведения см. в разделе Разрешения для резервного копирования.
  • Убедитесь, что папка, в которую записываются резервные копии, достаточно места для размещения резервных копий базы данных. Для получения грубой оценки размера резервного копирования для определенной базы данных можно использовать sp_spaceused хранимую процедуру.
  • Всегда используйте последнюю версию SSMS, чтобы убедиться, что вы не столкнулись с известными проблемами, связанными с настройкой заданий и планов обслуживания.
  • Выполните тестовое выполнение заданий, чтобы убедиться, что резервные копии созданы успешно. Обязательно добавляйте логику для проверки резервных копий.
  • Если вы планируете переместить системные базы данных с одного сервера на другой, просмотрите сведения о перемещении системных баз данных.
  • Если вы заметили периодические сбои резервного копирования, проверьте, возникла ли проблема, которая уже исправлена в последнем обновлении для версии SQL Server. Дополнительные сведения см. в статье Версии и обновления SQL Server.
  • Сведения о том, как запланировать и автоматизировать резервное копирование для выпусков SQL Express, см. в статье Планирование и автоматизация резервного копирования баз данных SQL Server в SQL Server Express.

Справочные разделы для операций резервного копирования и восстановления SQL Server

  • Дополнительные сведения об операциях резервного копирования и восстановления см. в следующих разделах в электронной документации.

    "Резервное копирование и восстановление баз данных SQL Server": в этом разделе рассматриваются основные понятия операций резервного копирования и восстановления баз данных SQL Server, ссылки на дополнительные разделы и подробные процедуры выполнения различных задач резервного копирования или восстановления (например, проверка резервных копий и резервное копирование с помощью T-SQL или SSMS). Это родительский раздел об этой теме в документации по SQL Server.

  • В следующей таблице перечислены дополнительные разделы, которые могут потребоваться просмотреть для конкретных задач, связанных с операциями резервного копирования и восстановления.

    Справочные материалы Description
    BACKUP (Transact-SQL) Предоставляет ответы на основные вопросы, связанные с резервными копиями. Содержит примеры различных видов операций резервного копирования и восстановления.
    Устройства резервного копирования (SQL Server) Предоставляет отличную ссылку для понимания различных устройств резервного копирования, резервного копирования в сетевую папку, хранилища BLOB-объектов Azure и связанных задач.
    Модели восстановления (SQL Server) Подробно описывает различные модели восстановления: простые, полные и массовые журналы. Предоставляет сведения о том, как модель восстановления влияет на резервные копии.
    Резервное копирование и восстановление: системные базы данных (SQL Server) Охватывает стратегии и обсуждает, что необходимо учитывать при работе с операциями резервного копирования и восстановления системных баз данных.
    Обзор процессов восстановления (SQL Server) Описывает, как модели восстановления влияют на операции восстановления. Если у вас есть вопросы о том, как модель восстановления базы данных может повлиять на процесс восстановления.
    Управление метаданными при создании базы данных на другом сервере Различные рекомендации, которые следует учитывать при перемещении базы данных или возникновении проблем, влияющих на имена входа, шифрование, репликацию, разрешения и т. д.
    Работа с резервными копиями журналов транзакций Содержит основные понятия о том, как выполнять резервное копирование и восстановление журналов транзакций (применять) в полной и массовой модели восстановления. Описывается, как выполнять обычные резервные копии журналов транзакций (резервные копии журналов) для восстановления данных.
    Управляемое резервное копирование SQL Server в Microsoft Azure Содержит сведения об управляемом резервном копировании и связанных процедурах.