[sql-server] 개체 ‘Users’, 데이터베이스 ‘XXX’, 스키마 ‘dbo’에 대한 SELECT 권한이 거부되었습니다.

SQL Server 2012에서 Azure로 데이터베이스를 이동했습니다. 사용자를 사용하고 싶지 않아 사용자 master를 만들었습니다 test. 이것은 Azure에서 데이터베이스 XXX에 대해 수행 한 작업입니다.

create user test from login test with default_schema=[dbo]
exec sp_addrolemember 'db_owner','test'

내가 확인한 결과 내가 관심있는 데이터베이스 개체는 모두 schema에 dbo있습니다. 테이블 Users은 스키마에 dbo있습니다.

내 웹 프로젝트의 연결 문자열 test은 로그인으로 사용됩니다. 다음과 같은 오류 메시지가 생성됩니다.

The SELECT permission was denied on the object 'Users', database 'XXX', schema 'dbo'

오류 메시지는 무엇을 의미하며 사용자 test가 데이터베이스 XXX에 액세스 할 수 있도록하려면 어떻게해야 합니까?



답변

문제는 사용자가 권한거부하는 것 입니다. 이 오류는 생성 한 사용자에게 데이터베이스의 테이블에 액세스 할 수있는 충분한 권한이 없을 때 발생합니다. 원하는 것을 얻으려면 사용자에게 권한을 부여하십시오.

해당 데이터베이스의 테이블에 대한 SELECT, INSERT, UPDATE 및 DELETE와 같은 사용자 별 권한을 부여 합니다.


답변

  1. SQL Management Studio 열기
  2. 데이터베이스 확장
  3. “보안”폴더를 확장합니다.
  4. “사용자”를 확장합니다.
  5. 사용자 (쿼리를 수행하려는 사용자)를 마우스 오른쪽 단추로 클릭하고 Properties 합니다.
  6. 페이지 선택 Membership .
  7. 선택을 취소했는지 확인하십시오.

    db_denydatareader

    db_denydatawriter

여기에 이미지 설명 입력

당연히 사용자에게 필요한 권한 만 부여해야합니다. 쉬운 게으른 수정은 db_owner내가 가진 것처럼 확인하는 것이지만 이것이 최상의 보안 관행은 아닙니다.


답변

특정 테이블에 대한 선택 권한을 부여하는 구문 :

USE YourDB;

GRANT SELECT ON dbo.functionName TO UserName;

데이터베이스의 모든 테이블에 대한 선택 권한을 부여하려면 다음을 수행하십시오.

USE YourDB;

GRANT SELECT TO UserName;


답변

이것이 제가 직면했을 때 문제를 해결할 수 있었던 방법입니다.

  1. SQL Management Studio를 시작합니다.
  2. ‘개체 탐색기’에서 서버 노드를 확장합니다.
  3. 데이터베이스 노드를 확장 한 다음 특정 사용자를 사용하여 액세스하려는 특정 데이터베이스를 확장합니다.
  4. 데이터베이스의 보안 노드 아래에서 사용자 노드를 확장합니다.
  5. 특정 사용자를 마우스 오른쪽 버튼으로 클릭하고 ‘속성’을 클릭하십시오. 대화 상자가 나타납니다.
  6. 사용자가 db_owner 그룹의 구성원인지 확인하고 (이 경로를 사용하기 전에 아래 설명을 읽으십시오)보기를 사용하여 기타 필요한 변경 사항을 확인하십시오. (나는 이것을 2016 년에 사용했습니다. 특정 대화 상자가 다른 버전에서 어떻게 보이는지 확실하지 않아서 구체적이지 않습니다)


답변

해당 사용자에 대한 권한 부여가 필요합니다.


답변

데이터베이스의 공간을 확인하십시오.이 오류는 데이터베이스에 주어진 공간에 비해 공간이 증가했을 때 발생합니다.


답변

SSMS를 사용하여 사용자에게 데이터베이스와 ReportServer 모두에 대한 연결 권한이 있는지 확인했습니다.

쿼리되는 특정 데이터베이스의 속성 아래에서 자격 증명을 매핑하고 데이터 리더 및 공용 권한을 활성화했습니다. 또한 다른 사람들이 언급했듯이 읽기 거부 / 쓰기 거부 상자가 선택되지 않았는지 확인했습니다.

선택 권한 만 있으면 되었기 때문에 보고서에 대해 db 소유권을 활성화하고 싶지 않았습니다.