Utworzyłem dwie nowe grupy AD i dodałem je jako użytkowników bazy danych, ale są one oznaczone symbolem RED X. Co to oznacza? Dzięki.
źródło
Utworzyłem dwie nowe grupy AD i dodałem je jako użytkowników bazy danych, ale są one oznaczone symbolem RED X. Co to oznacza? Dzięki.
Nie oznacza to, że użytkownik jest wyłączony (możesz tylko wyłączyć logowanie ), oznacza to, że użytkownik nie ma uprawnień do łączenia się z bazą danych. Nie jestem pewien, jak dokładnie utworzono użytkowników, ale najłatwiejszym sposobem na wykazanie tego jest:
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!
(Może być konieczne odświeżenie Eksploratora obiektów między GO
poleceniami, ponieważ, cóż, buforowanie).
Aby to naprawić (zakładając, że faktycznie chcesz, aby mogły łączyć się z bazą danych):
GRANT CONNECT TO [DomainName\BI360Consultants];
GRANT CONNECT TO [DomainName\BI360Users];
Z pewnością będziesz musiał zastosować więcej uprawnień w zależności od tego, czego potrzebujesz, aby móc to zrobić w bazie danych.
Mogą istnieć inne, bardziej niejasne sposoby wejścia w ten stan (np. Dodanie grupy domen do roli w bazie danych bez dodawania użytkownika, jak opisano w odpowiedzi Michaela ). Chociaż będę szczery, kiedy próbowałem zrobić to, co zrobił OP, stary lub właściwy sposób, nie byłem w stanie dodać grupy domen do roli bez obecności użytkownika:
-- the old way
EXEC sys.sp_addrolemember N'db_datareader', N'[CAKE\MyGroup]';
Msg 15410, poziom 11, stan 1, procedura sp_addrolemember
Użytkownik lub rola „[CAKE \ MyGroup]” nie istnieje w tej bazie danych.
-- the right way
ALTER ROLE db_datareader ADD MEMBER [CAKE\MyGroup];
Msg 15151, poziom 16, stan 1
Nie można dodać głównej „CAKE \ MyGroup”, ponieważ nie istnieje lub nie masz uprawnień.
Oczywiście z tym wynikiem nie widziałem żadnego takiego użytkownika w sysusers
(przestarzałe; przestań go używać) lub sys.database_principals
. Gdybym jednak to zrobił (dzięki odpowiedzi sepupika ):
GRANT SELECT ON dbo.SomeTable TO [CAKE\MyGroup];
Następnie użytkownik pojawił się w tych widokach i pojawił się jako użytkownik w Eksploratorze obiektów z powodu czerwonego x z powodu HAS_DBACCESS() = 0
. Co wciąż oznacza mniej więcej to samo: „nie można uzyskać dostępu do bazy danych”. Więc jeśli powyższe GRANT CONNECT
nie działa (w moim przypadku pozbyłem się czerwonego x, ale nie próbowałem faktycznie zapytać bazy danych jako tego konta), spróbuj również wykonać następujące czynności, wiedząc, że może się nie powieść:
CREATE USER [DOMAIN\Group] FROM LOGIN [DOMAIN\Group];
W moim przypadku udzielenie połączenia z tym użytkownikiem uniemożliwiło mi uruchomienie CREATE USER
polecenia:
Msg 15023, poziom 16, stan 1, wiersz 16
Użytkownik, grupa lub rola „CAKE \ MyGroup” już istnieje w bieżącej bazie danych.
Ten stan zawsze będzie prawdziwy dla guest
/ INFORMATION_SCHEMA
/ sys
- z wyjątkiem konta gościa w niektórych systemowych bazach danych. Zignoruj to i zostaw ich w spokoju.
Chcę jedynie uzupełnić odpowiedź Aarona Bertranda dotyczącą tego:
Może się to zdarzyć w przypadku
Windows
zleceniodawców tylko w następujący sposób:Windows
login istnieje na poziomie serwera, ale nie jest mapowany na bazę danych, o której mowa, ktoś decyduje ogrant
/deny
pozwoleniu na tę nazwę systemu Windows na poziomie bazy danych. W takim przypadku odpowiedni użytkownik / schemat zostanie utworzony w bazie danych, a wiersz z tymgrant
/deny
zostanie zapisany wsys.database_permissions
. Nie da to żadnego dostępu do tej bazy danych, ponieważ nowo utworzony użytkownik nadal traciconnect
uprawnienia, a zobaczysz go w OE z czerwoną strzałką.źródło
Chyba zrozumiałem, dlaczego tak się stało.
Scenariusz:
Domena \ BI360Users to grupa AD
Domena \ BI360Users jest dodawana jako login do serwera (ma uprawnienia do łączenia)
Domena \ BI360Users NIE istnieje jako użytkownik bazy danych
Wykonuję następujące czynności:
Ukończony pomyślnie.
Odśwież: Pojawia się CZERWONA litera „x”.
Użytkownik NIE jest mapowany do bazy danych:
Jeśli teraz utworzę użytkownika:
Znika czerwony „x”:
Wygląda więc na to, że nie było użytkownika, mimo że ekran wyraźnie pokazał go powyżej.
Oto informacje od sysusers:
źródło
GRANT CONNECT
, jak sugerowała moja pierwotna odpowiedź, powinien był rozwiązać problem.Miałem ten sam problem. Naprawiłem to, zmieniając status „Login” na „Enabled” w sekcji Status właściwości użytkownika w sekcji „Bezpieczeństwo / Logowanie” mojej bazy danych serwera SQL
czerwony znak zniknął po zmianie tego statusu.
źródło
Czerwony X oznacza, że logowania są wyłączone w / w SQL Server
źródło