시스템 테이블에서 선택할 수있는 권한 부여


14

데이터베이스 Microsoft SQL Server 2008 r2가 있습니다. 기본 데이터베이스의 테이블에 액세스 할 수있는 marie라는 사용자가 정의됩니다. 이것은 잘 작동합니다. 이제 marie가이 쿼리를 수행 할 수 있기를 바랍니다.

SELECT resource_type,spid,login_time,status,hostname,program_name,nt_domain,nt_username,loginame
  FROM sys.dm_tran_locks dl
  JOIN sys.sysprocesses sp on dl.request_session_id = sp.spid

관련된 테이블은 마스터 테이블입니다. 마리에게 그들에게서 읽을 수있는 권한을 어떻게 부여합니까? 이미 dbo로 다음을 실행하려고했습니다.

GRANT ALL on sys.dm_tran_locks TO marie
GRANT ALL on sys.sysprocesses TO marie

여전히 marie가 위의 쿼리를 수행하려고 할 때 오류는 다음과 같습니다.

Msg 297, Level 16, State 1, Line 1
The user does not have permission to perform this action.

내가 도대체 ​​뭘 잘못하고있는 겁니까?


또한 사용한다 sys.dm_exec_requests, sys.dm_exec_sessions등은, sysprocesses이전 버전과의 호환성보기이며, 어떤 시점에서 제품에서 제거됩니다.
Aaron Bertrand

답변:


25

시스템보기는 인스턴스 너비이므로보기 위해 약간 높은 상태가 필요합니다. 당신은 이것을 원할 것 GRANT VIEW SERVER STATE입니다 :

GRANT VIEW SERVER STATE TO marie;


@a_horse_with_no_name 감사합니다. :) 링크가 답변에 추가되었습니다.
Mike Fal

이것은 Azure SQL db에서 지원되지 않습니다. 여기에서 동등한 것을 어떻게 달성합니까?
초에 tommed

1
시도하십시오 GRANT VIEW DATABASE STATE.
Mike Fal

아래의 일부 테이블 sys은과 같은 단일 데이터베이스의 선택 권한으로 만 선택할 수 sys.indexes있습니다.
John
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.