Creé dos nuevos grupos de AD y los agregué como usuarios de una base de datos, pero se muestran con una X ROJA. ¿Qué significa esto? Gracias.
fuente
Creé dos nuevos grupos de AD y los agregué como usuarios de una base de datos, pero se muestran con una X ROJA. ¿Qué significa esto? Gracias.
No significa que el usuario esté deshabilitado (solo puede deshabilitar inicios de sesión ), significa que el usuario no tiene privilegios de conexión a la base de datos. No estoy seguro exactamente cómo se crearon sus usuarios, pero la forma más fácil de demostrar esto es:
CREATE LOGIN u1 WITH PASSWORD = 'x', CHECK_POLICY = OFF;
GO
USE tempdb;
GO
CREATE USER u1 FROM LOGIN u1;
GO
ALTER LOGIN u1 DISABLE;
GO
-- u1 has no red x even though the login has been disabled
CREATE USER u2 WITHOUT LOGIN;
GO
-- check Object Explorer, u2 has no red x
DENY CONNECT TO u2;
GO
-- check Object Explorer, u2 now has a red x!
CREATE USER u3 WITHOUT LOGIN;
GO
-- check Object Explorer, u3 has no red x
REVOKE CONNECT FROM u3;
GO
-- check Object Explorer, u3 now has a red x!
(Es posible que deba actualizar Object Explorer entre GO
comandos porque, bueno, el almacenamiento en caché)
Para solucionarlo (suponiendo que realmente desea que puedan conectarse a la base de datos):
GRANT CONNECT TO [DomainName\BI360Consultants];
GRANT CONNECT TO [DomainName\BI360Users];
Seguramente necesitarás aplicar más permisos dependiendo de lo que necesites para poder hacer en la base de datos.
Puede haber otras formas más oscuras de entrar en este estado (por ejemplo, agregar un grupo de dominio a un rol en una base de datos sin agregar realmente un usuario, como se describe en la respuesta de MichaelK ). Aunque seré honesto, cuando intenté hacer lo que hizo el OP, de la manera anterior o correcta, no pude agregar el grupo de dominio a un rol sin un usuario presente:
-- the old way
EXEC sys.sp_addrolemember N'db_datareader', N'[CAKE\MyGroup]';
Mensaje 15410, Nivel 11, Estado 1, Procedimiento sp_addrolemember El
usuario o rol '[CAKE \ MyGroup]' no existe en esta base de datos.
-- the right way
ALTER ROLE db_datareader ADD MEMBER [CAKE\MyGroup];
Mensaje 15151, Nivel 16, Estado 1
No se puede agregar el principal 'CAKE \ MyGroup', porque no existe o no tiene permiso.
Por supuesto, con este resultado no vi a ningún usuario de este tipo sysusers
( en desuso; deje de usarlo) o sys.database_principals
. Sin embargo, si hice esto (gracias a la respuesta de Sepupic ):
GRANT SELECT ON dbo.SomeTable TO [CAKE\MyGroup];
Luego, el usuario apareció en esas vistas y apareció como usuario en Object Explorer con la x roja debido a HAS_DBACCESS() = 0
. Lo que aún equivale aproximadamente a lo mismo: "no se puede acceder a la base de datos". Entonces, si lo anterior GRANT CONNECT
no funciona (en mi caso, eso eliminó la x roja, pero no intenté realmente consultar la base de datos como esa cuenta), también intente lo siguiente, sabiendo que podría fallar:
CREATE USER [DOMAIN\Group] FROM LOGIN [DOMAIN\Group];
En mi caso, cuando concedí conectarme con este usuario, me impidió ejecutar el CREATE USER
comando:
El mensaje 15023, Nivel 16, Estado 1, Línea 16
Usuario, grupo o rol 'CAKE \ MyGroup' ya existe en la base de datos actual.
Este estado siempre será verdadero para guest
/ INFORMATION_SCHEMA
/ sys
- con la excepción de la cuenta de invitado en ciertas bases de datos del sistema. Ignora eso y déjalos en paz.
Desde el sp_addrolemember
tema :
Desde el sys.sysusers
tema :
Solo quiero hacer una adición a la respuesta de Aaron Bertrand con respecto a esta:
Esto puede suceder con los
Windows
principales solo de la siguiente manera:Windows
el inicio de sesión existe en el nivel del servidor pero no está asignado a la base de datos en cuestión, alguien decidegrant
/deny
algún permiso para este principal de Windows en el nivel de la base de datos. En este caso, el usuario / esquema correspondiente se creará en la base de datos y se escribirá en la fila con estegrant
/ . Esto no dará ningún acceso a esta base de datos porque el usuario recién creado aún pierde el permiso, y lo verá en el entorno operativo con la flecha roja.deny
sys.database_permissions
connect
fuente
Creo que descubrí por qué sucedió.
Guión:
Domain \ BI360Users es un grupo de AD
El dominio \ BI360Users se agrega como inicio de sesión en el servidor (tiene permisos de conexión)
El dominio \ BI360Users NO existe como usuario de una base de datos
Hago lo siguiente:
Completa con éxito.
Actualizar: aparece la 'x' ROJA.
El usuario NO está asignado a la base de datos:
Si ahora creo el usuario:
La 'x' ROJA desaparece:
Entonces, parece que no hubo ningún usuario a pesar de que la pantalla lo mostró claramente arriba.
Aquí está la información de sysusers:
fuente
GRANT CONNECT
, como sugirió mi respuesta original, debería haber resuelto el problema.Yo tuve el mismo problema. Lo arreglé cambiando el estado 'Iniciar sesión' a 'Activado' en la sección Estado de la propiedad del usuario en la sección 'Seguridad / Inicio de sesión' de mi base de datos del servidor SQL
la marca roja desapareció después de cambiar este estado.
fuente
La X roja significa que los inicios de sesión están deshabilitados con SQL Server
fuente