반응형
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('테이블명')
반응형
'Programming > MSSQL' 카테고리의 다른 글
MSSQL 백업파일로 DB 복원하기 (0) | 2018.07.17 |
---|---|
클러스터드 인덱스 DROP 후 RECREATE 하기 (0) | 2018.07.16 |
MSSQL 랜덤 패스워드 생성하기(난수형태 비밀번호 만들기) (0) | 2018.05.18 |
MSSQL 인덱스 조각화 확인 및 해결책(DBCC SHOWCONTIG, ALTER INDEX REBUILD) (0) | 2018.04.28 |
MSSQL 인덱스 생성 CREATE INDEX (CLUSTRED, NONCLUSTRED, INCLUDED, FILTERED INDEX) (122) | 2018.04.25 |