Błąd 15023 serwera SQL najczęściej występuje po przywróceniu bazy z kopii zapasowej. Zazwyczaj spodziewamy się, że baza po odzyskaniu będzie w pełni funkcjonalna, lecz zdarzyć się może, że pomimo, iż użytkownik ma uprawnienia do danej bazy nie może się do niej zalogować.
Próba ponownego dodania uprawnień przez SQL Enterprise Manager kończy się błędem „Error 15023: User already exists in current database”. Spowodowane jest to „osieroconym” wpisem SID w tabeli sysusers.
W takiej sytuacji Microsoft przychodzi z pomocą oferując wbudowane w serwer SQL narzędzia a poniżej znajduje się opis jak naprawić ten błąd.
W SQL Query Analyzer uruchamiamy poniższy kod, wybierając interesującą nas bazę.
USE nazwa-bazy-danych
GO
EXEC sp_change_users_login 'Report'
GO
Wyświetli się lista loginów i nieprawidłowo wpisanych SID-ów
Następnie uruchamiamy poniższy kod.
USE nazwa-bazy-danych
GO
EXEC sp_change_users_login 'Auto_Fix', 'nazwa-użytkownika', NULL, 'hasło'
GO
Procedura sp_change_users_login przypisze użytkownika z bazy danych do loginu w serwerze SQL. Atrybut „Auto_Fix” tworzy użytkownika na serwerze SQL w przypadku, gdy jeszcze nie istniał. Następnie łączy wpis użytkownika z tabeli sysusers w bieżącej bazie z loginem o tej samej nazwie w sysxlogins. Parametr z hasłem można próbować pominąć jeśli hasło nie jest znane.
Dzisiaj ten tips się przydał, dzięki!
Działa.
Jest literówka(błedby znak) w ‘nazwa-użytkownika’ – powinno być 'nazwa-użytkownika’. Poza tym procedura zadziałała poprawnie.
dzieki!
Jesteś wielki! Uratowałeś mi życie dzisiaj, 200 firm po przełożeniu na nowy serwer straciło możliwość drukowania na dwa dni przed podatkami, bo użytkownik Crystala się nie zalogował. Dzięki!
Krótko zwięźle i na temat. Działa 😊
Dziękuje bardzo.