Отслеживание групп доступности (Transact-SQL)Monitor Availability Groups (Transact-SQL)

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

Для мониторинга групп доступности и реплик доступности, а также связанных баз данных с помощью Transact-SQLTransact-SQLв Группы доступности AlwaysOnAlways On availability groups предусмотрен набор представлений каталога, динамических административных представлений и свойств сервера.For monitoring availability groups and replicas and the associated databases by using Transact-SQLTransact-SQL, Группы доступности AlwaysOnAlways On availability groups provides a set of catalog and dynamic management views and server properties. С помощью инструкций Transact-SQLTransact-SQL SELECT можно использовать представления для отслеживания групп доступности, их реплик и баз данных.Using Transact-SQLTransact-SQL SELECT statements, you can use the views to monitor availability groups and their replicas and databases. Сведения, возвращаемые по данной группе доступности, зависят от наличия подключения к экземпляру SQL ServerSQL Server , на котором размещена первичная или вторичная реплика.The information returned for a given availability group depends on whether you are connected to the instance of SQL ServerSQL Server that is hosting the primary replica or a secondary replica.

Совет

Многие из этих представлений можно объединять с помощью их столбцов ID, что позволяет возвращать сведения из нескольких представлений в одном запросе.Many of these views can be joined using their ID columns to return information from multiple views in a single query.

PermissionsPermissions

Группы доступности AlwaysOnAlways On availability groups требуется разрешение VIEW ANY DEFINITION на экземпляре сервера.catalog views require VIEW ANY DEFINITION permission on the server instance. Группы доступности AlwaysOnAlways On availability groups необходимо разрешение VIEW SERVER STATE на сервере.dynamic management views require VIEW SERVER STATE permission on the server.

Мониторинг функции групп доступности AlwaysOn в экземпляре сервераMonitoring the Always On Availability Groups Feature on a Server Instance

Для наблюдения за компонентом Группы доступности AlwaysOnAlways On availability groups на экземпляре сервера пользуйтесь следующей встроенной функцией.To monitor the Группы доступности AlwaysOnAlways On availability groups feature on a server instance, use the following built-in function:

ФункцияSERVERPROPERTYSERVERPROPERTY function
Возвращает сведения о свойствах сервера о том, включен ли Группы доступности AlwaysOnAlways On availability groups , а также (если включен) был ли он запущен на экземпляре сервера.Returns server property information about whether Группы доступности AlwaysOnAlways On availability groups is enabled and, if so, whether it has started on the server instance.

Имена столбцов: IsHadrEnabled, HadrManagerStatusColumn names: IsHadrEnabled, HadrManagerStatus

Мониторинг групп доступности на кластере WSFCMonitoring Availability Groups on the WSFC Cluster

Для мониторинга отказоустойчивой кластеризации Windows Server (WSFC), на котором размещается локальный экземпляр сервера с поддержкой Группы доступности AlwaysOnAlways On availability groups, используются следующие представления:To monitor the Windows Server Failover Clustering (WSFC) cluster that hosts a local server instance that is enabled for Группы доступности AlwaysOnAlways On availability groups, use the following views:

sys.dm_hadr_clustersys.dm_hadr_cluster
Если на узле отказоустойчивой кластеризации Windows Server (WSFC), где размещен экземпляр SQL Server с включенным Группы доступности AlwaysOnAlways On availability groups , имеется кворум WSFC, sys.dm_hadr_cluster возвращает строку, которая предоставляет имя кластера и сведения о форуме.If the Windows Server Failover Clustering (WSFC) node that hosts an instance of SQL Server with Группы доступности AlwaysOnAlways On availability groups enabled has WSFC quorum, sys.dm_hadr_cluster returns a row that exposes the cluster name and information about the quorum. Если узел WSFC не набирает кворум, строки не возвращаются.If the WSFC node has no quorum, no rows are returned.

Имена столбцов: cluster_name, quorum_type, quorum_type_desc, quorum_state, quorum_state_descColumn names: cluster_name, quorum_type, quorum_type_desc, quorum_state, quorum_state_desc

