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 соединения была для вас полезна. Подписывайтесь на нашу группу в ВК, канал ютубе и залетайте на канал в телегу!

0

Автор публикации

не в сети 6 часов

Vapi

0
Комментарии: 19Публикации: 103Регистрация: 14-04-2017

Поделиться в соц. сетях:

Понравилась статья? Поблагодари автора, накорми печеньками! :)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *