Skip to content

Как разблокировать логин SQL Server с помощью T-SQL (без смены пароля)?

Пересказ статьи Kenneth Fisher. How do I unlock a SQL Server Login using T-SQL (without changing the password)?


Недавно логин приложения (авторизация SQL Server) в одной из наших учебных сред начал постоянно блокироваться. Я не буду вдаваться в причины, скажу лишь, что мы решили эту проблему. Это была серьезная проблема, которая довольно быстро перешла в нашу цепочку управления. Нам требовалось решить её как можно быстрее. Поэтому требовалось решение не только на длительную перспективу, но также краткосрочное решение. Последнее решение включает создание скрипта, который разблокирует логин (если он заблокирован), и включение его в задание, которое выполняется каждые 5 минут.

Замечание. Это не то, что вам следует делать на производственном сервере, поскольку создает большую дыру в безопасности!

Не используйте это на рабочем сервере. Тем не менее, части этого скрипта весьма полезны, поэтому после долгих раздумий я решил этим поделиться. В конце концов, тут нет секрета. Скрипт нормальный, он просто помещается в регулярное задание, которое становится проблемой.

IF LOGINPROPERTY('SQLID','islocked') = 1
BEGIN
ALTER LOGIN SQLID WITH CHECK_POLICY=OFF;
ALTER LOGIN SQLID WITH CHECK_POLICY=ON;
END

Первая часть скрипта - LOGINPROPERTY - проверяет флаг islocked, чтобы узнать заблокирован ли логин. Функции свойств очень полезны в подобных скриптах, поэтому полезно о них напомнить. Зачем проверять? Я не хочу вносить никаких изменений логина, если это не требуется. Кроме того, изменение флажка CHECK_POLICY на off (выключено) сбрасывает (помимо прочего) историю пароля. Это не большая проблема в данном случае, но желательно об этом напомнить.

Затем вы используете ALTER LOGIN, чтобы выключить, а затем опять включить флажок check_policy. Этим вы разблокируете логин. Следует указать, что это же можно сделать с помощью графического интерфейса. Следует снять флажок CHECK POLICY, сохранить, снова вернуться в окно свойств, и повторно установить флажок.

Если вы хотите разблокировать логин и согласны сменить одновременно пароль, просто можете выполнить это:

ALTER LOGIN [SQLID] WITH PASSWORD = '****' UNLOCK ;

Но каждый раз вам понадобится новый пароль.
Категории: T-SQL

Обратные ссылки

Нет обратных ссылок

Комментарии

Показывать комментарии Как список | Древовидной структурой

Нет комментариев.

Автор не разрешил комментировать эту запись

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

Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
Standard emoticons like :-) and ;-) are converted to images.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.
CAPTCHA

Form options

Добавленные комментарии должны будут пройти модерацию прежде, чем будут показаны.