SQL Server에서는 특정 데이터베이스에 사용자가 있으며 데이터베이스의 모든 비 시스템 뷰에만 액세스 권한을 부여하라는 요청을 받았습니다. 유형 뷰의 보안 가능 항목을 편집하고 각각에 대해 선택 권한을 부여하면이 작업을 수행 할 수 있다고 생각하지만 많은 뷰가 있습니다. 이것을 달성하는 더 효율적인 방법이 있습니까?
SQL Server에서는 특정 데이터베이스에 사용자가 있으며 데이터베이스의 모든 비 시스템 뷰에만 액세스 권한을 부여하라는 요청을 받았습니다. 유형 뷰의 보안 가능 항목을 편집하고 각각에 대해 선택 권한을 부여하면이 작업을 수행 할 수 있다고 생각하지만 많은 뷰가 있습니다. 이것을 달성하는 더 효율적인 방법이 있습니까?
답변:
다음 과 같은 구문 이 없습니다
GRANT SELECT ON ALL::Views TO SomeUser
당신은 할 수 있습니다 GRANT SELECT
개별 권한 개체 , 스키마 또는 전체 데이터베이스 에만 개체 유형에 의해 필터링하지만이 뷰를 포함한다. 이런 종류의 임시 작업의 경우 아마도라는 새 역할을 만들고 ViewReader
SSMS 실행에서 해당 역할에 사용자를 추가합니다.
SELECT 'GRANT SELECT ON ' +
QUOTENAME(SCHEMA_NAME(schema_id)) + '.' + QUOTENAME(name) +
' TO ViewReader;'
FROM sys.views
WHERE is_ms_shipped = 0
GRANT
필요한 권한 으로 실행할 스크립트를 생성합니다 .
EXEC
있지만 일회성 작업을 귀찮게하지는 않습니다.
내 경우에는 다른 접근 방식을 취했습니다. 이것이 내가 한 일입니다.
좋은 점은 새로운 사용자가 테이블에 액세스 할 수없고 테이블을 볼 수도 없다는 것입니다.
도움이 되길 바랍니다.