sys.dm_hadr_cluster_memberssys.dm_hadr_cluster_members
Если на узле WSFC, где размещается локальный экземпляр SQL Server с включенной поддержкой AlwaysOn, имеется кворум WSFC, он возвращает строку для каждого из участников, составляющих кворум, и состояние каждого из них.If the WSFC node that hosts the local Always On-enabled instance of SQL Server has WSFC quorum, returns a row for each of the members that constitute the quorum and the state of each of them.

Имена столбцов: member_name, member_type, member_type_desc, member_state, member_state_desc, number_of_quorum_votesColumn names: member_name, member_type, member_type_desc, member_state, member_state_desc, number_of_quorum_votes

sys.dm_hadr_cluster_networkssys.dm_hadr_cluster_networks
Возвращает по строке для каждого из элементов, участвующих в конфигурации подсети группы доступности.Returns a row for every member that is participating in an availability group's subnet configuration. Это динамическое административное представление можно использовать для проверки виртуального сетевого IP-адреса, настроенного для каждой из реплик доступности.You can use this dynamic management view to validate the network virtual IP that is configured for each availability replica.

Имена столбцов: member_name, network_subnet_ip, network_subnet_ipv4_mask, network_subnet_prefix_length, is_public, is_ipv4Column names: member_name, network_subnet_ip, network_subnet_ipv4_mask, network_subnet_prefix_length, is_public, is_ipv4

Первичный ключ: member_name + network_subnet_IP + network_subnet_prefix_lengthPrimary key: member_name + network_subnet_IP + network_subnet_prefix_length

sys.dm_hadr_instance_node_mapsys.dm_hadr_instance_node_map
Для каждого экземпляра SQL Server, где размещена реплика доступности, подключенная к группе доступности AlwaysOn, возвращается имя узла отказоустойчивой кластеризации Windows Server (WSFC), где размещен экземпляр сервера.For every instance of SQL Server that hosts an availability replica that is joined to its Always On availability group, returns the name of the Windows Server Failover Clustering (WSFC) node that hosts the server instance. Это динамическое административное представление может использоваться следующим образом.This dynamic management view has the following uses:

  • Динамическое административное представление может оказаться полезным для обнаружения группы доступности с несколькими репликами доступности, размещенными на одном узле WSFC, поскольку такая конфигурация, которая может возникнуть после отработки отказа FCI в том случае, если группа доступности сконфигурирована неверно, не поддерживается.This dynamic management view is useful for detecting an availability group with multiple availability replicas that are hosted on the same WSFC node, which is an unsupported configuration that could occur after an FCI failover if the availability group is incorrectly configured.

  • Когда несколько экземпляров SQL Server размещаются на одном узле WSFC, DLL-библиотека ресурсов через это динамическое административное представление определяет экземпляр SQL Server, к которому следует подключаться.When multiple SQL Server instances are hosted on the same WSFC node, the Resource DLL uses this dynamic management view to determine the instance of SQL Server to connect to.

Имена столбцов: ag_resource_id, instance_name, node_nameColumn names: ag_resource_id, instance_name, node_name

sys.dm_hadr_name_id_mapsys.dm_hadr_name_id_map
Показывает сопоставление групп доступности AlwaysOn, к которым подключен текущий экземпляр SQL Server, и трех уникальных идентификаторов: идентификатора группы доступности, идентификатора ресурсов WSCF и идентификатора группы WSFC.Shows the mapping of Always On availability groups that the current instance of SQL Server has joined to three unique IDs: an availability group ID, a WSFC resource ID, and a WSFC Group ID. Цель такого сопоставления состоит в обработке сценария, в ходе которого ресурс/группа WSFC переименовывается.The purpose of this mapping is to handle the scenario in which the WSFC resource/group is renamed.

Имена столбцов: ag_name, ag_id, ag_resource_id, ag_group_idColumn names: ag_name, ag_id, ag_resource_id, ag_group_id

Примечание

См. также описание команд sys.dm_hadr_availability_replica_cluster_nodes и sys.dm_hadr_availability_replica_cluster_states в разделе Мониторинг реплик доступности и описание команд sys.availability_databases_cluster и sys.dm_hadr_database_replica_cluster_states в разделе Мониторинг баз данных доступности далее в этой статье.Also see sys.dm_hadr_availability_replica_cluster_nodes and sys.dm_hadr_availability_replica_cluster_states in the Monitoring Availability Replicas section and sys.availability_databases_cluster and sys.dm_hadr_database_replica_cluster_states in the Monitoring Availability Databases section, later in this topic.

