Изменить имя входа (пользователь Windows) для существующего пользователя SQL на сервере базы данных - PullRequest
1 голос
/ 05 ноября 2019

У нас есть база данных SQL 2012, и наши пользователи настроены с помощью проверки подлинности Windows для подключения к определенной базе данных - скажем, DatabaseA.

Это выглядит так: Пользователь Windows" DomainA / abcd", сопоставлен с пользователем " abcd"в базе данных DatabaseA, который имеет стандартную схему " abcd"который в свою очередь владеет кучей столов. Удаленные пользователи входят в свои ноутбуки (как DomainA / abcd), подключаются через VPN и могут запрашивать данные с сервера SQL (они извлекают данные из схемы по умолчанию на основе своего входа в Windows).

Все этоработает нормально, однако, теперь мы переходим на новый домен.

Наши пользователи будут входить в систему как «DomainB / abcd», и когда они попытаются подключиться к своим таблицам на сервереданные не возвращаются, так как «DomainA / abcd» и «DomainB / abcd» являются разными пользователями.

Чего я пытаюсь достичь: Могу ли я получить пользователя БД «abcd»который в настоящее время сопоставлен с именем входа Windows «DomainA / abcd», чтобы указать на имя входа Windows «DomainB / abcd». Это вообще возможно?

Если нет, каковы альтернативы. Мы хотим избежать сброса схемы / таблиц и пользователя, а затем воссоздать все заново.

Что я пробовал: Я пробовал ALTER USER и sp_change_users_login безрезультатно.

ALTER USER [DomainB\abcd] WITH LOGIN = [abcd] возвращает Cannot remap user to login 'abcd', because the login is already mapped to a user in the database. - имеет смысл.

EXEC sp_change_users_login 'Update_One', 'abcd', 'DomainB\abcd'; GO возвращает Terminating this procedure. The User name 'abcd' is absent or invalid. - MSDN говорит, что это может быть использовано для сопоставления пользователя БД сновый логин SQL, без упоминания логина Windows.

Я являюсь членом роли sysadmin на сервере БД, поэтому не думаю, что это проблема с разрешениями.

1 Ответ

2 голосов
/ 06 ноября 2019

Когда имя домена пользователя SQL Server изменяется, в настоящее время мы все еще хотим сохранить текущие настройки пользователя базы данных и не хотим воссоздавать этих пользователей, мы можем использовать сценарий SQL для обновления домена пользователя следующим образом:

ALTER USER [abcd] WITH LOGIN = [DomainB\abcd], NAME = [abcd]

Я рад, что это работает для вас.

...