Поделиться через


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

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

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

Приостановленная базы данных

Результат выполнения команды приостановки

База данных-получатель

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

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

Важное примечаниеВажно!

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

База данных-источник

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

ПримечаниеПримечание

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

  • Перед началом работы.

    Ограничения

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

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

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

  • Для приостановки базы данных используется:  

  • Среда SQL Server Management Studio

    Transact-SQL

    PowerShell

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

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

Перед началом работы

Ограничения

Команда 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 database_name SET HADR SUSPEND

Значок стрелки, используемый со ссылкой «В начало»[В начало]

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

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

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

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

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

    Suspend-SqlAvailabilityDatabase ` 
    -Path SQLSERVER:\Sql\Computer\Instance\AvailabilityGroups\MyAg\Databases\MyDb3
    
    ПримечаниеПримечание

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

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

Значок стрелки, используемый со ссылкой «В начало»[В начало]

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

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

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

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

Значок стрелки, используемый со ссылкой «В начало»[В начало]

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

См. также

Основные понятия

Обзор групп доступности AlwaysOn (SQL Server)

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