데이터베이스 사용자의 RED X는 무엇을 의미합니까?


16

여기에 이미지 설명을 입력하십시오

두 개의 새 AD 그룹을 만들어 데이터베이스 사용자로 추가했지만 RED X와 함께 표시됩니다. 이것은 무엇을 의미합니까? 감사.

답변:


21

사용자가 비활성화 된 것은 아니며 ( 로그인 만 비활성화 할 수 있음 ) 사용자에게 데이터베이스에 대한 연결 권한이 없음을 의미합니다. 사용자가 어떻게 만들어 졌는지 확실하지 않지만이를 가장 쉽게 보여주는 방법은 다음과 같습니다.

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!

GO캐싱 때문에 명령 간에 개체 탐색기를 새로 고쳐야 할 수도 있습니다 .

수정하려면 (실제로 데이터베이스에 연결할 수 있기를 원한다고 가정) :

GRANT CONNECT TO [DomainName\BI360Consultants];
GRANT CONNECT TO [DomainName\BI360Users];

데이터베이스에서 수행 할 수있는 작업에 따라 더 많은 권한을 적용해야합니다.

이 상태에 들어가는 더 모호한 다른 방법이있을 수도 있습니다 (예 : MichaelK의 답변에 설명 된대로 실제로 사용자를 추가하지 않고 데이터베이스의 역할에 도메인 그룹 추가 ). 솔직히 말하지만 OP가 한 일, 오래된 방법 또는 올바른 방법을 시도했을 때 사용자가없는 도메인 그룹을 역할에 추가 할 수 없었습니다.

-- the old way
EXEC sys.sp_addrolemember N'db_datareader', N'[CAKE\MyGroup]';

메시지 15410, 수준 11, 상태 1, 프로 시저 sp_addrolemember
사용자 또는 역할 '[CAKE \ MyGroup]'이이 데이터베이스에 없습니다.

-- the right way
ALTER ROLE db_datareader ADD MEMBER [CAKE\MyGroup];

메시지 15151, 수준 16, 상태 1
'CAKE \ MyGroup'보안 주체가 없거나 권한이 없기 때문에 주체를 추가 할 수 없습니다.

물론이 결과로 나는 그런 사용자를 보지 못 sysusers했거나 (더 이상 사용하지 않습니다.) 사용 하지 않았습니다 sys.database_principals. 그러나 내가 이것을했다면 ( sepupic의 답변 덕분에 ) :

GRANT SELECT ON dbo.SomeTable TO [CAKE\MyGroup];

그런 다음 사용자가 해당보기에 표시되었고으로 인해 Object Explorer에 빨간색 x가있는 사용자로 표시되었습니다 HAS_DBACCESS() = 0. "데이터베이스에 액세스 할 수 없습니다." 따라서 위의 방법으로 GRANT CONNECT작동하지 않는 경우 (내 경우에는 빨간색 x를 제거했지만 실제로 데이터베이스를 해당 계정으로 쿼리하려고 시도하지 않았습니다) 실패하면 다음을 시도하십시오.

CREATE USER [DOMAIN\Group] FROM LOGIN [DOMAIN\Group];

필자의 경우이 사용자에게 연결 권한을 부여하면 CREATE USER명령 을 실행하지 못했습니다 .

메시지 15023, 수준 16, 상태 1, 줄 16
사용자, 그룹 또는 'CAKE \ MyGroup'역할이 현재 데이터베이스에 이미 있습니다.

이 상태는 특정 시스템 데이터베이스의 게스트 계정을 제외하고 항상 guest/ INFORMATION_SCHEMA/ sys-에 해당됩니다. 이를 무시하고 그대로 두십시오.


에서 주제 :sp_addrolemember

여기에 이미지 설명을 입력하십시오

에서 주제 :sys.sysusers

여기에 이미지 설명을 입력하십시오


이것은 나를 위해 그것을 고쳤다. 그러나 다른 근본적인 문제가 있어야합니다. 사용자는 스크립트를 통해 작성되며 여러 데이터베이스에 액세스 할 수 있습니다. 한 DB의 한 사용자 만 명시적인 "CONNECT"권한을 부여해야했습니다.
Morvael

