¿Qué se puede hacer, en todo caso, cuando el guestusuario especial queda huérfano (no está vinculado a ningún inicio de sesión)?
Para una de mis bases de datos (SQL Server 2005), ejecutar lo siguiente enumera al usuario invitado como un usuario huérfano.
exec sp_change_users_login 'report'
Resultados:
UserName UserSID
guest 0x3C2E66759FFBC14F84127D6795C27FD3
Si trato de arreglar el usuario invitado usando ese procedimiento, obtengo lo siguiente:
exec sp_change_users_login 'update_one', 'guest', 'guest'
Terminando este procedimiento. 'guest' es un valor prohibido para el parámetro de nombre de inicio de sesión en este procedimiento.
Si intento eliminar al usuario, obtengo:
El usuario 'invitado' no se puede descartar, solo se puede deshabilitar.
select * from sys.database_principals where name = 'guest'
Resultados en:
name guest
principal_id 2
type S
type_desc SQL_USER
default_schema_name guest
create_date 11/13/98 2:58 AM
modify_date 10/16/01 4:31 PM
owning_principal_id NULL
sid 0x3C2E66759FFBC14F84127D6795C27FD3
is_fixed_role 0
La base de datos parece estar confundida sobre si se trata de un usuario especial o no. ¿Hay algo que se pueda hacer?
Terminating this procedure. 'guest' is a forbidden value for the login name parameter in this procedure.
0x3C2E66759FFBC14F84127D6795C27FD3lugar de0x00