Сведения о кластерах WSFC и Группы доступности AlwaysOnAlways On availability groups см. в разделах Отказоустойчивая кластеризация Windows Server (WSFC) с SQL Server и Отказоустойчивая кластеризация и группы доступности AlwaysOn (SQL Server).For information about WSFC clusters and Группы доступности AlwaysOnAlways On availability groups, see Windows Server Failover Clustering (WSFC) with SQL Server and Failover Clustering and Always On Availability Groups (SQL Server).

Мониторинг групп доступностиMonitoring Availability Groups

Для мониторинга групп доступности, для которых на экземпляре сервера размещена реплика доступности, используются следующие представления.To monitor the availability groups for which the server instance hosts an availability replica, use the following views:

sys.availability_groupssys.availability_groups
Возвращает строку для каждой группы доступности, для которых в локальном экземпляре SQL ServerSQL Server размещена реплика доступности.Returns a row for each availability group for which the local instance of SQL ServerSQL Server hosts an availability replica. Каждая строка содержит кэшированную копию метаданных группы доступности.Each row contains a cached copy of the availability group metadata.

Имена столбцов: group_id, name, resource_id, resource_group_id, failure_condition_level, health_check_timeout, automated_backup_preference, automated_backup_preference_descColumn names: group_id, name, resource_id, resource_group_id, failure_condition_level, health_check_timeout, automated_backup_preference, automated_backup_preference_desc

sys.availability_groups_clustersys.availability_groups_cluster
Возвращает строку для каждой группы доступности в кластере WSFC.Returns a row for each availability group in the WSFC cluster. Каждая строка содержит метаданные группы доступности из отказоустойчивой кластеризации Windows Server (WSFC).Each row contains the availability group metadata from the Windows Server Failover Clustering (WSFC) cluster.

Имена столбцов: group_id, name, resource_id, resource_group_id, failure_condition_level, health_check_timeout, automated_backup_preference, automated_backup_preference_descColumn names: group_id, name, resource_id, resource_group_id, failure_condition_level, health_check_timeout, automated_backup_preference, automated_backup_preference_desc

sys.dm_hadr_availability_group_statessys.dm_hadr_availability_group_states
Возвращает по строке для каждой из групп доступности, у которых имеется реплика доступности на локальном экземпляре SQL ServerSQL Server.Returns a row for each availability group that possesses an availability replica on the local instance of SQL ServerSQL Server. Каждая строка отображает состояния работоспособности определенной группы доступности.Each row displays the states that define the health of a given availability group.

Имена столбцов: group_id, primary_replica, primary_recovery_health, primary_recovery_health_desc, secondary_recovery_health, secondary_recovery_health_desc, synchronization_health, synchronization_health_descColumn names: group_id, primary_replica, primary_recovery_health, primary_recovery_health_desc, secondary_recovery_health, secondary_recovery_health_desc, synchronization_health, synchronization_health_desc

Мониторинг реплик доступностиMonitoring Availability Replicas

Для мониторинга групп доступности используются следующие представления и системная функция.To monitor availability replicas, use the following views and system function:

sys.availability_replicassys.availability_replicas
Возвращает строку для каждой реплики доступности, для которой в локальном экземпляре SQL ServerSQL Server размещена реплика доступности.Returns a row for every availability replica in each availability group for which the local instance of SQL ServerSQL Server hosts an availability replica.

Имена столбцов: replica_id, group_id, replica_metadata_id, replica_server_name, owner_sid, endpoint_url, availability_mode, availability_mode_desc, failover_mode, failover_mode_desc, session_timeout, primary_role_allow_connections, primary_role_allow_connections_desc, secondary_role_allow_connections, secondary_role_allow_connections_desc, create_date, modify_date, backup_priority, read_only_routing_urlColumn names: replica_id, group_id, replica_metadata_id, replica_server_name, owner_sid, endpoint_url, availability_mode, availability_mode_desc, failover_mode, failover_mode_desc, session_timeout, primary_role_allow_connections, primary_role_allow_connections_desc, secondary_role_allow_connections, secondary_role_allow_connections_desc, create_date, modify_date, backup_priority, read_only_routing_url

