У меня SQL Server 2012, и я использую пользователей домена (из Active Directory). По ошибке пользователи были удалены из AD, созданы новые с идентичными логинами и паролями (но с разными SID), удалены и восстановлены исходные - в итоге старые пользователи со старыми SID были воссозданы.
Почти все снова в порядке, кроме одного пользователя. SQL Server каким-то образом застрял с неправильным SID для одного пользователя (все другие пользователи в порядке) и не получает правильный SID от AD. Я проверил SID в обоих местах - SID в AD не такие, как в SQL Server.
В результате этого «несоответствия SID» этот пользователь не может получить доступ к базе данных. Если попытаться, то произойдет сбой и появится:
Я удалил пользователя с сервера и все базы данных, которые он использовал, затем добавил - и снова получил неправильный SID! И этот «новый» пользователь по-прежнему не может подключиться к базе данных.
Есть две вещи, которые «трогают меня»:
Я много обнаружил о различных манипуляциях с двумя существующими (или осиротевшими?) учетными записями пользователей, но не смог найти только об изменении SID.
Но главный вопрос - как изменить SID одного пользователя в MS SQL Server (версия 11.0.)? Возможно ли это вообще?
ОБНОВЛЕНИЕ
Продолжая думать об этом, я понял, что у меня неправильный вопрос. Поскольку этот UserX является пользователем домена, это не локальный пользователь SQL Server - это означает, что я не могу изменить SID непосредственно в SQL Server.
У меня есть два идентичных сервера (ServerA и ServerB), которые используют одних и тех же пользователей из AD. В ServerB UserX имеет правильный SID и может нормально проходить аутентификацию в SQL Server (правильный SID означает то же, что и в AD). Для ясности - UserX имеет неправильный SID в ServerA.
Вопрос - если этот пользователь является пользователем домена из Active Directory, , где и , как изменить его SID? Если UserX может аутентифицироваться на ServerB, это означает, что SID необходимо изменить на ServerA в Windows Users?
Пожалуйста, поправьте меня, если некоторые мысли или идеи пошли не так.
ОБНОВЛЕНИЕ 2
Я нашел решение к моей проблеме, хотя не ответил на вопрос. Для всех, кто интересуется - мои коллеги обнаружили в AD удаленного пользователя с неправильным SID. Этот пользователь был продлен, и теперь в AD активны оба пользователя - хороший и плохой . SQL Server распознал пользователей, и проблема с логином пользователя и несоответствием SID каким-то образом решилась сама собой - UserX в ServerA теперь имеет право SID и может обращаться к базе данных. Теперь все работает как надо! :)
У меня была аналогичная ситуация с удаленным пользователем AD и несоответствием SID. Для меня проблема заключалась в локальном кэшировании SID, и решением было следовать обходному пути, указанному ниже по ссылке на сервере SQL и клиентском компьютере.
открытого редактора реестра. Для этого в Windows XP или Windows Server 2003 нажмите Пуск, нажмите Выполнить,> введите regedit, а затем нажмите OK.
Для этого в Windows Vista и более поздних версиях нажмите Пуск, введите regedit в поле> Начать поиск. , а затем нажмите клавишу ВВОД.
Найдите и щелкните правой кнопкой мыши следующий подраздел реестра:HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Lsa>
Укажите на «Создать» и затем щелкните «Значение DWORD».
Введите LsaLookupCacheMaxSize и нажмите клавишу ВВОД.
Щелкните правой кнопкой мыши LsaLookupCacheMaxSize, а затем нажмите «Изменить».
В поле «Значение» введите 0 и нажмите «ОК».
Закройте редактор реестра.
При желании после этого щелкните правой кнопкой мыши созданный вами DWORD LsaLookupCacheMaxSize и удалите его.
Вы пытались проверить наличие потерянных пользователей, введя следующую команду:
sp_changes_users_login 'Report'
(для базы данных master уязвимого сервера SQL и для database_in_question на пораженном сервере. )
Если у вас есть осиротевшие пользователи, вы можете затем выдать:
sp_change_users_login 'Update_one', 'Domain\UserX', 'Domain\UserX'
... для затронутой базы данных, или, если логин SQL сопоставлен с пользователем базы данных, выдавайте:
sp_change_users_login 'Update_one', 'UserX', 'Domain\UserX'
, чтобы исправить несоответствие SID.
Синтаксис sp_change_users_login на сайте Microsoft.