¿Qué se puede hacer, en todo caso, cuando el guest
usuario 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?
sql-server
sql-server-2005
JustinStolle
fuente
fuente
0x3C2E66759FFBC14F84127D6795C27FD3
lugar de0x00
Terminating this procedure. 'guest' is a forbidden value for the login name parameter in this procedure.
Respuestas:
El usuario "invitado" nunca se asigna a un inicio de sesión del servidor, incluso en una instalación nueva se clasifica como un usuario SQL sin un inicio de sesión. Como solo puede establecer el SID de un inicio de sesión (después de la creación), y no un usuario, no creo que esto sea posible; sp_change_users_login no funciona precisamente porque la cuenta de invitado nunca debe asignarse a un inicio de sesión del servidor. Como resultado, el usuario "invitado" siempre es un usuario huérfano. Probablemente no sea la respuesta que querías :)
fuente
sp_change_users_login
informe?Mis pensamientos ... La razón
sp_change_users_login
es arrojar ese error porque MS también lo escribió. [Revisar el código de procedimiento del sistema de vez en cuando puede ser divertido. :)] Sin embargo, el hecho de que aparezca cuando se ejecuta el informe indica que alguien / algún proceso se equivocó con la cuenta, o una posible solución de MS podría haberlo hecho (nunca se sabe).Se supone que la cuenta de invitado está allí, existe en cada base de datos que se crea, ya que la cuenta existe en el modelo de forma predeterminada. Hacer que no aparezca en el informe probablemente requeriría que el SID volviera a cambiar
0x00
, supongo. Mientras la cuenta esté deshabilitada, la dejaría sola y la ignoraría. Si realmente me molestara, gastaría el dinero y llamaría con el soporte de Microsoft.fuente
guest
aparece en los resultados en este caso.Así que hay una secuencia de tareas que debes seguir
Pongo un ejemplo aquí, espero que ayude:
fuente
guest
usuario. Ver la respuesta anterior por Mr.Brownstone.