Uno de los nombres de nuestros usuarios fue cambiado legalmente, por lo que cambiamos su nombre de usuario de Active Directory para que coincida, desde dominio \ nombre antiguo a dominio \ nombre nuevo. Sin embargo, cuando este usuario llama a suser_sname () en un procedimiento almacenado, devuelve el nombre antiguo, no el nuevo.
Buscar en Google me llevó a KB 946358, que sugiere que su nombre se está almacenando en caché en el servidor y no se actualiza, presumiblemente porque suser_name () está llamando a LsaLookupSids. Sin embargo, la solución en ese artículo implica reiniciar el servidor, e incluso si fuera así, me gustaría entender el problema.
Si cambio mi contexto por el de ellos, vuelve el nombre correcto:
EXECUTE AS LOGIN = 'domain\newname'
GO
SELECT suser_name() --returns 'domain\newname'
... Supuse que esto también llamaría a LsaLookupSids, por lo que devolvería el nombre incorrecto. Parece probable que realmente no entiendo los mecanismos que funcionan aquí.
Algunas observaciones que pueden importar:
Este usuario no tiene un inicio de sesión explícito en el servidor. Pero son miembros de un grupo de AD que lo hace. El nombre cambiado (dominio \ nuevo nombre) aparece en el conjunto de resultados para
exec xp_logininfo 'domain\ADGroupName', 'members'
; dominio \ nombre antiguo no.El usuario está llamando a suser_name () desde un procedimiento almacenado, llamado desde una consulta de paso en un MDB de Access 2003.
Hemos cambiado muchos nombres de cuentas de usuarios en el pasado, pero solo hemos observado este problema en la última semana (se hicieron dos cambios la semana pasada, ambos parecen exhibir el problema).
El servidor ejecuta Sql Server 2008 SP3 x64 en Windows 2008 R2 Datacenter edition.
¿Que esta pasando? Como DBA, ¿qué podría hacer o dónde podría buscar para resolver esto?
fuente
EXECUTE AS
ySELECT SUSER_NAME()
pruebe. Además, ¿has probadoSUSER_SNAME()
alguna de las otras 100 variaciones?SUSER_SNAME()
, debería arreglarse en ese punto. Luego puede intentar soltar el inicio de sesión y ver si conserva el nuevo nombre.ipconfig /flushdns
yipconfig /registerdns
desde una línea de comandos para ver si eso soluciona el problema.Respuestas:
¿Podría esto estar relacionado con el almacenamiento en caché con Kerberos? (aunque solo una suposición podría no estar relacionada) http://blogs.technet.com/b/tspring/archive/2014/06/23/viewing-and-purging-cached-kerberos-tickets.aspx
fuente