5

나는 이것을 지키는 Aaron Bertrand의 대답에 덧붙여서하고 싶다.

이는 사용자에게 데이터베이스에 대한 연결 권한이 없음을 의미합니다 (사용자를 비활성화 할 수없고 로그인 만 가능함). 사용자가 어떻게 생성 되었는지 정확히 모르겠습니다 ...

이는 Windows다음과 같은 방식으로 만 주체에서 발생할 수 있습니다 .

Windows로그인 서버 수준에서 존재하지만 해당 데이터베이스에 매핑되지 않은, 사람에 결정 grant/ deny데이터베이스 수준에서이 윈도우 교장 일부 허가. 이 경우 해당 사용자 / 스키마가 데이터베이스에 작성되고이 grant/ deny가있는 행이에 기록됩니다 sys.database_permissions. 새로 만든 사용자가 여전히 connect권한을 놓치므로이 데이터베이스에 액세스 할 수 없으며 빨간색 화살표와 함께 OE에 표시됩니다.


고맙지 만 화살표가 아닌 RED 'x'에 대해 이야기하고 있습니다.
마이클 커크 패트릭

그것은 스튜디오 시각화의 문제이지만 같은 것입니다.
Sepupic

0

왜 그런 일이 일어 났는지 알았습니다.

대본:

Domain \ BI360Users는 AD 그룹입니다.

Domain \ BI360Users가 서버에 대한 로그인으로 추가되었습니다 (연결 권한이 있음)

Domain \ BI360Users가 데이터베이스 사용자로 존재하지 않습니다

나는 다음을한다 :

USE TEMPDB
GO
EXEC sp_addrolemember N'db_datareader', N'Doamin\BI360users'
GO

성공적으로 완료됩니다.

새로 고침 : 빨간색 'x'가 나타납니다.

여기에 이미지 설명을 입력하십시오

사용자가 데이터베이스에 맵핑되지 않았습니다. 여기에 이미지 설명을 입력하십시오

이제 사용자를 생성하면 :

USE TempDB
GO
CREATE USER [Domain\BI360Users] FOR LOGIN [DOMAIN\BI360Users]
GO

RED 'x'가 사라집니다. 여기에 이미지 설명을 입력하십시오

따라서 화면에 위의 내용이 명확하게 표시되어 있어도 사용자가없는 것 같습니다.

다음은 sysusers의 정보입니다. 여기에 이미지 설명을 입력하십시오


이것은 내가 말한 것이지만 Win 그룹을 데이터베이스 역할에 성공적으로 추가 한 후 "사용자가 데이터베이스에 매핑되지 않았습니다"라고 잘못 생각하고 있습니다. 동시에 해당하는 사용자와 스키마가 생성됩니다.
sepupic

1
도메인 그룹을 데이터베이스 역할에 추가하는 것 이외의 다른 작업을 수행해야합니다. 왜냐하면 일부 SQL Server 버전이 아닌 경우에는 작동하지 않기 때문입니다. 또한이 시나리오에서도 GRANT CONNECT원래의 대답에서 제안했듯이 문제를 해결했을 것입니다.
Aaron Bertrand

0

나는 같은 문제가 있었다. SQL Server 데이터베이스의 '보안 / 로그인'섹션에있는 사용자 속성의 상태 섹션에서 '로그인'상태를 '사용'으로 변경하여 수정했습니다. 여기에 이미지 설명을 입력하십시오

이 상태를 변경 한 후 빨간색 표시가 사라졌습니다.


-3

빨간색 X는 SQL Server에서 로그인이 비활성화되었음을 의미합니다.


감사. 그러나 그들은 가능합니다.
마이클 커크 패트릭

사용자를 비활성화 할 수 없습니다.
Aaron Bertrand

계정이 인스턴스 레벨의 로그인 폴더에 있습니까? 해당 데이터베이스에서 "로그인 [YourLogin]에 대한 사용자 [YourLogin] 작성"명령을 실행하는 경우. 빨간색 X가 사라져야합니다.
Goforebroke
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.