본문 바로가기
Programming/MSSQL

MSSQL 테이블 권한 조회(확인)하고 GRANT 문 만들기

by 제타 2018. 6. 9.
반응형

MSSQL에서 테이블을 DROP 하고 다시 만들거나 테이블을 RENAME해야하는 경우가 있다.

예를 들어 운영중인 집계 테이블을 DROP하고 다시 만들어야할 때 신규 집계 테이블을 만들어놓고 기존의 테이블과 교체하는 형식이다.

이럴 때 기존 테이블에 걸려 있는 계정별 권한을 확인하고 신규 테이블에도 똑같이 권한을 줘야한다.


다음은 테이블에 권한을 확인하고 그 권한을 주는 GRANT문을 생성하는 쿼리이다.


SELECT 

    a.state_desc       collate Korean_Wansung_CS_AS + ' ' 

  + a.permission_name  collate Korean_Wansung_CS_AS + ' ON OBJECT::' 

  + b.name             collate Korean_Wansung_CS_AS + ' TO ' 

  + c.name             collate Korean_Wansung_CS_AS as GRANT_SQL

  , c.name, b.name, a.*

FROM sys.database_permissions a

JOIN sys.objects b ON a.major_id = b.object_id

JOIN sys.database_principals c ON a.grantee_principal_id = c.principal_id

WHERE a.major_id = object_id('테이블명')

반응형