Автоматическая приостановка и автоматическое возобновление в бессерверном уровне вычислений для База данных SQL Azure

Применимо к: База данных SQL Azure

В этой статье рассматриваются особенности автопаузы и автоматического возобновления для бессерверного уровня вычислений в База данных SQL Azure, а также то, как они взаимодействуют с различными функциями База данных SQL Azure.

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

Для мониторинга состояния базы данных без сервера см. Мониторинг паузы и возобновления статуса.

Автоматическая приостановка

Автопауза начинается, если во время задержки автопаузы выполняются все следующие условия:

  • Число сеансов — 0
  • Ресурсы ЦП — 0 (для пользовательской рабочей нагрузки, выполняемой в пуле ресурсов пользователя).

По умолчанию есть часовая автопауза.

Функции, предотвращающие автопаузу

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

Следующие сценарии функций также предотвращают автопаузу:

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

Автоматическое возобновление

Автовозобновление запускается, если в любой момент выполняется любое из следующих условий:

Функция Триггер автоматического возобновления
Проверка подлинности и авторизация Попытка входа
Обнаружение угроз Включение или отключение настроек обнаружения угроз на уровне базы данных или сервера.
Изменение параметров обнаружения угроз на уровне базы данных или сервера.
Обнаружение и классификация данных Добавление, изменение, удаление или просмотр меток конфиденциальности.
Аудит Просмотр записей аудита.
Обновление или просмотр политик аудита.
Маскирование данных Добавление, изменение, удаление или просмотр правил маскирования данных.
Прозрачное шифрование данных Просмотр состояния или статуса прозрачного шифрования данных
Оценка уязвимостей Сканирование, инициированное вручную, и периодические сканирования при включении
Запросы к хранилищу данных (производительность) Изменение или просмотр параметров хранилище запросов
Рекомендации по производительности Просмотр или применение рекомендаций по производительности
Автоматическая настройка Применение и проверка рекомендаций по автотюнингу, таких как автоиндексация
Копирование базы данных Создать базу данных как копию.
Экспорт в BACPAC-файл.
Синхронизация данных SQL Синхронизация между центральной и рядовыми базами данных, которая запускается по настраиваемому расписанию или вручную.
Изменение некоторых метаданных базы данных Добавление или изменение тегов Azure в базе данных.
Изменение максимального количества виртуальных ядер, минимального количества виртуальных ядер или задержки автоматической приостановки.
SQL Server Management Studio (SSMS) В версиях SSMS, выше 18.1 и при открытии нового окна запроса для любой базы данных на сервере, любая автоматически приостановленная база данных на том же сервере возобновляется. Такое поведение не возникает, если вы используете SSMS версии 18.1 или выше.

Мониторинг, управление или другие решения, выполняющие любую из этих операций, запускают автоматическое возобновление. Автоматическое возобновление также начинается во время развертывания некоторых сервисных обновлений, требующих онлайн-базы данных.

Идентификация триггера автоматического возобновления

Журнал активности Azure Monitor отображает триггеры автоматического возобновления для операций Resume Databases в свойстве Caller в JSON-коде событий Started и Succeeded. Дополнительные сведения см. в разделе Мониторинг бессерверного уровня вычислений.

Latency

Задержка обычно составляет около одной минуты для автовозобновления и 1–10 минут до автопаузы. Задержка для любой операции может быть не ниже порядка одной секунды.

Прозрачное шифрование данных, управляемое клиентом

Удаление ключей или отзыв

Если вы используете прозрачное шифрование данных под управлением клиентом (принесите свой ключ или BYOK), и бессерверная база данных автоматически приостанавливается при удалении или отзыве ключа, база данных остаётся в состоянии автопаузы. В этом случае после возобновления работы базы данных она становится недоступной в течение примерно 10 минут. Как только база данных становится недоступной, процедуру восстановления можно выполнить так же, как для подготовленных вычислительных баз данных. Если бессерверная база данных находится онлайн во время удаления или отзыва ключа, она также становится недоступной примерно в течение 10 минут, так же, как и с подготовленными вычислительными базами данных.

Ротация ключей

Если вы используете прозрачное шифрование данных с управлением клиентом (BYOK) и включите безсерверную автопаузу, база данных автоматически возобновляется при каждом повороте ключей. База данных затем делает автопаузу при выполнении условий автопаузы.

Автоматическая приостановка устранения неполадок

Устранение неполадок при автовозобновлении подключения

Если бессерверная база данных приостановлена, первая попытка подключения возобновляет базу данных и возвращает ошибку, указывающую, что база данных недоступна с кодом ошибки 40613. Когда база данных возобновится, попробуйте повторить подключение. Базы данных обычно возобновляются менее чем за одну минуту.

Все облачные приложения должны использовать рекомендации по логике повторных попыток соединения. Приложениям требуется логика повторных попыток, чтобы успешно восстанавливаться после временных ошибок подключения. Логика повторных попыток особенно важна для бессерверных баз данных, где временные ошибки соединения из-за автоматического возобновления работы предсказуемы.

Параметры и рекомендации по логике повторных попыток подключения см. в следующей статье:

Устранение неполадок при автопаузе

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

Чтобы узнать, подключены ли какие-либо приложения или пользовательские сессии к базе данных, выполните следующий запрос:

SELECT session_id,
       host_name,
       program_name,
       client_interface_name,
       login_name,
       status,
       login_time,
       last_request_start_time,
       last_request_end_time
FROM sys.dm_exec_sessions AS s
INNER JOIN sys.dm_resource_governor_workload_groups AS wg
ON s.group_id = wg.group_id
WHERE s.session_id <> @@SPID
      AND
      (
          (
          wg.name like 'UserPrimaryGroup.DB%'
          AND
          TRY_CAST(RIGHT(wg.name, LEN(wg.name) - LEN('UserPrimaryGroup.DB') - 2) AS int) = DB_ID()
          )
      OR
      wg.name = 'DACGroup'
      );

Tip

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

  • Если набор результатов не пуст, это означает, что сессии в данный момент не допускают автопаузу.
  • Если набор результатов пуст, всё ещё возможно, что сессии были открыты, возможно, на короткое время, в какой-то момент раньше в период автопаузы. Чтобы проверить активность в период задержки, используйте Auditing for База данных SQL Azure и Azure Synapse Analytics и изучите данные аудита за соответствующий период.

Important

Наличие открытых сеансов как при одновременном использовании ЦП в пуле ресурсов пользователя, так и без такового является самой распространенной причиной, по которой автоматическая приостановка бессерверной базы данных не выполняется надлежащим образом.