Zablokowany użytkownik w SAP
Pytanie: Jak zmienić hasło użytkownika w SAP?
Odpowiedź: Normalnie, poprzez transakcję SU01.
Gorzej, jeżeli odtworzyliśmy system z jakiejś archiwalnej (czytaj: starej i zakurzonej) kopii zapasowej i nie mamy pojęcia, jakie w tym czasie było hasło dla SAP*, a był to np. jedyny użytkownik z uprawnieniami SAP_ALL. Generalizując: stanąłem przed problemem zmiany hasła w systemie, do którego nie byłem się w stanie zalogować na potrzebny mi mandant. Cała procedura okazała się nawet dość prosta, trzeba było tylko trochę poszukać.
Jak się po krótkim szukaniu okazało, SAP trzyma dane użytkowników w tabeli USR02. Interesującymi nas polami są:
BNAME - login użytkownika
MANDT - mandant, do którego przynależny jest wpis
PASSCODE - hash hasła (to jest chyba 160 bitowe SHA1)
Żeby 'zresetować’ hasło, wystarczy poszukać sobie użytkownika, którego hasło znamy, skopiować na bok hash tego hasła i podmienić pole w interesującym nas miejscu. Robi się to jakoś tak:
select PASSCODE from USR02 where BNAME='[nazwa_uzytkownika_ktorego_haslo_znamy]' and MANDT='[mandant]'
update USR02 set PASSCODE=[to_co_dostalismy_z_selecta] where BNAME='[nazwa_uzytkownika_ktoremu_zmieniamy_haslo]' and MANDT='[mandant]';
Mandanty obu użytkowników mogą być oczywiście różne.
Jeszcze przepis typu „krok po kroku” (środowisko to SAP ECC 6.0 z bazą MSSQL2005 zainstalowany na Windows 2003).
Jedynym narzędziem, które będzie nam potrzebne jest „SQL Server Management Studio”.
Uruchamiamy owo narzędzie, szukamy interesującej nas bazy, a potem wciskamy „New Query”.
Szukamy sobie użytkownika, dla którego hasło znamy i wpisujemy coś takiego:
select PASSCODE from [nazwa_bazy].USR02 where BNAME='[nazwa_uzytkownika]' and MANDT='[mandant]';
a potem wciskamy CTRL-E i patrzymy, co się pojawiło na dole.
Następnie piszemy kolejną linijkę, która wygląda mniej-więcej tak:
update [nazwa_bazy].USR02 set PASSCODE=[nasze_haslo] where BNAME='[nazwa_uzytkownika]' and MANDT='[mandant]';
i po raz kolejny wciskamy CTRL-E.
Koniec. Możemy się zalogować na naszego użytkownika, używając znanego wcześniej hasła.