다음을 통해 공유


MSSQLSERVER_916

적용 대상: SQL Server

세부 정보

attribute
제품 이름 SQL Server
이벤트 ID 916
이벤트 원본 MSSQLSERVER
구성 요소 SQLEngine
심볼 이름 NOTUSER
메시지 텍스트 서버 보안 주체 "%.*ls"이(가) 현재 보안 컨텍스트에서 데이터베이스 "%.*ls"에 액세스할 수 없습니다.

설명

해당 로그인에는 명명된 데이터베이스에 연결할 수 있는 권한이 없습니다. 이 SQL Server 인스턴스에 연결할 수 있지만 데이터베이스에 특정 권한이 없는 로그인은 게스트 사용자의 권한을 받습니다. 이는 한 데이터베이스의 사용자가 권한이 없는 다른 데이터베이스에 연결하지 못하도록 하는 보안 조치입니다. 이 오류 메시지는 게스트 사용자에게 명명된 데이터베이스에 대한 CONNECT 권한이 없으며 신뢰할 수 있는 속성이 설정되지 않은 경우에 발생할 수 있습니다. 이 오류 메시지는 게스트 사용자에게 명명된 데이터베이스에 대한 CONNECT 권한이 없는 경우에 발생할 수 있습니다.

msdb 데이터베이스에 대한 CONNECT 권한이 거부되거나 해지되면 개체 탐색기 각 데이터베이스의 정책 기반 관리 상태를 표시하려고 할 때 SQL Server Management Studio에서 이 오류를 받을 수 있습니다. 개체 탐색기가 현재 로그인의 권한을 사용하여 msdb 데이터베이스에서 해당 정보를 쿼리하면 오류가 발생합니다. 다음 오류 메시지도 발생합니다.

이 요청에 대한 데이터를 검색하지 못했습니다. (Microsoft.SqlServer.Management.Sdk.Sfc)

사용자 작업

Warning

이 보안 조치를 우회하기 전에 다양한 데이터베이스에서 인증된 사용자를 명확하게 이해해야 합니다. 다음 방법을 사용하면 한 데이터베이스에 권한이 있는 사용자가 악의적인 사용자에게 데이터를 노출할 수 있는 다른 데이터베이스에 연결할 수 있습니다. 포함된 데이터베이스를 사용하도록 설정하면 다음 단계를 통해 한 데이터베이스의 데이터베이스 소유자가 SQL Server 인스턴스의 다른 데이터베이스에 대한 액세스 권한을 부여할 수 있습니다.

다음 방법 중 하나로 데이터베이스에 연결할 수 있습니다.

  • 명명된 데이터베이스에 대한 특정 로그인 액세스 권한을 부여합니다. 다음 예제에서는 데이터베이스에 대한 로그인 Adventure-Works\Larry 액세스 권한을 부여합니다 msdb .

    USE msdb ;
    
    GO
    
    GRANT CONNECT TO [Adventure-Works\Larry] ;
    
  • 게스트 사용자의 오류 메시지에 명명된 데이터베이스에 CONNECT 권한을 부여합니다. 다음 예제에서는 사용자guestCONNECT 대한 데이터베이스에 msdb 권한을 부여합니다.

    USE msdb ;
    
    GO
    
    GRANT CONNECT TO guest ;
    
  • 사용자를 인증한 데이터베이스에 TRUSTWORTHY 속성을 사용하도록 설정합니다.

    ALTER DATABASE AdventureWorks SET TRUSTWORTHY ON;