SQL — получаем активные соединения

SQLДобрый день. В этой статье мы с вами научимся писать запросы, которые выводят активные соединения с текущим сервером. А так же научимся фильтровать всю выборку по конкретным серверам.

SQL — Активные соединения

В каких ситуациях это может понадобиться? Например для того, чтобы отследить не проводятся ли ddos атаки на ваш сервис, нет ли каких-то зависших сессий. Все это можно объединить под фразу «для диагностики и аналитики». Для того, чтобы увидеть все активные подключения к серверу, необходимо с помощью MSSQL Server Management Studio выполнить следующий запрос:

Что делает функция sys.dm_exec_connections? Возвращает сведения о соединениях, установленных с данным экземпляром SQL Server, и подробные сведения о каждом соединении. Соответственно на выходе мы получим много столбцов с информацией:

  • session_id — идентификатор соединения
  • most_recent_session_id — идентификатор самого последнего запроса в данном соединение
  • connect_time — время подключения и создания новой сесии
  • net_transport — тип транспортного протокола соединения
  • protocol_type — тип протокола передачи данных для соединения
  • protocol_version — версия протокола доступа к данным для соединения
  • endpoint_id — идентификатор типа соединения
  • encrypt_option — булево значение разрешающее или запрещающее шифрование для соединения
  • auth_scheme — указывает тип схемы проверки подлинности используемую соединением
  • node_affinity — идентифицирует узел памяти для соединения
  • num_reads — число операций чтения байтов прошедших через это соединение
  • num_writes — число байтов операций записи прошедших через это соединение
  • last_read — метка времени о последнем полученном пакете данных
  • last_write — метка времени о последнем отправленном пакете данных
  • net_packet_size — размер пакета, используемый для передачи данных
  • client_net_address — сетевой адрес удаленного клиента
  • client_tcp_port — номер порта на клиенте, который используется при осуществлении соединения
  • local_net_address — IP-адрес сервера, с которым установлено данное соединение
  • local_tcp_port — TCP-порт сервера, если соединение использует протокол TCP
  • connection_id — уникальный 128-битный идентификатор соединения
  • parent_connection_id — идентифицирует первичное соединение, используемое в сеансе режима MARS. Это возможность, которая в SQL Server используется для выполнения нескольких пакетов по одному соединению
  • most_recent_sql_handle — дескриптор последнего запроса SQL, выполненного с помощью данного соединения. Постоянно проводится синхронизация между столбцом most_recent_sql_handle и столбцом most_recent_session_id

Функция системная, поэтому скачивать ее не нужно и пытаться найти в гугле тоже. Надеюсь все понятно. Если остались вопросы пишите комментарии.

Фильтрация

Перейдем к фильтрации. Как уже думаю стало понятно из описания столбцов, можно отсеивать нужные апишники или идентификаторы сессий. Можно фильтровать все подключения по определенному порту, можно фильтровать по порту клиента. Да и в целом по каждому из столбцов можно проводить фильтрацию.

Фильтруем по адресу клиента:

Получаем самые последние подключения по адресу клиента:

Выбираем подключения по порту клиента:

Смотрим соединения по порту, который начинается на 56:

И так можно получить любые активные соединения с сервером SQL, с которого выполняется запрос. У меня на этом все, остались вопросы? Пишите комменты! Надеюсь данная статья sql соединения была для вас полезна. Подписывайтесь на нашу группу в ВК, канал ютубе и залетайте на канал в телегу!

Лицензионное соглашение

Авторские права публикуемых материалов полностью или частично принадлежат авторам сайта Pechenek.NET в соответствии со статьями 1252 и 1301 ГК РФ. Любое распространение должно быть согласовано с автором материала или с указанием ссылки на первоисточник.