Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:SQL Server
Управляемый экземпляр SQL Azure
В этой статье содержатся лучшие практики и советы по устранению неполадок бэкапа и восстановления данных SQL Server в Хранилище BLOB-объектов Azure.
Дополнительные сведения об использовании Хранилище BLOB-объектов Azure для операций резервного копирования или восстановления SQL Server см. в следующей статье:
- резервное копирование и восстановление SQL Server с помощью Хранилище BLOB-объектов Azure
- Краткое руководство: Резервное копирование и восстановление SQL в Хранилище BLOB-объектов Azure
Управление резервными копиями
В следующем списке перечислены общие рекомендации по управлению резервным копированием.
Используйте уникальное имя файла для каждой резервной копии, чтобы предотвратить случайное перезапись больших двоичных объектов.
При создании контейнера задайте уровень доступа private, чтобы только пользователи или учетные записи, которые могут предоставить необходимые данные для аутентификации, могли читать или записывать BLOB-объекты в контейнере.
Для SQL Server баз данных на экземпляре SQL Server, работающем на виртуальной машине Azure, используйте учетную запись хранения в том же регионе, что и виртуальная машина, чтобы избежать затрат на передачу данных между регионами. Использование одного региона также обеспечивает оптимальную производительность операций резервного копирования и восстановления.
Сбой во время резервного копирования может привести к созданию неработоспособного файла резервной копии. Периодически выявлять сбойные резервные копии и удалять BLOB-файлы. Дополнительные сведения см. в статье Удаление BLOB-файлов резервных копий с активными арендными блокировками.
WITH COMPRESSIONИспользуйте параметр для минимизации затрат на хранение и транзакций хранилища, а также для уменьшения времени резервного копирования.Установите аргументы
MAXTRANSFERSIZEиBLOCKSIZEв значения, описанные в резервном копировании SQL Server на URL-адрес в хранилище BLOB-объектов Azure.Вы можете выполнять резервное копирование в блочные BLOB-объекты с любым типом избыточности хранилища (например, LRS, ZRS, GRS, RA-GRS и RA-GZRS).
Обработка больших файлов
Операция резервного копирования SQL Server использует несколько потоков для оптимизации передачи данных в Хранилище BLOB-объектов Azure. Однако производительность зависит от таких факторов, как пропускная способность isV и размер базы данных. Если вы планируете создать резервную копию больших баз данных или файловых групп из локальной базы данных SQL Server, сначала проверьте пропускную способность. Соглашение об уровне обслуживания Azure для хранилища предусматривает максимальные сроки обработки BLOB-объектов, которые следует учитывать.
WITH COMPRESSION Используйте этот параметр в разделе "Управление резервными копиями" при резервном копировании больших файлов.
Устранение неполадок резервного копирования или восстановления из URL-адреса
Используйте следующие советы для устранения ошибок при резервном копировании или восстановлении из Хранилище BLOB-объектов Azure.
Чтобы избежать ошибок из-за неподдерживаемых параметров или ограничений, ознакомьтесь с ограничениями и поддерживаемыми параметрами для команд BACKUP и RESTORE в разделе Резервное копирование и восстановление SQL Server с помощью Хранилище BLOB-объектов Azure.
Ошибка инициализации
Параллельное резервное копирование в один blob приводит к сбою одной из резервных копий с ошибкой Ошибка инициализации.
Не удалось выполнить запрос из-за ошибки устройства ввода-вывода
При резервном копировании больших баз данных следует учитывать 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.
Re-issue the Restore statement with the same blocksize 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.
Если вы попытаетесь выполнить инструкцию RESTORE для BLOB-файла резервной копии, на который установлена активная аренда, операция восстановления завершится с ошибкой, подобной следующей:
Exception Message: The remote server returned an error: (409) Conflict.
При возникновении этой ошибки удалите BLOB-файлы. Дополнительные сведения об этом сценарии и способах устранения этой проблемы см. в статье «Удаление резервных BLOB-файлов с активными арендными блокировками».
Ошибка ОС 50. Запрос не поддерживается
При резервном копировании базы данных может появиться ошибка Operating system error 50(The request is not supported.) по следующим причинам:
- Указанная учетная запись хранения не является учетной записью хранения общего назначения версии 1 или 2.
- Маркер SAS начинается с символа
?. В этом случае удалите символ. - Вы не можете подключиться к учетной записи хранения с текущего компьютера с помощью Обозреватель службы хранилища или SQL Server Management Studio (SSMS).
- Срок действия политики доступа, связанной с маркером SAS, истёк. Создайте новую политику с помощью Обозреватель службы хранилища Azure и создайте новый маркер SAS с помощью политики или измените учетные данные и повторите резервное копирование.
- Корневой сертификат отсутствует в Доверенном корневом хранилище сертификатов. Для получения дополнительной информации см. корневые центры сертификации Azure.
Ошибки проверки подлинности
Для резервного копирования или восстановления из Хранилище BLOB-объектов Azure требуются учетные данные, которые хранят сведения о проверке подлинности. SQL Server 2016 (13.x) и более поздние версии используют маркер SAS (shared access signature), а ядро СУБД SQL Server автоматически сопоставляет учетные данные с URL-адресом контейнера.
Сбои, связанные с учетными данными, могут привести к следующим сообщениям об ошибках:
| Номер ошибки | Message |
|---|---|
| 3288 | Credential name <mycredential> does not exist or user does not have permission to access it. |
| 3289 | A Backup device of type URL was specified without a Credential, Backup/Restore operation cannot proceed. |
Чтобы избежать этой проблемы, создайте учетные данные, если они не существуют. Рассмотрим пример.
IF NOT EXISTS (SELECT *
FROM sys.credentials
WHERE name = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>')
CREATE CREDENTIAL [https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>]
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = '<SAS_TOKEN>';
Учетные данные существуют, но учетная запись, под которой выполняется команда резервного копирования, не имеет прав на доступ к этим учетным данным. Используйте учетную запись в фиксированной роли базы данных db_backupoperator с разрешением Alter any credential.
Сведения, хранящиеся в учетных данных, должны соответствовать значениям свойств учетной записи хранения Azure, которую вы используете в операциях резервного копирования и восстановления.
Ошибки прокси-сервера
При использовании прокси-серверов для доступа к Интернету могут возникнуть следующие проблемы:
Регулирование соединений прокси-серверами
Прокси-серверы могут иметь параметры, ограничивающие количество подключений в минуту. Резервное копирование по 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.
Распространенные ошибки и способы их устранения
| Проблема | Решение |
|---|---|
Ошибка 3063: Write to backup block blob device https://storageaccount/container/name.bak failed. Device has reached its limit of allowed blocks. |
Чтобы устранить эту проблему для полного или разностного резервного копирования, разделите резервную копию на несколько файлов. Для всех типов резервных копий используйте следующие параметры в команде резервного копирования: COMPRESSION, MAXTRANSFERSIZE = 4194304, BLOCKSIZE = 65536 Эта ошибка также может возникать, если резервная копия достигает максимального поддерживаемого размера. Например, в SQL Server 2022 (16.x) и более ранних версиях максимальный размер резервного копирования составляет 12,8 ТБ, вычисляется как 64 полосы × 50 000 блоков × 4 МБMAXTRANSFERSIZE. |
| Ошибка 3035: разностное резервное копирование завершается ошибкой для одной или нескольких баз данных. | Эта ошибка возникает, если вы настроили Azure Backup для резервного копирования баз данных SQL или моментального снимка виртуальной машины, который не создает резервную копию только для копирования, что приводит к сбою планов обслуживания или заданий агента SQL по запросу. Чтобы устранить эту проблему, добавьте эти разделы реестра на виртуальных машинах, на которых размещены экземпляры SQL Server, в разделе реестра [HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\BCDRAGENT], и добавьте "USEVSSCOPYBACKUP"="TRUE". |
Ошибка 3201: Cannot open backup device '<url>'. Operating system error 50(The request is not supported.) |
Повторно создайте маркер SAS с помощью Обозреватель службы хранилища: в Обозреватель службы хранилища Azure создайте новую политику и новый маркер SAS из этой политики. Повторно создайте учетные данные с помощью нового маркера SAS и повторите попытку резервного копирования. Дополнительные сведения см. в разделе известных проблем с URL-адресом BACKUP TO. Убедитесь, что ваша группа безопасности сети (NSG) или брандмауэр разрешает входящий и исходящий подключения к портам 1433 и 443. |
Ошибка 3290: Backup to URL received an exception from the remote endpoint. Exception Message: The remote name could not be resolved. |
Это сообщение отображается, если для настройки резервного копирования использовался неправильный ключ учетных данных, секрета или SAS. Удалите учетные данные и создайте их заново. Для SQL Server 2016 (13.x) и более поздних версий используйте SAS. |
Ошибка 3290: Backup to URL received an exception from the remote endpoint. Exception Message: The remote server returned an error: (400) Bad Request. |
Чтобы устранить эту проблему, измените минимальную версию TLS для учетной записи хранилища на 1.0 (Учетная запись хранения>Конфигурация>Минимальная версия TLS). |
Сообщение об исключении: The remote server returned an error: (412) There is currently a lease on the blob and no lease ID was specified in the request. |
В Обозреватель службы хранилища Azure определите большие двоичные объекты размером 1 ТБ, разорвите аренду, удалите большой двоичный объект и повторите операцию резервного копирования. |
Ошибка: The remote server returned an error: (403) Forbidden. |
Воссоздайте учетную запись хранения, учетные данные и маркер SAS, чтобы устранить проблему. |
| Сбой резервного копирования при использовании плана обслуживания. | Планы обслуживания могут периодически завершаться сбоем. Запустите эквивалентную резервную копию непосредственно с помощью T-SQL. Если резервная копия T-SQL успешно выполнена, запланируйте ее как задание агент SQL Server вместо использования плана обслуживания. |
| Сбой резервного копирования из-за достижения ограничений виртуальной машины. | Если вы получаете сообщения о том, что достигнут лимит IOPS для диска или виртуальной машины, создание резервных копий может замедлиться или завершиться с ошибкой. Чтобы отслеживать ограничения на IOPS/виртуальные машины, используйте Метрики Azure Monitor и, в случае необходимости, измените размер виртуальной машины или диска, чтобы устранить проблему. |