sys.availability_read_only_routing_listssys.availability_read_only_routing_lists
Возвращает строку для списка маршрутизации только для чтения для каждой реплики доступности в группе доступности AlwaysOn в отказоустойчивом кластере WSFC.Returns a row for the read only routing list of each availability replica in an Always On availability group in the WSFC failover cluster.

Имена столбцов: replica_id, routing_priority, read_only_replica_idColumn names: replica_id, routing_priority, read_only_replica_id

sys.dm_hadr_availability_replica_cluster_nodessys.dm_hadr_availability_replica_cluster_nodes
Возвращает по строке для каждой из реплик доступности (независимо от состояния соединения) в группах доступности AlwaysOn в отказоустойчивой кластеризации Windows Server (WSFC).Returns a row for every availability replica (regardless of join state) of the Always On availability groups in the Windows Server Failover Clustering (WSFC) cluster.

Имена столбцов: group_name, replica_server_name, node_nameColumn names: group_name, replica_server_name, node_name

sys.dm_hadr_availability_replica_cluster_statessys.dm_hadr_availability_replica_cluster_states
Возвращает по строке для каждой из реплик (вне зависимости от состояния соединения) во всех группах доступности AlwaysOn (вне зависимости от расположения реплики) в отказоустойчивой кластеризации Windows Server (WSFC).Returns a row for each replica (regardless of join state) of all Always On availability groups (regardless of replica location) in the Windows Server Failover Clustering (WSFC) cluster.

Имена столбцов: replica_id, replica_server_name, group_id, join_state, join_state_descColumn names: replica_id, replica_server_name, group_id, join_state, join_state_desc

sys.dm_hadr_availability_replica_statessys.dm_hadr_availability_replica_states
Возвращает строку с состоянием каждой локальной реплики доступности и для каждой удаленной реплики доступности, входящей в ту же группу доступности.Returns a row showing the state of each local availability replica and a row for each remote availability replica in the same availability group.

Имена столбцов: replica_id, group_id, is_local, role, role_desc, operational_state, operational_state_desc, connected_state, connected_state_desc, recovery_health, recovery_health_desc, synchronization_health, synchronization_health_desc, last_connect_error_number, last_connect_error_description и last_connect_error_timestampColumn names: replica_id, group_id, is_local, role, role_desc, operational_state, operational_state_desc, connected_state, connected_state_desc, recovery_health, recovery_health_desc, synchronization_health, synchronization_health_desc, last_connect_error_number, last_connect_error_description, and last_connect_error_timestamp

sys.fn_hadr_backup_is_preferred_replicasys.fn_hadr_backup_is_preferred_replica
Определяет, является ли текущая реплика предпочитаемой резервной репликой отработки.Determines whether the current replica is the preferred backup replica.

Примечание

Сведения о счетчиках производительности для реплик доступности (объект производительности SQLServer:Availability Replica ) см. в разделе SQL Server, реплика доступности.For information about performance counters for availability replicas (the SQLServer:Availability Replica performance object), see SQL Server, Availability Replica.

Мониторинг баз данных доступностиMonitoring Availability Databases

Для мониторинга баз данных доступности используйте следующие представления.To monitor availability databases, use the following views:

sys.availability_databases_clustersys.availability_databases_cluster
Содержит одну строку для каждой базы данных в экземпляре SQL Server, которая является частью групп доступности AlwaysOn в кластере, независимо от того, присоединена ли база данных локальных копий к группе доступности или нет.Contains one row for each database on the instance of SQL Server that are part of all Always On Availability Groups in the cluster, regardless of whether the local copy database has been joined to the availability group yet.

Примечание

При добавлении базы данных в группу доступности база данных-источник автоматически присоединяется к группе.When a database is added to an availability group, the primary database is automatically joined to the group. Базы данных-получатели необходимо подготовить на каждой из вторичных реплик до того, как их можно будет присоединить к группе доступности.Secondary databases must be prepared on each secondary replica before they can be joined to the availability group.

Имена столбцов: group_id, group_database_id, database_nameColumn names: group_id, group_database_id, database_name

