Jedna z nazw naszych użytkowników została legalnie zmieniona, dlatego zmieniliśmy ich nazwę użytkownika Active Directory, aby pasowała - z domeny \ stara nazwa na domenę \ nowa nazwa. Jednak gdy suser_sname () jest wywoływany przez tego użytkownika w procedurze składowanej, zwraca starą nazwę, a nie nową.
Googling doprowadził mnie do KB 946358, co sugeruje, że ich nazwa jest buforowana na serwerze i nie jest aktualizowana, prawdopodobnie dlatego, że suser_name () wywołuje LsaLookupSids. Jednak obejście tego artykułu obejmuje ponowne uruchomienie serwera, a nawet jeśli tak, nadal chciałbym zrozumieć problem.
Jeśli zmienię mój kontekst na kontekst, powróci poprawna nazwa:
EXECUTE AS LOGIN = 'domain\newname'
GO
SELECT suser_name() --returns 'domain\newname'
... Zakładałbym, że wywoła to również LsaLookupSids, a zatem zwróci niepoprawną nazwę. Wydaje się prawdopodobne, że tak naprawdę nie rozumiem mechanizmów, które tu działają.
Niektóre spostrzeżenia, które mogą mieć znaczenie:
Ten użytkownik nie ma wyraźnego loginu na serwerze. Ale są członkami grupy AD, która to robi. Zmieniona nazwa (domena \ nowa nazwa) pojawia się w zestawie wyników dla
exec xp_logininfo 'domain\ADGroupName', 'members'
; domena \ stara nazwa nie.Użytkownik wywołuje suser_name () w ramach procedury składowanej, wywoływanej z zapytania tranzytowego w MDB programu Access 2003.
W przeszłości zmieniliśmy wiele nazw kont użytkowników, ale zaobserwowaliśmy ten problem tylko w ostatnim tygodniu (w zeszłym tygodniu wprowadzono dwie zmiany, oba wydają się wykazywać problem).
Na serwerze działa Sql Server 2008 SP3 x64 w wersji Windows 2008 R2 Datacenter.
Co się dzieje? Jako DBA, co mogę zrobić lub gdzie mogę to rozwiązać?
źródło
EXECUTE AS
iSELECT SUSER_NAME()
przetestuj. Czy wypróbowałeś teżSUSER_SNAME()
jedną z pozostałych 100 odmian?SUSER_SNAME()
, należy to naprawić w tym momencie. Następnie możesz spróbować usunąć login i sprawdzić, czy zachowuje on nową nazwę.ipconfig /flushdns
iipconfig /registerdns
z wiersza polecenia, aby sprawdzić, czy pokonuje się ten problem.Odpowiedzi:
Czy może to być związane z buforowaniem przy użyciu Kerberos? (choć przypuszczenie może być niepowiązane) http://blogs.technet.com/b/tspring/archive/2014/06/23/viewing-and-purging-cached-kerberos-tickets.aspx
źródło