Приостановка базы данных доступности (SQL Server)

Применимо к:SQL Server

В Группы доступности AlwaysOn можно приостановить базу данных доступности с помощью SQL Server Management Studio, Transact-SQLили PowerShell в SQL Server. Обратите внимание, что команда приостановки должна выполняться на экземпляре сервера, содержащем базу данных, которая приостанавливается или возобновляется.

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

Приостановленная базы данных Результат выполнения команды приостановки
База данных-получатель Приостанавливается только локальная база данных-получатель, ее состояние синхронизации будет иметь значение NOT SYNCHRONIZING. Другие базы данных-получатели не затрагиваются. Приостановленная базы данных перестает получать и записывать данные (записи журнала), ее состояние не совпадает с базой данных-источником. Существующие соединения в предназначенной для чтения вторичной реплике остаются применимыми. Новые соединения с приостановленной базой данных в предназначенной только для чтения вторичной реплике не допускаются, пока движение данных не будет возобновлено. Это поведение применяется, только если подключения открыты с помощью прослушивателя и маршрутизации только для чтения.

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

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

Примечание

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

Перед началом

Ограничения

Команда SUSPEND возвращается сразу после принятия репликой, в которой размещена целевая база данных, но фактическая приостановка базы данных происходит асинхронно.

Предварительные условия

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

Рекомендации

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

Безопасность

Разрешения

Необходимо разрешение ALTER на базу данных.

Необходимо разрешение ALTER AVAILABILITY GROUP для группы доступности, разрешение CONTROL AVAILABILITY GROUP, разрешение ALTER ANY AVAILABILITY GROUP или разрешение CONTROL SERVER.

Использование среды SQL Server Management Studio

Приостановка базы данных

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

  2. Разверните узел Высокий уровень доступности AlwaysOn и узел Группы доступности .

  3. Разверните группу доступности.

  4. Разверните узел Базы данных доступности , щелкните правой кнопкой мыши базу данных и выберите пункт Приостановить перемещение данных.

  5. В диалоговом окне Приостановка перемещения данных нажмите кнопку ОК.

    В обозревателе объектов отображается, что база данных приостановлена путем изменения значка базы данных на знак паузы.

Примечание

Чтобы приостановить дополнительные базы данных в расположении данной реплики, повторите шаги 4 и 5 для каждой базы данных.

Использование Transact-SQL

Приостановка базы данных

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

  2. Приостановите базу данных с помощью следующей инструкции ALTER DATABASE:

    ALTER DATABASE имя_базы_данных SET HADR SUSPEND;

Использование PowerShell

Приостановка базы данных

  1. Перейдите в каталог (cd) экземпляра сервера, на котором размещена реплика, базу данных которой нужно приостановить. Дополнительные сведения см. в подразделе Предварительные условияранее в этом разделе.

  2. Для приостановки группы доступности воспользуйтесь командлетом Suspend-SqlAvailabilityDatabase .

    Например, следующая команда приостанавливает синхронизацию данных для базы данных доступности MyDb3 в группе доступности MyAg на экземпляре сервера под именем Computer\Instance.

    Suspend-SqlAvailabilityDatabase `   
    -Path SQLSERVER:\Sql\Computer\Instance\AvailabilityGroups\MyAg\AvailabilityDatabases\MyDb3  
    

    Примечание

    Чтобы просмотреть синтаксис командлета, воспользуйтесь командлетом Get-Help в среде PowerShell SQL Server . Дополнительные сведения см. в разделе Get Help SQL Server PowerShell.

Настройка и использование поставщика SQL Server PowerShell

Дальнейшие действия. Избежание переполнения журнала транзакций

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

Во избежание этой проблемы следует предпринять одно из приведенных ниже действий.

Устранение неполадок при переполнении журнала транзакций

Связанные задачи

См. также:

Обзор групп доступности AlwaysOn SQL Server)
Возобновление базы данных доступности (SQL Server)