Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: SQL Server Управляемый экземпляр SQL Azure
Эта статья содержит рекомендации и советы по устранению неполадок для резервного копирования и восстановления SQL Server на Azure Blob Storage.
Дополнительные сведения об использовании Хранилища BLOB-объектов Azure для операций резервного копирования или восстановления SQL Server см. в следующих разделах.
Управление резервными копиями
В следующем списке перечислены общие рекомендации по управлению резервным копированием.
Рекомендуется присваивать каждому резервному файлу уникальное имя, чтобы предотвратить случайное перезаписывание BLOB-объектов.
При создании контейнера необходимо задать уровень частного доступа, чтобы только пользователи или учетные записи, которые могут предоставить необходимые данные для аутентификации, могли читать или записывать объекты BLOB в контейнере.
Для баз данных SQL Server на экземпляре SQL Server, работающем на виртуальной машине Azure, используйте учетную запись хранения в том же регионе, что и виртуальная машина, чтобы избежать затрат на передачу данных между регионами. Использование одного региона также обеспечивает оптимальную производительность операций резервного копирования и восстановления.
Сбой во время резервного копирования может привести к созданию неработоспособного файла резервной копии. Рекомендуем периодически идентифицировать неудачные резервные копии и удалять файлы BLOB. Дополнительные сведения см. в статье о удалении резервных BLOB-файлов с активными захватами.
Использование параметра
WITH COMPRESSION
во время резервного копирования может уменьшить стоимость хранения и транзакционные издержки хранения. Также может сократиться время, необходимое для выполнения резервного копирования.Задайте аргументы
MAXTRANSFERSIZE
иBLOCKSIZE
, как рекомендуется в разделе Резервное копирование в SQL Server по URL-адресу.SQL Server не зависит от используемого типа избыточности хранилища. Резервное копирование на страничные и блочные объекты (BLOB) поддерживается для каждой степени избыточности хранилища (LRS/ZRS/GRS/RA-GRS/RA-GZRS и т. д.).
Обработка больших файлов
Операция резервного копирования SQL Server использует несколько потоков, чтобы оптимизировать передачу данных в Хранилище BLOB-объектов Azure. Однако производительность зависит от различных факторов, в том числе от пропускной способности ISV и размера базы данных. Если вы планируете создать резервную копию больших баз данных или файловых групп из локальной базы данных SQL Server, сначала необходимо выполнить некоторое тестирование пропускной способности. В соглашении об уровне обслуживания для службы хранилища Azure определены максимальные значения времени обработки для больших двоичных объектов, которыми можно руководствоваться.
WITH COMPRESSION
Использование параметра, как рекомендуется в разделе "Управление резервными копиями", важно при резервном копировании больших файлов.
Устранение неполадок резервного копирования или восстановления из URL-адреса
Ниже приведено несколько быстрых способов устранения неполадок при резервном копировании или восстановлении в Хранилище BLOB-объектов Azure.
Чтобы избежать ошибок из-за неподдерживаемых параметров или ограничений, просмотрите список ограничений и поддержку команд BACKUP
и RESTORE
в статье Резервное копирование и восстановление SQL Server в Microsoft Azure Blob Storage.
Ошибка инициализации
Параллельное резервное копирование в один blob приводит к сбою одной из резервных копий с ошибкой Ошибка инициализации.
В SQL Server 2016 (13.x) и более поздних версиях блочный BLOB-объект предпочтителен для резервного копирования по URL-адресу.
При использовании страничных BLOB-объектов
BACKUP TO URL
можно использовать флаг трассировки 3051 для включения записи в определенный журнал ошибок со следующим форматом:BackupToUrl-\<instname>-\<dbname>-action-\<PID>.log
, где\<action>
один из следующих вариантов:DB
FILELISTONLY
LABELONLY
HEADERONLY
VERIFYONLY
Вы также можете найти сведения, просмотрив Просмотр событий Windows в журналах приложений с именемSQLBackupToUrl
.
Не удалось выполнить запрос из-за ошибки устройства ввода-вывода.
При резервном копировании больших баз данных следует учитывать COMPRESSION
, MAXTRANSFERSIZE
, BLOCKSIZE
, а также несколько аргументов URL-адресов. См. статью Резервное копирование сверхбольших баз данных (VLDB) в хранилище BLOB-объектов Azure.
Ошибка:
Msg 3202, Level 16, State 1, Line 1
Write on "https://mystorage.blob.core.windows.net/mycontainer/TestDbBackupSetNumber2_0.bak" failed:
1117(The request could not be performed because of an I/O device error.)
Msg 3013, Level 16, State 1, Line 1
BACKUP DATABASE is terminating abnormally.
Пример резолюции
BACKUP DATABASE TestDb
TO URL = 'https://mystorage.blob.core.windows.net/mycontainer/TestDbBackupSetNumber2_0.bak',
URL = 'https://mystorage.blob.core.windows.net/mycontainer/TestDbBackupSetNumber2_1.bak',
URL = 'https://mystorage.blob.core.windows.net/mycontainer/TestDbBackupSetNumber2_2.bak'
WITH COMPRESSION, MAXTRANSFERSIZE = 4194304, BLOCKSIZE = 65536;
Метка файла сообщений на устройстве не выровнена
При восстановлении из сжатой резервной копии может появиться следующее сообщение об ошибке:
SqlException 3284 occurred. Severity: 16 State: 5
Message Filemark on device 'https://mystorage.blob.core.windows.net/mycontainer/TestDbBackupSetNumber2_0.bak' is not aligned.
Reissue the Restore statement with the same block size used to create the backupset: '65536' looks like a possible value.
Чтобы устранить эту ошибку, повторно выполните инструкцию RESTORE
с указанным параметром BLOCKSIZE = 65536
.
Сбой резервного копирования может привести к объектам с активными арендами.
Ошибка во время резервного копирования из-за блобов с активной арендой: Failed backup activity can result in blobs with active leases.
Если оператор резервного копирования повторно выполнен, операция резервного копирования может завершиться с ошибкой, аналогичной следующему выводу:
Backup to URL received an exception from the remote endpoint. Exception Message:
The remote server returned an error: (412) There is currently a lease on the blob and no lease ID was specified in the request.
Если инструкция восстановления выполнялись в резервном файле большого двоичного объекта с активной арендой, операция резервного копирования может завершиться со следующей ошибкой:
Exception Message: The remote server returned an error: (409) Conflict..
Если возникает такая ошибка, файлы больших двоичных объектов следует удалить. Дополнительные сведения об этом сценарии и устранении этой проблемы см. в статье Удаление файлов BLOB-объектов резервного копирования с использованием активных аренд.
Ошибка ОС 50. Запрос не поддерживается
При резервном копировании базы данных может появиться ошибка Operating system error 50(The request is not supported)
по следующим причинам:
- Указанная учетная запись хранения не является учетной записью хранения общего назначения версии 1 или 2.
- Маркер SAS содержал символ
?
в начале токена в момент создания учетных данных. Если это так, удалите это. - Текущее подключение не позволяет подключиться к учетной записи хранения с текущего компьютера с помощью Обозревателя службы хранилища или SSMS.
- Политика, назначенная токену SAS, истекла. С помощью Обозревателя службы хранилища Azure создайте новую политику и либо создайте новый маркер SAS с этой политикой, либо измените учетные данные и повторите попытку резервного копирования.
- Корневой сертификат отсутствует в Доверенном корневом хранилище сертификатов. Дополнительные сведения см. в разделе "Корневые центры сертификации Azure".
Ошибки проверки подлинности
WITH CREDENTIAL
— это новый параметр, необходимый при резервном копировании или восстановлении в Хранилище BLOB-объектов Azure.
Ошибка, связанная с учетными данными, может быть следующей: The credential specified in the **BACKUP** or **RESTORE** command does not exist.
Чтобы избежать этой проблемы, можно включить инструкции T-SQL для создания учетных данных, если они не существуют в инструкции резервного копирования. Ниже приводится пример, который можно использовать.
IF NOT EXISTS (
SELECT *
FROM sys.credentials
WHERE credential_identity = 'mycredential'
)
CREATE CREDENTIAL [<credential name>]
WITH IDENTITY = 'mystorageaccount',
SECRET = '<storage access key>';
Учетные данные существуют, но имя входа, используемое для выполнения команды резервного копирования, не имеет разрешений на доступ к учетным данным. Используйте учетную запись в роли db_backupoperator с разрешениями Изменить любые учетные данные.
Проверьте имя учетной записи хранилища и значение ключа. Сведения, хранящиеся в учетных данных, должны соответствовать значениям свойств учетной записи хранения Azure, которую вы используете в операциях резервного копирования и восстановления.
Ошибки 400 (недопустимый запрос)
При использовании SQL Server 2012 (11.x) может возникнуть ошибка при выполнении резервной копии, аналогичной следующим выходным данным:
Backup to URL received an exception from the remote endpoint. Exception Message:
The remote server returned an error: (400) Bad Request.
Это вызвано версией TLS, поддерживаемой учетной записью хранения Azure. Изменение поддерживаемой версии TLS или использование обходного пути, указанного в статье базы знаний 4017023.
Ошибки прокси-сервера
При использовании прокси-серверов для доступа к Интернету могут возникнуть следующие проблемы:
Регулирование соединений прокси-серверами
Прокси-серверы могут иметь параметры, ограничивающие количество подключений в минуту. Процесс резервного копирования на URL-адрес является многопоточным, в связи с чем заданное ограничение может быть превышено. В этом случае прокси-сервер разрывает соединение. Чтобы устранить эту проблему, измените параметры прокси-сервера, чтобы SQL Server не использовал прокси-сервер. Ниже приведены некоторые примеры типов или сообщений об ошибках, которые могут отображаться в журнале ошибок:
Write on "https://storageaccount.blob.core.windows.net/container/BackupAzurefile.bak" failed: Backup to URL received an exception from the remote endpoint. Exception Message: Unable to read data from the transport connection: The connection was closed.
A nonrecoverable I/O error occurred on file "https://storageaccount.blob.core.windows.net/container/BackupAzurefile.bak:" Error could not be gathered from Remote Endpoint.
Msg 3013, Level 16, State 1, Line 2
BACKUP DATABASE is terminating abnormally.
BackupIoRequest::ReportIoError: write failure on backup device https://storageaccount.blob.core.windows.net/container/BackupAzurefile.bak'. Operating system error Backup to URL received an exception from the remote endpoint. Exception Message: Unable to read data from the transport connection: The connection was closed.
Если вы используете страничные BLOB-объекты, и включите подробное ведение журнала с помощью флага трассировки 3051, в журналах может появиться следующее сообщение: HTTP status code 502, HTTP Status Message Proxy Error (The number of HTTP requests per minute exceeded the configured limit. Contact your ISA Server administrator.)
Параметры прокси-сервера по умолчанию не были выбраны
Иногда параметры по умолчанию не применяются, что приводит к ошибкам аутентификации прокси-сервера, таким как:
A nonrecoverable I/O error occurred on file "https://storageaccount.blob.core.windows.net/container/BackupAzurefile.bak:" Backup to URL received an exception from the remote endpoint. Exception Message: The remote server returned an error: (407)* **Proxy Authentication Required.
Чтобы устранить эту проблему, создайте файл конфигурации, позволяющий процессу резервного копирования по URL-адресу использовать параметры прокси-сервера по умолчанию. Для этого выполните следующие действия.
Создайте файл конфигурации
BackuptoURL.exe.config
со следующим XML-кодом:<?xml version ="1.0"?> <configuration> <system.net> <defaultProxy enabled="true" useDefaultCredentials="true"> <proxy usesystemdefault="true" /> </defaultProxy> </system.net> </configuration>
Поместите файл конфигурации в папку
Binn
экземпляра SQL Server. Например, если SQL Server установлен наC
диске компьютера, поместите файл конфигурации вC:\Program Files\Microsoft SQL Server\MSSQL13.\<InstanceName>\MSSQL\Binn
.BackuptoURL.exe
не вызывается при использовании ключей SAS, но активируется при использовании ключа доступа. Убедитесь, что вы используете ключи доступа или можете получить следующую ошибку:Ошибка операционной системы 50 ("Запрос не поддерживается")
Распространенные ошибки и способы их устранения
Проблема | Решение |
---|---|
Ошибка 3063. Сбой записи на устройство https://storageaccount/container/name.bak резервного блочного BLOB-объекта. На устройстве достигнуто предельное число допустимых блоков. |
Чтобы исправить эту проблему, разбейте целевой объект резервного копирования на несколько файлов и убедитесь, что используете следующие параметры в команде резервного копирования: COMPRESSION, MAXTRANSFERSIZE = 4194304, BLOCKSIZE = 65536 . |
Ошибка 3035. Сбой создания разностной резервной копии для одной или нескольких баз данных. | Это происходит, если вы настроили службу резервного копирования Azure для создания резервных копий баз данных SQL или снимков виртуальных машин, что не создает резервную копию в режиме только копирования, и в результате сбой происходит в плане обслуживания или запуске задачи агента SQL по требованию. Чтобы устранить эту проблему, добавьте эти разделы реестра в ВМ, которые хостят экземпляры SQL Server, по адресу раздела [HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\BCDRAGENT] , и добавьте "USEVSSCOPYBACKUP"="TRUE" . |
Ошибка 3201: сбой резервного копирования — ошибка операционной системы 50 (запрос не поддерживается). | Повторно создайте маркер подписанного URL-адреса (SAS) с помощью обозревателя службы хранилища Azure. Вы можете создать новую политику с помощью обозревателя службы хранилища Azure и создать новый маркер SAS с этой политикой в обозревателе службы хранилища Azure. Повторно создайте учетные данные с помощью нового маркера SAS, созданного в Службе хранилища Azure, и повторите попытку резервного копирования. Дополнительные сведения см. в разделе известные проблемы с BACKUP TO URL. Убедитесь, что ваша группа безопасности сети (NSG) и/или брандмауэр разрешает входящие и исходящие соединения через порты 1433 и 443. |
Ошибка 3271: резервное копирование не удалось из-за ошибки TLS - резервное копирование через URL завершилось исключением от удаленной конечной точки. | Это может произойти в SQL Server версии 2012, 2014 и 2016. Резервирование данных в службе хранилища BLOB-объектов Microsoft Azure по URL-адресу несовместимо с TLS 1.2 и может быть решено, следуя инструкциям в KB4017023. |
Ошибка 3271. При резервном копировании по URL-адресу получено исключение от удаленной конечной точки. Сообщение об исключении: не удалось разрешить имя удаленного сервера. | Это сообщение отображается, если для настройки резервного копирования использовался неправильный ключ учетных данных, секрета или SAS. Удалите учетные данные и создайте их повторно. Для SQL Server 2012/2014 используйте удостоверение учетной записи хранения и ключ доступа, а для SQL Server 2016 и более поздних версий используйте SAS. |
Ошибка 18210. Исключение. Удаленный сервер вернул ошибку: (400) Неправильный запрос. | Чтобы устранить проблему, измените минимальную версию TLS для учетной записи хранения на 1.0 (Учетная запись хранения>Конфигурация>Минимальная версия TLS), или включите усиленную криптографию, как описано в KB4017023. |
Сообщение об исключении: Удаленный сервер возвратил ошибку: (412) в настоящее время существует аренда для BLOB, и в запросе не указан идентификатор аренды. | Определите объекты BLOB в обозревателе хранилища Azure размером в 1 ТБ, прекратите аренду, удалите объект BLOB и повторите операцию резервного копирования. |
Ошибка. Удаленный сервер вернул ошибку 403 Forbidden (Запрещено). | Воссоздайте учетную запись хранения, учетные данные и маркер SAS, чтобы устранить проблему. |
Резервное копирование базы данных 1 ТБ завершается ошибкой в SQL Server 2012/2014. | Резервное копирование размером 1 ТБ — это известное ограничение для страничных BLOB-объектов до SQL Server 2016 (13.x). Используйте сжатие резервных копий, добавив предложение WITH COMPRESSION в инструкцию резервного копирования T-SQL или обновив экземпляр SQL Server до SQL Server 2016 (13.x) и более поздних версий. |
Ошибка. При резервном копировании по URL-адресу получено исключение от удаленной конечной точки. Сообщение об исключении. Удаленный сервер вернул ошибку "(416) Указанный диапазон страниц недопустим". | Это может возникнуть, если вы находитесь в SQL Server 2012 (11.x) и SQL Server 2014 (12.x), а размер резервного копирования увеличивается до 1 ТБ. Разделите файлы резервных копий и/или используйте сжатие резервных копий для решения проблемы. |
Сбой резервного копирования при использовании плана обслуживания. | В плане обслуживания есть несколько ошибок. Попробуйте использовать T-SQL для выполнения резервной копии. Если T-SQL работает, можно создать задание агента SQL для запуска для резервного копирования баз данных. |
Сбой резервного копирования из-за достижения ограничений виртуальной машины. | Если вы получаете ошибки, связанные с ограничением операций ввода-вывода в секунду на диск или виртуальную машину, резервные копии могут замедлить или завершиться сбоем. Чтобы отслеживать ограничения на IOPS/виртуальные машины, используйте Метрики Azure Monitor и при необходимости измените размер виртуальной машины или диска, чтобы устранить проблему. |
Удаленный сервер вернул ошибку: (409) Конфликт для SQL Server 2012/2014" | Учетные записи хранения с иерархическим пространством имен оснащены для блочных BLOB-объектов, а не страничных BLOB-объектов. Учетные записи хранения без этой функции не следует использовать для операции BACKUP TO URL в SQL Server 2014 (12.x). |