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

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server нетБаза данных SQL AzureнетХранилище данных SQL AzureнетParallel Data WarehouseAPPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

В Группы доступности AlwaysOnAlways On availability groups можно приостановить базу данных доступности с помощью SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQLили PowerShell в SQL Server 2017SQL Server 2017.You can suspend an availability database in Группы доступности AlwaysOnAlways On availability groups by using SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQL, or PowerShell in SQL Server 2017SQL Server 2017. Обратите внимание, что команда приостановки должна выполняться на экземпляре сервера, содержащем базу данных, которая приостанавливается или возобновляется.Note that a suspend command needs to be issued on the server instance that hosts the database to be suspended or resumed.

Результат выполнения команды приостановки зависит от того, над какой базой данных выполняется команда: над базой данных-получателем или источником.The effect of a suspend command depends on whether you suspend a secondary database or a primary database, as follows:

Приостановленная базы данныхSuspended Database Результат выполнения команды приостановкиEffect of Suspend Command
База данных-получательSecondary database Приостанавливается только локальная база данных-получатель, ее состояние синхронизации будет иметь значение NOT SYNCHRONIZING.Only the local secondary database is suspended and its synchronization state becomes NOT SYNCHRONIZING. Другие базы данных-получатели не затрагиваются.Other secondary databases are not affected. Приостановленная базы данных перестает получать и записывать данные (записи журнала), ее состояние не совпадает с базой данных-источником.The suspended database stops receiving and applying data (log records) and begins to fall behind the primary database. Существующие соединения в предназначенной для чтения вторичной реплике остаются применимыми.Existing connections on the readable secondary remain usable. Новые соединения с приостановленной базой данных в предназначенной только для чтения вторичной реплике не допускаются, пока движение данных не будет возобновлено.New connections to the suspended database on the readable secondary are not allowed until data movement is resumed.

База данных-источник остается доступной.The primary database remains available. Если приостановить каждую из баз данных-получателей, база данных-источник будет работать в режиме без резервирования.If you suspend each of the corresponding secondary databases, the primary database runs exposed.

** Важно. ** Пока база данных-получатель остается приостановленной, в очереди отправки соответствующей основной базы данных накапливаются неотправленные записи журнала транзакций.** Important ** While a secondary database is suspended, the send queue of the corresponding primary database will accumulate unsent transaction log records. Соединения с вторичной репликой возвращают данные, которые были доступными ко времени приостановки движения данных.Connections to the secondary replica return data that was available at the time the data movement was suspended.
База данных-источникPrimary database База данных-источник останавливает перемещение данных в каждую подключенную базу данных-получатель.The primary database stops data movement to every connected secondary database. База данных-источник продолжает работу в режиме без резервирования.The primary database continues running, in an exposed mode. База данных-источник остается доступной для клиентов, действуют существующие соединения к предназначенной для чтения базе данных-получателю и можно устанавливать новые соединения.The primary database remains available to clients, and existing connections on a readable secondary remain usable and new connections can be made.

Примечание

Приостановка вторичной базы данных AlwaysOn непосредственно не влияет на доступность базы данных-источника.Suspending an Always On secondary database does not directly affect the availability of the primary database. Но приостановка базы данных-получателя может повлиять на функции избыточности и отработки отказа базы данных-источника.However, suspending a secondary database can impact redundancy and failover capabilities for the primary database. В этом состоит отличие от зеркального отображения базы данных, где состояние зеркального отображения приостанавливается как в зеркальной базе данных, так и в основной базе данных.This is in contrast to database mirroring, where the mirroring state is suspended on both the mirror database and the principal database. Приостановка базы данных-источника AlwaysOn приостанавливает перемещение данных для всех соответствующих баз данных-получателей, а функции избыточности и отработки отказа для этой базы данных не работают до тех пор, пока работа базы данных-источника не будет возобновлена.Suspending an Always On primary database suspends data movement on all the corresponding secondary databases, and redundancy and failover capabilities cease for that database until the primary database is resumed.

Перед началомBefore You Begin

ОграниченияLimitations and Restrictions

Команда SUSPEND возвращается сразу после принятия репликой, в которой размещена целевая база данных, но фактическая приостановка базы данных происходит асинхронно.A SUSPEND command returns as soon as it has been accepted by the replica that hosts the target database, but actually suspending the database occurs asynchronously.

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

Необходимо иметь соединение с экземпляром сервера, на котором размещена приостанавливаемая база данных.You must be connected to the server instance that hosts the database that you want to suspend. Чтобы приостановить базу данных-источник и соответствующие базы данных-получатели, подключитесь к экземпляру сервера, на котором размещена первичная реплика.To suspend a primary database and the corresponding secondary databases, connect to the server instance that hosts the primary replica. Чтобы приостановить базу данных-получатель, оставляя при этом доступной базу данных-источник, подключитесь к вторичной реплике.To suspend a secondary database while leaving the primary database available, connect to the secondary replica.

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

