Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:SQL Server
Примечание.
Эта функция будет удалена в будущей версии SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется. Вместо этого используйте группы доступности AlwaysOn.
Управляет зеркальным отображением базы данных. Значения, указанные с параметрами зеркального отображения базы данных, применяются к обеим копиям базы данных и к сеансу зеркального отображения базы данных в целом. На одну ALTER DATABASE выписку разрешено только одно <database_mirroring_option>.
Примечание.
Конфигурацию зеркального отображения базы данных рекомендуется выполнять в часы с наименьшей загрузкой, поскольку этот процесс может повлиять на производительность.
Для ALTER DATABASE вариантов см. ALTER DATABASE. Варианты ALTER DATABASE SET смотрите ALTER DATABASE SET в разделе «Опции».
Соглашения о синтаксисе Transact-SQL
Синтаксис
ALTER DATABASE database_name
SET { <partner_option> | <witness_option> }
<partner_option> ::=
PARTNER { = 'partner_server'
| FAILOVER
| FORCE_SERVICE_ALLOW_DATA_LOSS
| OFF
| RESUME
| SAFETY { FULL | OFF }
| SUSPEND
| TIMEOUT integer
}
<witness_option> ::=
WITNESS { = 'witness_server'
| OFF
}
Аргументы
Внимание
SET Команда PARTNER или SET WITNESS может успешно завершиться при введении, но позже не сработает.
Примечание.
ALTER DATABASE Варианты зеркалирования базы данных недоступны для содержащейся базы данных.
database_name — имя изменяемой базы данных.
PARTNER <partner_option> — управляет свойствами базы данных, которые определяют сущности и поведение партнеров по обеспечению отработки отказа при сбоях сеанса зеркального отображения базы данных. Некоторые SET опции PARTNER могут быть установлены на любом из партнёров; другие ограничены основным сервером или зеркальным сервером. Дополнительные сведения см. в следующем описании индивидуальных параметров PARTNER. Клауза SET PARTNER влияет на обе копии базы данных, независимо от партнёра, на котором она указана.
Чтобы выполнить инструкцию SET PARTNER, необходимо задать для состояния конечных точек обоих партнеров значение STARTED. Также обратите внимание, что ROLE конечная точка зеркалирования базы данных каждого экземпляра партнёрского сервера должна быть установлена как PARTNER, либо ALL. Сведения об указании конечной точки см. в статье Создание конечной точки зеркального отображения базы данных с проверкой подлинности Windows (Transact-SQL). Чтобы узнать роль и состояние базы данных конечной точки зеркального отображения экземпляра сервера, выполните на этом экземпляре следующую инструкцию Transact-SQL:
SELECT role_desc, state_desc FROM sys.database_mirroring_endpoints
<partner_option> ::=
Примечание.
Разрешено только одно <partner_option> согласно SET пункту PARTNER.
' partner_server ' Указывает сетевой адрес сервера экземпляра SQL Server, который будет выступать в качестве партнера по отработке отказа в новом сеансе зеркального отображения базы данных. Для каждого сеанса необходимы два участника: один запускается как основной сервер, второй — как зеркальный сервер. Рекомендуется, чтобы эти партнеры находились на разных компьютерах.
Этот параметр указывается один раз для сеанса на каждом участнике. Для запуска сессии зеркалирования базы данных требуется два ALTER DATABASE оператора PARTNER =SET'partner_server'. Их порядок важен. Сначала подключитесь к зеркальному серверу и укажите основной экземпляр сервера как partner_server (SETPARTNER ='principal_server'). Во-вторых, подключитесь к основному серверу и укажите экземпляр зеркального сервера как partner_server (SETPARTNER ='mirror_server'); это запускает сессию зеркалирования базы данных между этими двумя партнёрами. Дополнительные сведения см. в статье Настройка зеркального отображения базы данных (SQL Server).
Значением аргумента partner_server является сетевой адрес сервера. Оно имеет следующий синтаксис:
TCP**://<system-address>:**<port>
где
- <system-address>> — это строка, которая содержит имя системы, полное доменное имя или IP-адрес, однозначно идентифицирующие целевую компьютерную систему.
- <port> — это номер порта, связанный с конечной точкой зеркального отображения на экземпляре сервера партнера.
Дополнительные сведения см. в статье Указание сетевого адреса сервера (зеркальное отображение базы данных).
Следующий пример иллюстрирует SET клаузу PARTNER =''partner_server' :
'TCP://MYSERVER.mydomain.Adventure-Works.com:7777'
Внимание
Если сессия настраивается с помощью ALTER DATABASE оператора вместо SQL Server Management Studio, сессия по умолчанию устанавливается на полную безопасность транзакций (SAFETY установлена в FULL) и работает в режиме высокой безопасности без автоматического переключения. Чтобы разрешить автоматическую отработку отказа, настройте следящий сервер для работы в режиме высокой производительности и отключите безопасность транзакций (SAFETY OFF).
FAILOVER — обеспечивает ручное переключение с основного сервера на зеркальный при сбое. Параметр FAILOVER можно указать только на основном сервере. Этот параметр допустим только в том случае, если параметр SAFETY установлен в состояние FULL (значение по умолчанию).
Для параметра FAILOVER контекстом должна быть база данных master.
FORCE_SERVICE_ALLOW_DATA_LOSS — переключает обслуживание базы данных на зеркальный сервер при сбое синхронизации основного сервера с базой данных или в синхронизированном состоянии, когда автоматическая отработка отказа не происходит.
Рекомендуется включать вынужденное обслуживание только в том случае, если основной сервер больше не работает. Иначе некоторые клиенты могут продолжить обращаться к оригинальной основной базе данных вместо новой основной базы данных. Параметр FORCE_SERVICE_ALLOW_DATA_LOSS доступен только на зеркальном сервере и только при соблюдении всех следующих условий:
- основной сервер недоступен;
- параметр WITNESS установлен в состояние OFF или свидетель подключен к зеркальному серверу.
Переключайте обслуживание только в случае готовности рискнуть потерей некоторых данных для немедленного восстановления обслуживания базы данных.
При переключении обслуживания сеанс приостанавливается, сохраняя все данные в базе данных оригинального главного сервера. Как только оригинальная основная база данных начала обслуживаться и стала доступна для связи с новым основным сервером, администратор базы данных может возобновить обслуживание. При возобновлении сеанса любые неотправленные записи журнала и соответствующие обновления будут утеряны.
OFF — прекращает сеанс зеркального отображения базы данных и удаляются сведения об этом сеансе из базы данных. Значение OFF можно указать для любого из участников. Дополнительные сведения о последствиях удаления зеркального отображения базы данных см. в статье Удаление зеркального отображения базы данных (SQL Server).
RESUME — возобновляет приостановленный сеанс зеркального отображения базы данных. Параметр RESUME можно указать только на основном сервере.
SAFETY { FULL | OFF } — устанавливает уровень безопасности транзакций. Параметр SAFETY можно указать только на основном сервере.
Значение по умолчанию FULL. При полном уровне безопасности сеанс зеркального отображения базы данных выполняется синхронно (в режиме повышенной безопасности). Если параметр SAFETY находится в состоянии OFF, сеанс зеркального отображения базы данных выполняется асинхронно (в высокопроизводительном режиме).
Поведение режима высокой безопасности частично зависит от следящего сервера, как показано далее.
Если безопасность установлена в состояние FULL и для сеанса установлен следящий сервер, то сеанс выполняется в режиме повышенной безопасности с автоматической отработкой отказа. Когда основной сервер становится недоступным, сеанс автоматически переключается на другой ресурс при условии, что база данных находится в синхронном состоянии, а экземпляры зеркального и следящего серверов остаются подключенными друг к другу (имеют кворум). Дополнительные сведения см. в разделе кворум: как следящий сервер влияет на доступность базы данных — зеркальное отображение базы данных.
Если свидетель установлен для сеанса, но в настоящее время не подключен, потеря зеркального сервера вынудит основной сервер выключиться.
Если безопасность установлена в состояние FULL, а следящий сервер находится в состоянии OFF, сеанс выполняется в режиме повышенной безопасности без возможности автоматической отработки отказа. При отказе экземпляра зеркального сервера экземпляр основного сервера остается незатронутым. При отказе экземпляра основного сервера можно переключить обслуживание на экземпляр зеркального сервера (с возможной потерей данных).
Если параметр SAFETY установлен в состояние OFF, сеанс выполняется в высокопроизводительном режиме, в котором ни автоматическая отработка отказа, ни отработка отказа вручную не поддерживаются. Однако проблемы на зеркальном сервере не затрагивают основной сервер, и, если экземпляр основного сервера отключается, при необходимости можно переключить обслуживание (с возможной потерей данных) на экземпляр зеркального сервера, если параметр WITNESS установлен в состояние OFF или если следящий сервер в настоящее время подключен к зеркальному серверу. Дополнительные сведения о переключении обслуживания см. в подразделе «FORCE_SERVICE_ALLOW_DATA_LOSS», расположенном выше в этом разделе.
Внимание
Режим высокой производительности не предназначен для использования свидетеля. Однако всякий раз, когда параметру SAFETY присваивается значение OFF, настоятельно рекомендуется проверить, что параметр WITNESS находится в состоянии OFF.
SUSPEND приостанавливает сеанс зеркального отображения базы данных.
Значение SUSPEND можно указать на любом участнике.
TIMEOUT integer указывает интервал времени ожидания в секундах. Интервал времени ожидания — это максимальное время, в течение которого экземпляр сервера ожидает получения сообщения PING от другого экземпляра в сеансе зеркального отображения перед тем, как сделать вывод о том, что другой экземпляр отключен.
Параметр TIMEOUT можно указать только на основном сервере. Если этот параметр не определить, интервал времени по умолчанию — 10 секунд. При указании числа 5 или больше интервал времени ожидания будет установлен в указанное количество секунд. При указании значения интервала времени ожидания от 0 до 4 секунд интервал времени ожидания автоматически будет установлен в 5 секунд.
Внимание
Рекомендуется установить интервал времени ожидания в 10 секунд или более. При установке значения меньше 10 секунд возникает вероятность пропуска команды PING в сильно загруженной системе и вероятность ошибочного сообщения об ошибке.
Дополнительные сведения см. в статье Possible Failures During Database Mirroring.
WITNESS <witness_option> — управляет свойствами базы данных, которые определяют свидетеля зеркального отображения базы данных. Оговорка WITNESS влияет SET на обе копии базы данных, но вы можете указывать SET WITNESS только на основном сервере. Если для сеанса задан свидетель, кворум требуется для обслуживания базы данных независимо от параметра SAFETY; Дополнительные сведения см. в разделе кворум: как свидетель влияет на доступность базы данных — зеркальное отображение базы данных.
Рекомендуется, чтобы следящий сервер и партнеры по обеспечению отработки отказа находились на отдельных компьютерах. Сведения о следящем сервере см. в разделе Следящий сервер зеркального отображения базы данных.
Для выполнения SET заявления WITNESS СОСТОЯНИЕ конечных точек как основного, так и серверного сервера должно быть установлено в STARTED. Также обратите внимание, что ROLE конечная точка зеркалирования базы данных экземпляра сервера-свидетеля должна быть установлена как WITNESS или ALL. Сведения об определении конечной точки см. в статье Конечная точка зеркального отображения базы данных (SQL Server).
Чтобы узнать роль и состояние базы данных конечной точки зеркального отображения экземпляра сервера, выполните на этом экземпляре следующую инструкцию Transact-SQL:
SELECT role_desc, state_desc FROM sys.database_mirroring_endpoints
Примечание.
Свойства базы данных не могут быть установлены на свидетеле.
<witness_option> ::=
Примечание.
Разрешено только одно <witness_option> согласно SET пункту СВИДЕТЕЛЯ.
'witness_server ' Указывает экземпляр ядро СУБД, который будет выступать в качестве следящего сервера для сеанса зеркального отображения базы данных. Вы можете указывать SET показания СВИДЕТЕЛЕЙ только на основном сервере.
В SET утверждении WITNESS ='witness_server' синтаксис witness_server совпадает с синтаксисом partner_server.
OFF — удаляет свидетеля из сеанса зеркального отображения базы данных. При установке свидетеля в состояние OFF отключается автоматическая отработка отказа. Если база данных установлена в состояние FULL SAFETY, а свидетель установлен в состояние OFF, отказ зеркального сервера заставит основной сервер сделать базу данных недоступной.
Замечания
Примеры
А. Создание сеанса зеркального отображения базы данных со свидетелем
Настройка зеркалирования базы данных с помощью свидетеля требует настройки безопасности, подготовки зеркальной базы данных, а также ALTER DATABASE использования для настройки партнёров. Пример полного процесса установки см. в статье Настройка зеркального отображения базы данных (SQL Server).
B. Ручной переход на другой ресурс в сеансе зеркального отображения базы данных
Отработка отказа вручную может быть инициализирована любым участником зеркального отображения базы данных. Перед переходом на другой ресурс необходимо проверить, что сервер, который считается текущим основным сервером, действительно является основным сервером. Например, для базы данных AdventureWorks2025 на экземпляре сервера, который предположительно является основным сервером в настоящий момент, выполните следующий запрос:
SELECT db.name, m.mirroring_role_desc
FROM sys.database_mirroring m
JOIN sys.databases db
ON db.database_id = m.database_id
WHERE db.name = N'AdventureWorks2022';
GO
Если экземпляр сервера действительно является основным, значением mirroring_role_desc будет Principal. Если этот экземпляр сервера был зеркальным сервером, инструкция SELECT возвратит Mirror.
В следующем примере предполагается, что сервер является текущим основным сервером.
Ручной переход на другой ресурс участника зеркального отображения базы данных:
ALTER DATABASE AdventureWorks2022 SET PARTNER FAILOVER; GOЧтобы проверить результаты отработки отказа на новое зеркало, выполните следующий запрос:
SELECT db.name, m.mirroring_role_desc FROM sys.database_mirroring m JOIN sys.databases db ON db.database_id = m.database_id WHERE db.name = N'AdventureWorks2022'; GO
Текущее значение параметра mirroring_role_desc теперь Mirror.