Як дізнатися активні сеанси користувачів в ms sql 2018, програмування для початківців
Для того щоб розуміти, що таке системне уявлення, раджу Вам для початку ознайомитися з поняттям простого уявлення, яке розглядається в статті - Навіщо потрібні уявлення (views) в базах даних. Також ми будемо писати нехай прості, але все запити, з основами яких Ви природно повинні бути знайомі, якщо немає, то можете прочитати статтю основи мови SQL - оператор select.
Начебто все, що необхідно знати, перед тим як щось пробувати з нижче наведених прикладів на практиці я вказав, переходимо безпосередньо до самої суті сьогоднішнього питання.
Як дізнатися активні сеанси користувачів
Системне уявлення sys.sysprocesses містить поточний стан сервера на предмет запущених процесів, виходячи з цього, напишемо простенький запит:
- db - це база даних, в якій запущений процес;
- idproc - ідентифікатор процесу;
- loginame - логін, тобто хто саме запустив;
- program_name - додаток, з якого запущений процес;
- status - відповідно статус.
Статуси бувають різні, наприклад,
- Runnable - активний процес, тобто наприклад, в даний момент виконується якийсь запит;
- Sleeping - режим очікування, тобто наприклад, вікно запиту відкрито, але в даний момент він не запущений;
- Background - працює у фоновому режимі.
Якщо Вам потрібна, хто саме працює конкретно в тій чи іншій базі можна додати умову:
Відповідно замість name_db пишіть свою потрібну базу даних, і результат буде отримано лише по цій базі даних.
Як завершити всі активні сеанси користувачів
Для того щоб завершити всі підключення користувачів до бд, виконаємо наступний запит:
- @dbname - змінна, для того щоб вказати до якої базі необхідно завершити всі підключення;
- @query - змінна для зберігання запиту;
У конструкції select ми динамічно формуємо запит з ідентифікаторами процесів, які необхідно завершити. Далі в змінної @query буде зберігатися запити виду
kill 58; kill 61; kill 70;
які ми виконаємо через exec (@query) і тим самим завершимо всі процеси.
З усього вище сказаного Ви легко можете дізнаватися, хто саме зараз виконує запит і навіть завершити його, що в свою чергу іноді буває корисно.