sys.databasessys.databases
Содержит одну строку для каждой базы данных в экземпляре SQL ServerSQL Server.Contains one row per database in the instance of SQL ServerSQL Server. Если база данных принадлежит к реплике доступности, то в строке для этой базы данных отображается идентификатор GUID реплики и уникальный идентификатор базы данных внутри группы доступности.If a database belongs to an availability replica, the row for that database displays the GUID of the replica and the unique identifier of the database within its availability group.

Группы доступности AlwaysOnAlways On availability groups : replica_id, group_database_idГруппы доступности AlwaysOnAlways On availability groups column names: replica_id, group_database_id

sys.dm_hadr_auto_page_repairsys.dm_hadr_auto_page_repair
Возвращает строку для каждой попытки автоматического восстановления страниц во всех базах данных доступности в реплике доступности, размещенной в группе доступности на экземпляре сервера.Returns a row for every automatic page-repair attempt on any availability database on an availability replica that is hosted for any availability group by the server instance. Это представление содержит строки, связанные с последними попытками автоматического восстановления страниц в определенной базе данных-источнике или получателе, количество которых ограничено числом в 100 строк на каждую базу данных.This view contains rows for the latest automatic page-repair attempts on a given primary or secondary database, with a maximum of 100 rows per database. По достижении максимального значения строка для следующей попытки автоматического восстановления страниц заменяет одну из существующих записей.As soon as a database reaches the maximum, the row for its next automatic page-repair attempt replaces one of the existing entries.

Имена столбцов: database_id, file_id, page_id, error_type, page_status, modification_timeColumn names: database_id, file_id, page_id, error_type, page_status, modification_time

sys.dm_hadr_database_replica_statessys.dm_hadr_database_replica_states
Возвращает по строке для каждой из баз данных, участвующих в любой группе доступности, реплика доступности которой размещена на локальном экземпляре SQL ServerSQL Server .Returns a row for each database that is participating in any availability group for which the local instance of SQL ServerSQL Server is hosting an availability replica.

Имена столбцов: database_id, group_id, replica_id, group_database_id, is_local, synchronization_state, synchronization_state_desc, is_commit_participant, synchronization_health, synchronization_health_desc, database_state, database_state_desc, is_suspended, suspend_reason, suspend_reason_desc, recovery_lsn, truncation_lsn, last_sent_lsn, last_sent_time, last_received_lsn, last_received_time, last_hardened_lsn, last_hardened_time, last_redone_lsn, last_redone_time, log_send_queue_size, log_send_rate, redo_queue_size, redo_rate, filestream_send_rate, end_of_log_lsn, last_commit_lsn, last_commit_time, low_water_mark_for_ghostsColumn names: database_id, group_id, replica_id, group_database_id, is_local, synchronization_state, synchronization_state_desc, is_commit_participant, synchronization_health, synchronization_health_desc, database_state, database_state_desc, is_suspended, suspend_reason, suspend_reason_desc, recovery_lsn, truncation_lsn, last_sent_lsn, last_sent_time, last_received_lsn, last_received_time, last_hardened_lsn, last_hardened_time, last_redone_lsn, last_redone_time, log_send_queue_size, log_send_rate, redo_queue_size, redo_rate, filestream_send_rate, end_of_log_lsn, last_commit_lsn, last_commit_time, low_water_mark_for_ghosts

sys.dm_hadr_database_replica_cluster_statessys.dm_hadr_database_replica_cluster_states
Возвращает строку с информацией, помогающей составить представление о работоспособности баз данных доступности каждой из групп доступности в отказоустойчивой кластеризации Windows Server (WSFC).Returns a row containing information intended to provide you with insight into the health of the availability databases in each availability group on the Windows Server Failover Clustering (WSFC) cluster. Динамическое административное представление удобно использовать при планировании или при отработке отказа либо при поиске вторичной реплики в группе доступности, которая не дает усекать журнал данной базы данных-источника.This dynamic management view is useful when planning or responding to a failover or for discovering which secondary replica in an availability group is holding up log truncation on a given primary database.

Имена столбцов: replica_id, group_database_id, database_name, is_failover_ready, is_pending_secondary_suspend, is_database_joined, recovery_lsn, truncation_lsnColumn names: replica_id, group_database_id, database_name, is_failover_ready, is_pending_secondary_suspend, is_database_joined, recovery_lsn, truncation_lsn

Примечание

