FirebirdSQL logo

MON$ATTACHMENTS

Сведения о текущих соединениях с базой данных.

Table 1. Описание столбцов таблицы MON$ATTACHMENTS
Наименование столбца Тип данных Описание

MON$ATTACHMENT_ID

BIGINT

Идентификатор соединения.

MON$SERVER_PID

INTEGER

Идентификатор серверного процесса.

MON$STATE

SMALLINT

Состояние соединения:

0 — бездействующее;
1 — активное.

MON$ATTACHMENT_NAME

VARCHAR(255)

Строка соединения — полный путь к файлу и имя первичного файлабазы данных.

MON$USER

CHAR(63)

Имя пользователя, соединённого с базой данных.

MON$ROLE

CHAR(63)

Имя роли, указанное при соединении. Если роль во время соединенияне была задана, поле содержит текст NONE.

MON$REMOTE_PROTOCOL

VARCHAR(10)

Используемый сетевой протокол.

MON$REMOTE_ADDRESS

VARCHAR(255)

Адрес удалённого клиента.

MON$REMOTE_PID

INTEGER

Идентификатор клиентского процесса.

MON$CHARACTER_SET_ID

SMALLINT

Идентификатор набора символов в соединении.

MON$TIMESTAMP

TIMESTAMP

Дата и время начала соединения.

MON$GARBAGE_COLLECTION

SMALLINT

Флаг сборки мусора (указывается в DPB при подключении):1 - позволяется, 0 - не позволяется.

MON$REMOTE_PROCESS

VARCHAR(255)

Полный путь к файлу и имя программного файла, выполнившего данноесоединение.

MON$STAT_ID

INTEGER

Идентификатор статистики.

MON$CLIENT_VERSION

VARCHAR(255)

Версия клиентской библиотеки.

MON$REMOTE_VERSION

VARCHAR(255)

Версия сетевого протокола.

MON$REMOTE_HOST

VARCHAR(255)

Имя удалённого клиентского хоста.

MON$REMOTE_OS_USER

VARCHAR(255)

Имя пользователя в операционной системе клиента.

MON$AUTH_METHOD

VARCHAR(255)

Метод проверки подлинности, используемый при подключении.

MON$SYSTEM_FLAG

SMALLINT

Флаг того, что подключение системное:

0 — пользовательское подключение;
1 — системное подключение.

MON$IDLE_TIMEOUT

INTEGER

Тайм-аут простоя соединения уровня соединения. Содержит значениетайм-аута простоя уровня соединения, в секундах. Если тайм-аут неустановлен — 0.

MON$IDLE_TIMER

TIMESTAMP

Время истечения таймера ожидания. Содержит NULL, если тайм-аутпростоя соединения не установлен, или если таймер не запущен.

MON$STATEMENT_TIMEOUT

INTEGER

Тайм-аут SQL оператора уровня соединения. Содержит значениетайм-аута, установленное на уровне соединения, в миллисекундах. Еслитайм-аут не установлен — 0.

MON$WIRE_COMPRESSED

BOOLEAN

Используется ли сжатие сетевого трафика. Если используется сжатиесетевого трафика значение равно TRUE, если не используется — FALSE.Для встроенных соединений — возвращает NULL.

MON$WIRE_ENCRYPTED

BOOLEAN

Используется ли шифрование сетевого трафика. Если используетсяшифрование сетевого трафика значение равно TRUE, если неиспользуется — FALSE. Для встроенных соединений — возвращает NULL.

MON$WIRE_CRYPT_PLUGIN

CHAR(63)

Имя текущего плагина для шифрования сетевого трафика, если оноиспользуется, в противном случае NULL.

MON$SESSION_TIMEZONE

CHAR(63)

Текущий часовой пояс соединения.

MON$PARALLEL_WORKERS

INTEGER

Максимальное количество параллельных рабочих процессов для этого соединения, 1 означает отсутствие параллельных рабочих процессов.Соединения "Garbage Collector" и "Cache Writer" могут сообщать 0.

Example 1. Получение сведений о клиентских приложениях
SELECT MON$USER, MON$REMOTE_ADDRESS, MON$REMOTE_PID, MON$TIMESTAMP
FROM MON$ATTACHMENTS
WHERE MON$ATTACHMENT_ID <> CURRENT_CONNECTION

Использование MON$ATTACHMENTS для закрытия подключений

Таблицы мониторинга доступны только для чтения.Однако в сервер встроен механизм для удаления (и только удаления) записей в таблице MON$ATTACHMENTS, что позволяет, закрыть соединение с базой данных.

Note
  • Вся текущая активность в удаляемом соединении немедленно прекращается, и все активные транзакции откатываются (триггеры на события ON DISCONNECT и ON TRANSACTION ROLLBACK не вызываются);

  • Закрытое соединение вернёт приложению ошибку с кодом isc_att_shutdown;

  • Последующие попытки использовать это соединение (т.е. использовать его handle в API-вызовах) вернут ошибки;

  • Завершение системных соединений (MON$SYSTEM_FLAG = 1) невозможно. Сервер пропустит системные подключения затронутые оператором DELETE FROM MON$ATTACHMENTS.

Example 1. Отключение всех соединений, за исключением своего
DELETE FROM MON$ATTACHMENTS
WHERE MON$ATTACHMENT_ID <> CURRENT_CONNECTION