Назад | Перейти на главную страницу

Имя пользователя изменилось в Active Directory, но старое имя пользователя все еще отображается в SQL Profiler.

Мы изменили имя пользователя одного из пользователей ActiveDirectory, но теперь, спустя несколько дней, старое имя пользователя все еще отображается в профилировщике SQL при входе в систему. Кэшируются ли эти идентификаторы SID с копией имени пользователя? Могу я очистить этот кеш?

Пользователь не имеет «прямого» доступа к SQL-серверу, но находится в локальной группе безопасности, которая имеет доступ к серверу.

В SQL происходит кеширование. Вот как это увидеть в SQL Server 2008 R2 и как его сбросить. Это для пользователя Windows, который находится в группе AD и где группа была добавлена ​​в качестве имени входа в SQL. Пользователь не был добавлен напрямую как логин SQL.

подключиться с исходным именем пользователя

Подключитесь к SQL как пользователь. Допустим, пользователь DOMAIN \ test подключается к SQL Server Management Studio. Проверьте информацию о залогиненном пользователе.

select SYSTEM_USER

Вывод: DOMAIN \ test

sp_who2

Выходные данные включают столбец Login, в котором есть строки для: DOMAIN \ test

Обозреватель объектов> щелкните правой кнопкой мыши сервер в верхней части дерева> Свойства: соединение показывает: ДОМЕН \ тест

Вы также можете увидеть имя пользователя, указанное здесь: Обозреватель объектов> щелкните правой кнопкой мыши сервер в верхней части дерева> Монитор активности> Процессы

и здесь: Обозреватель объектов> Агент SQL Server> Монитор активности заданий

подключиться с новым именем пользователя

Теперь измените имя пользователя AD на test2. Повторно подключитесь в SQL Server Management Studio. Только в поле свойств подключения отображается новое имя пользователя DOMAIN \ test2. Если сервер / служба не были перезапущены или иначе не было тайм-аута / сброса, старое имя пользователя все равно будет отображаться для других выходов.

сбросить соединение

Даже если вы выйдете из системы и позволите всем соединениям завершиться или если вы их убьете, когда вы снова войдете в систему как test2, на него по-прежнему будет ссылаться как на исходное имя пользователя. Вот один из способов принудительного сброса без перезапуска сервера или службы SQL. Создайте новую учетную запись SQL непосредственно для учетной записи DOMAIN \ test2. Сразу удали. Происходит проверка, которая сбрасывает кешированную запись. Теперь, когда вы подключаетесь как test2, все вышеперечисленные проверки ссылаются на новое имя пользователя.

Он не кэшируется на SQL Server - вы можете увидеть его в системном представлении:

SELECT name, sid FROM sys.server_principals;

Вы можете обновить имя LOGIN, запустив оператор ALTER LOGIN, аналогичный следующему:

ALTER LOGIN OldName WITH NAME = NewName; 

Выполните инструкцию SELECT выше, чтобы увидеть желаемое изменение.