Расположение первичной реплики — авторитетный источник для группы доступности.The primary replica location is the authoritative source for an availability group.

Примечание

Сведения о счетчиках производительности Группы доступности AlwaysOnAlways On availability groups для баз данных доступности (объект производительности SQLServer:Database Replica ) см. в разделе SQL Server, реплика базы данных.For information about the Группы доступности AlwaysOnAlways On availability groups performance counters for availability databases (the SQLServer:Database Replica performance object), see SQL Server, Database Replica. Для мониторинга активности журнала транзакций для баз данных доступности пользуйтесь следующими счетчиками объекта производительности SQLServer:Databases: Время записи журнала на диск (мс) , Записей журнала на диск/с, Неудачных обращений к кэшу пула журнала/с, Операций чтения диска пула журнала/с и Запросов пула журнала/с. Дополнительные сведения см. в статье SQL Server, Databases Object.Also, to monitor transaction-log activity on availability databases, use the following counters of the SQLServer:Databases performance object: Log Flush Write Time (ms), Log Flushes/sec, Log Pool Cache Misses/sec, Log Pool Disk Reads/sec, and Log Pool Requests/sec. For more information, see SQL Server, Databases Object.

Мониторинг прослушивателей группы доступностиMonitoring Availability Group Listeners

Для мониторинга прослушивателей группы доступности в подсети кластера WSFC используйте следующие представления:To monitor the availability group listeners on subnets of the WSFC cluster, use the following views:

sys.availability_group_listener_ip_addressessys.availability_group_listener_ip_addresses
Возвращает строку для каждого совместимого виртуального IP-адреса, который в настоящее время включен для прослушивателя группы доступности.Returns a row for every conformant virtual IP address that is currently online for an availability group listener.

Имена столбцов: listener_id, IP-адрес, ip_subnet_mask, is_dhcp, network_subnet_ip, network_subnet_prefix_length, network_subnet_ipv4_mask, state, state_descColumn names: listener_id, ip_address, ip_subnet_mask, is_dhcp, network_subnet_ip, network_subnet_prefix_length, network_subnet_ipv4_mask, state, state_desc

sys.availability_group_listenerssys.availability_group_listeners
Для любой выбранной группы доступности возвращает либо ноль строк, указывая, что с группой доступности не связано ни одного сетевого имени, либо отдельную строку для каждой конфигурации прослушивателя группы доступности в кластере WSFC.For a given availability group, returns either zero rows indicating that no network name is associated with the availability group, or returns a row for each availability-group listener configuration in the WSFC cluster.

Имена столбцов: group_id, listener_id, dns_name, порт, is_conformant, ip_configuration_string_from_clusterColumn names: group_id, listener_id, dns_name, port, is_conformant, ip_configuration_string_from_cluster

sys.dm_tcp_listener_statessys.dm_tcp_listener_states
Возвращает строку, содержащую сведения о динамическом состоянии для каждого прослушивателя TCP.Returns a row containing dynamic-state information for each TCP listener.

Имена столбцов: listener_id, ip_address, is_ipv4, port, type, type_desc, state, state_desc, start_timeColumn names: listener_id, ip_address, is_ipv4, port, type, type_desc, state, state_desc, start_time

Первичный ключ: listener_idPrimary key: listener_id

Сведения о прослушивателях групп доступности см. в разделе Прослушиватели группы доступности, подключения клиентов и отработка отказа приложений (SQL Server).For information about availability group listeners, see Availability Group Listeners, Client Connectivity, and Application Failover (SQL Server).

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

Задачи по мониторингу групп доступности AlwaysOn:Always On Availability Groups monitoring tasks:

Справочник по мониторингу групп доступности AlwaysOn (Transact-SQL):Always On Availability Groups monitoring reference (Transact-SQL):

Счетчики производительности AlwaysOn:Always On performance counters:

Управление на основе политик для групп доступности AlwaysOnPolicy-based management for Always On Availability Groups

См. также:See Also

Группы доступности AlwaysOn (SQL Server) Always On Availability Groups (SQL Server)
Обзор групп доступности AlwaysOn (SQL Server) Overview of Always On Availability Groups (SQL Server)
Отслеживание групп доступности (SQL Server)Monitoring of Availability Groups (SQL Server)