При возникновении узких мест краткая приостановка одной или нескольких баз данных-получателей может временно повысить производительность на первичной реплике.During bottlenecks, suspending one or more secondary databases briefly might be useful to improve performance temporarily on the primary replica. Пока база данных-получатель находится в состоянии приостановки, журнал транзакций соответствующей базы данных-источника не может быть усечен.As long as a secondary database remains suspended, the transaction log of the corresponding primary database cannot be truncated. Это приводит к накоплению записей журнала в базе данных-источнике.This causes log records to accumulate on the primary database. Поэтому рекомендуется быстро возобновить или удалить приостановленную базу данных-получатель.Therefore, we recommend that you resume, or remove, a suspended secondary database quickly. Дополнительные сведения см. в разделе Дальнейшие действия. Как избежать переполнения журнала транзакций далее в этом разделе.For more information, see Follow up: Avoiding a Full Transaction Log, later in this topic.

безопасностьSecurity

PermissionsPermissions

Необходимо разрешение ALTER на базу данных.Requires ALTER permission on the database.

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

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

Приостановка базы данныхTo suspend a database

  1. В обозревателе объектов подключитесь к экземпляру сервера, на котором размещена реплика доступности, в которой нужно приостановить базу данных, и разверните дерево сервера.In Object Explorer, connect to the server instance that hosts the availability replica on which you want to suspend a database, and expand the server tree. Дополнительные сведения см. в подразделе Предварительные условияранее в этом разделе.For more information, see Prerequisites, earlier in this topic.

  2. Разверните узел Высокий уровень доступности AlwaysOn и узел Группы доступности .Expand the Always On High Availability node and the Availability Groups node.

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

  4. Разверните узел Базы данных доступности , щелкните правой кнопкой мыши базу данных и выберите пункт Приостановить перемещение данных.Expand the Availability Databases node, right-click the database, and click Suspend Data Movement.

  5. В диалоговом окне Приостановка перемещения данных нажмите кнопку ОК.In the Suspend Data Movement dialog box, click OK.

    В обозревателе объектов отображается, что база данных приостановлена путем изменения значка базы данных на знак паузы.Object Explorer indicates that the database is suspended by changing the database icon to display a pause indicator.

Примечание

Чтобы приостановить дополнительные базы данных в расположении данной реплики, повторите шаги 4 и 5 для каждой базы данных.To suspend additional databases on this replica location, repeat steps 4 and 5 for each database.

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

Приостановка базы данныхTo suspend a database

  1. Подключитесь к экземпляру сервера, на котором размещена реплика, базу данных которой нужно приостановить.Connect to the server instance that hosts the replica whose database you want to suspend. Дополнительные сведения см. в подразделе Предварительные условияранее в этом разделе.For more information, see Prerequisites, earlier in this topic.

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

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

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

Приостановка базы данныхTo suspend a database

  1. Перейдите в каталог (cd) экземпляра сервера, на котором размещена реплика, базу данных которой нужно приостановить.Change directory (cd) to the server instance that hosts the replica whose database you want to suspend. Дополнительные сведения см. в подразделе Предварительные условияранее в этом разделе.For more information, see Prerequisites, earlier in this topic.

  2. Для приостановки группы доступности воспользуйтесь командлетом Suspend-SqlAvailabilityDatabase .Use the Suspend-SqlAvailabilityDatabase cmdlet to suspend the availability group.

    Например, следующая команда приостанавливает синхронизацию данных для базы данных доступности MyDb3 в группе доступности MyAg на экземпляре сервера под именем Computer\Instance.For example, the following command suspends data synchronization for the availability database MyDb3 in the availability group MyAg on the server instance named Computer\Instance.

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

    Примечание

    Чтобы просмотреть синтаксис командлета, воспользуйтесь командлетом Get-Help в среде PowerShell SQL ServerSQL Server .To view the syntax of a cmdlet, use the Get-Help cmdlet in the SQL ServerSQL Server PowerShell environment. Дополнительные сведения см. в разделе Get Help SQL Server PowerShell.For more information, see Get Help SQL Server PowerShell.

Настройка и использование поставщика SQL Server PowerShellTo set up and use the SQL Server PowerShell provider

Дальнейшие действия. Как избежать переполнения журнала транзакцийFollow Up: Avoiding a Full Transaction Log

Обычно при обработке в базе данных автоматической контрольной точки журнал транзакций этой базы данных усекается до этой контрольной точки после следующего резервного копирования журнала.Normally, when an automatic checkpoint is performed on a database, its transaction log is truncated to that checkpoint after the next log backup. Однако, пока база данных-получатель приостановлена, все текущие записи журнала остаются активными в базе данных-источнике.However, while a secondary database is suspended, all of the current log records remain active on the primary database. Если журнал транзакций заполняется до конца (достигается максимальный размер, или на экземпляре сервера не хватает пространства), база данных не позволяет обновить данные.If the transaction log fills up (either because it reaches its maximum size or the server instance runs out of space), the database cannot perform any more updates.

Во избежание этой проблемы следует предпринять одно из приведенных ниже действий.To avoid this problem, you should do one of the following:

Устранение неполадок при переполнении журнала транзакцийTo troubleshoot a full transaction log

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

См. также:See Also

Обзор групп доступности AlwaysOn (SQL Server) Overview of Always On Availability Groups (SQL Server)
Возобновление базы данных доступности (SQL Server)Resume an Availability Database (SQL Server)