Уважаемые слушатели! Обращаем ваше внимание, что 01.05.2024 и 09.05.2024 у нас выходные дни. Вы можете оставить сообщение в чате, мы обязательно ответим!
Уважаемые слушатели! Теперь для вас работает номер технической поддержки 8 (800) 444-28-35 с 9:00 до 21:00

Частным лицам +7 (495) 232-32-16

Слушателям
от организации
+7 (495) 780-48-44

+7 (495) 780-48-49

Как ограничить число одновременных подключений к SQL Server'у?

Самородов Федор Анатольевич: Как ограничить число одновременных подключений к SQL Server'у?

СФА

Этот вопрос относится к задаче квотирования ресурсов. Обычно администратор желает контролировать ресурсы сервера, которые являются исчерпаемыми или дорогостоящими. Например, занятое место на диске, объём выделенной памяти, процессорное время. Если ваше приложение подключается к СУБД напрямую с клиентской рабочей станции, а не опосредованно через сервер приложения, то таким дорогостоящим ресурсом могут стать открытые сеансы.

Разумеется, разработчик приложения может и, как правило, должен экономить открытые соединения. Для этого у него есть удобные инструменты. Но если приложение запускается на разных рабочих станциях разными пользователями, то от действий разработчика зависит уже не всё.

Пределы на число одновременно открытых подключений можно установить и на сервере баз данных. В SQL Server'е для этого можно использовать триггеры входа (LOGON TRIGGER). Эти триггеры срабатывают после аутентификации (то есть мы уже знаем кто и с какого компьютера желает подключиться), но до создания сеанса (то есть, у нас ещё есть возможность не допустить установления соединения).

В контексте такого триггера вы можете обращаться к системным функциям и представлениям, что даёт возможность принять решение об отмене создания сеанса.

Например, можно проанализировать число уже открытых соединений с этой рабочей станции (здесь мы не даём открывать более 10 сеансов с одного компьютера):

Как ограничить число одновременно открытых соединений с одного компьютера

Или число открытых сеансов именно этого пользователя:

Как ограничить число одновременно открытых соединений для пользователя

Разумеется, можно использовать более сложную логику, анализируя уже открытые сеансы по пользователям, компьютерам и приложениям одновременно:

Ограничение числа одновременно открытых соединений

Обратите внимание, что триггеры входа действуют в рамках всего SQL-сервера:

Триггеры входа (LOGON TRIGGER) в SQL Server'е

Поэтому обращайтесь с ними очень аккуратно. Если вы допустите ошибку в таком триггере, то подключиться к серверу не сможет никто, включая системного администратора, так как сервер будет сбрасывать любые попытки соединения. А чтобы исправить или отключить триггер, нужно сначала суметь установить соединение. Как быть, если такая неприятность всё же произошла, вы узнаете на наших курсах.

Подробнее об этом Вы сможете узнать на курсах SQL Server

Ближайшие группы

envelope

Спасибо! Вам на e-mail отправлено письмо со ссылкой для подтверждения

Если письмо не пришло, поищите его в папке со спамом или повторите подписку

email-checked.png

Вы подписались на рассылку

Как будет оформлено обучение?

Оплачивать будет:

Спасибо за обращение! Ваш менеджер свяжется с Вами в течение нескольких минут.