Мой вопрос очень похож на этот вопрос Изменение имени пользователя домена Windows но исходный вопрос явно не отвечает на мою небольшую вариацию.
Если я изменю имя пользователя пользователей Windows (например, если они женятся), будет ли мой логин на сервере Sql, который я создал для старого имени пользователя, будет обновлен, чтобы отразить это изменение, или мне нужно будет создать новый логин для обновленного пользователя Windows?
Спасибо Бен
Если логин привязан к учетной записи домена, это должно быть нормально, потому что на базовом уровне это зависит от SID пользователя, а не от фактического имени пользователя.
Если новое имя пользователя не работает, возможно, вам придется сбросить кеш токенов с помощью этой команды:
DBCC FREESYSTEMCACHE('USERSTORE_TOKENPERM');
Разрешения должны продолжать работать правильно, но имя пользователя, отображаемое в SQL Server, в некоторых местах будет старым именем, пока вы не обновите его вручную.
Хотя метод drop / create будет работать, и, по-видимому, создание дублирующего входа в систему sql с тем же SID, похоже, работает для некоторых здесь, я рекомендую просто обновить существующую запись входа в SQL Server (протестировано в SQL 2012).
ALTER LOGIN [DomainName\OldUserName] WITH NAME = [DomainName\NewUserName];
Это полностью изменит существующую запись входа в систему, чтобы отразить правильное новое имя пользователя для этого пользователя домена (SID).
На самом деле он соответствует SID, а не имени. Так что все будет в порядке.
Ноты:
Вы можете легко проверить, что у них одинаковый SID после переименования, используя приведенный ниже сценарий, и проверьте, получаете ли вы тот же SID до и после. Предполагая, что вы переименовали Domain\LoginA
к Domain\LoginB
:
SELECT sid
FROM sys.server_principals
WHERE name IN (N'Domain\LoginA')
и
SELECT sid
FROM sys.server_principals
WHERE name IN (N'Domain\LoginB')
должен предоставить вам тот же SID, который подтверждает точку зрения @Hyppy.