Мы изменили имя пользователя одного из пользователей 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 выше, чтобы увидеть желаемое изменение.