Рекомендации по резервному копированию SQL Server по URL-адресу для Хранилища BLOB-объектов Microsoft Azure и устранение неполадок
Область применения: SQL Server Управляемый экземпляр SQL Azure
Эта статья содержит рекомендации и советы по устранению неполадок резервного копирования и восстановления SQL Server в Хранилище BLOB-объектов Azure.
Дополнительные сведения об использовании Хранилища BLOB-объектов Azure для операций резервного копирования или восстановления SQL Server см. в следующих разделах.
Резервное копирование и восстановление SQL Server с помощью Microsoft Хранилище BLOB-объектов Azure
Учебник. Резервное копирование и восстановление SQL Server в Хранилище BLOB-объектов Azure
Управление резервными копиями
В следующем списке перечислены общие рекомендации по управлению резервным копированием.
Рекомендуется присваивать каждому файлу уникальное имя, чтобы предотвратить случайное перезаписывание больших двоичных объектов.
При создании контейнера необходимо задать уровень доступа для частных, поэтому только пользователи или учетные записи, которые могут предоставить необходимые сведения проверки подлинности, могут считывать или записывать большие двоичные объекты в контейнере.
Для баз данных SQL Server на экземпляре SQL Server, работающем на виртуальной машине Azure, используйте учетную запись хранения в том же регионе, что и виртуальная машина, чтобы избежать затрат на передачу данных между регионами. Использование одного региона также обеспечивает оптимальную производительность операций резервного копирования и восстановления.
Сбой во время резервного копирования может привести к созданию неработоспособного файла резервной копии. Рекомендуется периодически проводить поиск неудачных резервных копий и удалять файлы больших двоичных объектов. Дополнительные сведения см. в статье об удалении файлов BLOB-объектов резервного копирования с активными арендами.
Использование параметра
WITH COMPRESSION
во время резервного копирования может уменьшить стоимость хранения и транзакционные издержки хранения. Также может сократиться время, необходимое для выполнения резервного копирования.Задайте аргументы
MAXTRANSFERSIZE
иBLOCKSIZE
, как рекомендуется в разделе Резервное копирование в SQL Server по URL-адресу.SQL Server не зависит от используемого типа избыточности хранилища. Резервное копирование до страничных BLOB-объектов и блочных 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 Backup and Restore с помощью Microsoft Хранилище BLOB-объектов Azure.
Ошибка инициализации
Параллельное выполнение резервного копирования в один большой двоичный объект вызывает сбой одной из резервных копий с ошибкой Ошибка инициализации .
В 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-адресов. Дополнительные сведения см. в статье Backing up a VLDB to Azure Blob Storage (Резервное копирование сверхбольших баз данных в хранилище 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 и создать новый маркер SAS с этой политикой из обозревателя служба хранилища Azure. Повторно создайте учетные данные с помощью нового маркера SAS, созданного в Службе хранилища Azure, и повторите попытку резервного копирования. Дополнительные сведения см. в разделе известных проблем с URL-адресом BACKUP TO. Убедитесь, что ваша группа безопасности сети (NSG) и/или брандмауэр разрешает входящие и исходящие соединения через порты 1433 и 443. |
Ошибка 3271: сбой резервного копирования из-за ошибки TLS. Резервное копирование по URL-адресу получено исключение из удаленной конечной точки. | Это может произойти в SQL Server версии 2012, 2014 и 2016. Резервное копирование в URL-адрес службы Microsoft Хранилище BLOB-объектов Azure несовместимо с TLS 1.2 и может быть исправлено, следуя инструкциям в KB4017023. |
Ошибка 3271. При резервном копировании по URL-адресу получено исключение от удаленной конечной точки. Сообщение об исключении: не удалось разрешить удаленное имя. | Это сообщение отображается, если для настройки резервного копирования использовался неправильный ключ учетных данных, секрета или SAS. Удалите учетные данные и создайте их повторно. Для SQL Server 2012/2014 используйте удостоверение учетной записи хранения и ключ доступа, а также для SQL Server 2016 и более поздних версий, используйте SAS. |
Ошибка 18210. Исключение. Удаленный сервер вернул ошибку: (400) Неправильный запрос. | Чтобы устранить проблему, измените минимальную версию TLS для учетной записи хранения до версии 1.0 (минимальная версия TLS учетной записи>>хранения) или включите надежную криптографию, как описано в KB4017023. |
Сообщение об исключении. Удаленный сервер возвратил ошибку: (412) в настоящее время существует аренда для большого двоичного объекта, однако для запроса не указан идентификатор аренды. | Определите большие двоичные объекты в обозревателе служба хранилища Azure размером 1 ТБ, разорвите аренду, удалите большой двоичный объект и повторите операцию резервного копирования. |
Ошибка. Удаленный сервер вернул ошибку 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 для запуска для резервного копирования баз данных. |
Сбой резервного копирования из-за достижения ограничений виртуальной машины. | Если вы получаете ошибки, связанные с ограничением операций ввода-вывода в секунду на диск или виртуальную машину, резервные копии могут замедлить или завершиться сбоем. Чтобы отслеживать ограничения операций ввода-вывода в секунду или виртуальной машины, используйте метрики Azure Monitor и при необходимости измените размер виртуальной машины и диска, чтобы устранить проблему. |
Удаленный сервер вернул ошибку: (409) Конфликт для SQL Server 2012/2014" | Учетные записи хранения с иерархическим пространством имен оснащены для блочных BLOB-объектов, а не страничных BLOB-объектов. Учетные записи хранения без этой функции не следует использовать для URL-адреса BACKUP TO в SQL Server 2014 (12.x). |