...al intentar abrir una conexión con Management Studio, de manera local, utilizando una cuenta de dominio con privilegios de adminstrador en el servidor y sysadmin en SQL Server (BUILTIN\Administrator no había sido deshabilitado)
Lo curioso es que previamente no hubo problemas para conectar remotamente con esa misma cuenta.
En el log aparecía el siguiente error:
XXXX-XX-XX 00:00:00.00 Logon Error: 18456, Severity: 14, State: 11.
XXXX-XX-XX 00:00:00.00 Logon Login failed for user MYDOMAIN\MYLOGIN'. Reason: Token-based server access validation failed with an infrastructure error. Check for previous errors. [CLIENT: ]
Con SA pude conectarme y añadir directamente la mencionada cuenta de dominio como login de SQL server, lo cualo soluccionó el problema.
La razón de este problema es UAC, el nuevo sistema que Microsoft introduce para controlar las cuentas de usuario, el cual deshabilita la opción de, automáticamente, mapear un usuario adminstrador con un login sysadmin.
Otra solucción, por tanto, sería lanzar Management Studio encomo adminstrador o ejecutarlo de manera remota.
(Esta otra entrada da más información sobrelas causas más "normales" para el error 18456)
Mostrando entradas con la etiqueta error usuario. Mostrar todas las entradas
Mostrando entradas con la etiqueta error usuario. Mostrar todas las entradas
martes, 11 de enero de 2011
miércoles, 19 de marzo de 2008
Eliminar usuarios alias
Los alias en SQL sirven para mapear un usuario en una bbdd. A partir de la versión 7.0 se sustituyen por los ‘Roles’, pero se conservan por compatibilidad con versiones anteriores.
Si la bbdd se crea a partir de versiones anteriores (backups o sp_attach) os encontraréis que estos alias aparecen como usuarios huérfanos . Sin emabargo en el Enterprise Manager o Managment Studio no hay señal de ellos.
Un ejemplo de cómo aparecen en sysusers o sys.sysusers :
status 16
name \nombre
roles NULL
altuid 5
hasdbaccess 0
islogin 1
isntname 0
isntgroup 0
isntuser 0
issqluser 0
isaliased 1
issqlrole 0
isapprole 0
Si analizamos el procedimiento sp_addalias, vemos que status= 16 indica que el usuario es un alias.
-- INSERT SYSUSERS ROW --
insert into sysusers select
@newuid, @status | 16, @loginame, @sid, 0x00,
getdate(), getdate(), @targuid, NULL
La barra inclinada [\] es otro distintivo que SQL Server añade al crear un nuevo alias con el fin de evitar conflictos en names space :
- ALTER NAME TO AVOID CONFLICTS IN NAME SPACE --
select @loginame = '\' + @loginame
i se intenta elimiar el alias con sp_dropalias resulta el siguiente error:
Server: Msg 15401, Level 11, State 1, Procedure sp_dropalias, Line 49
Windows NT user or group '[\nombre]' not found. Check the name again.
Sp_helpuser ‘\nombre’ tambíen da error:
Server: Msg 15198, Level 16, State 1, Procedure sp_helpuser, Line 189
The name supplied ([\nombre ]) is not a user, role, or aliased login.
La causa es que el alias está huérfano; el/los usuario/s a los que estaba asociado no existen en la base de datos.
La solución es crear un nuevo usuario al que se le asignará el mismo sid :
sp_addlogin @loginame = 'test, @passwd = 'test', @sid = 0x sid del alias
Y ahora ya se puede eliminar el alias:
Sp_dropalias ‘\nombre’
Si la bbdd se crea a partir de versiones anteriores (backups o sp_attach) os encontraréis que estos alias aparecen como usuarios huérfanos . Sin emabargo en el Enterprise Manager o Managment Studio no hay señal de ellos.
Un ejemplo de cómo aparecen en sysusers o sys.sysusers :
status 16
name \nombre
roles NULL
altuid 5
hasdbaccess 0
islogin 1
isntname 0
isntgroup 0
isntuser 0
issqluser 0
isaliased 1
issqlrole 0
isapprole 0
Si analizamos el procedimiento sp_addalias, vemos que status= 16 indica que el usuario es un alias.
-- INSERT SYSUSERS ROW --
insert into sysusers select
@newuid, @status | 16, @loginame, @sid, 0x00,
getdate(), getdate(), @targuid, NULL
La barra inclinada [\] es otro distintivo que SQL Server añade al crear un nuevo alias con el fin de evitar conflictos en names space :
- ALTER NAME TO AVOID CONFLICTS IN NAME SPACE --
select @loginame = '\' + @loginame
i se intenta elimiar el alias con sp_dropalias resulta el siguiente error:
Server: Msg 15401, Level 11, State 1, Procedure sp_dropalias, Line 49
Windows NT user or group '[\nombre]' not found. Check the name again.
Sp_helpuser ‘\nombre’ tambíen da error:
Server: Msg 15198, Level 16, State 1, Procedure sp_helpuser, Line 189
The name supplied ([\nombre ]) is not a user, role, or aliased login.
La causa es que el alias está huérfano; el/los usuario/s a los que estaba asociado no existen en la base de datos.
La solución es crear un nuevo usuario al que se le asignará el mismo sid :
sp_addlogin @loginame = 'test, @passwd = 'test', @sid = 0x sid del alias
Y ahora ya se puede eliminar el alias:
Sp_dropalias ‘\nombre’
Etiquetas:
alias,
error usuario,
huérfanos,
Ms SQL Server,
sp_addalias
Suscribirse a:
Entradas (Atom)