2007~2011/SQL Server2009. 7. 15. 00:01
SQL Server 2005 환경에 SQL Server 2000 에서 제공하는 샘플 데이터베이스인 pubs 를 attach 하였습니다. 그리고 uglybetty 라는 계정을 생성하고 pubs 데이터베이스에서 db_datareader role을 부여하였습니다. 하지만 현재 설정으로는 저장 프로시저를 사용할 수 있는 권한이 없습니다. 뭐가 또 부족한 것일까요? 맞혀보세요... ㅡ.ㅡ;;


[환경]
SQL Server 2005 SP3


[현상]
SSMS 를 사용하여 uglybetty 사용자로 로그인 한 뒤 pubs 데이터베이스를 조회하는데 아래 그림과 같이 저장 프로시저 항목이 나타나지 않는 현상이 발생합니다.



직접 쿼리를 수행할 경우 아래와 같은 오류가 발생합니다.

메시지 229, 수준 14, 상태 5, 프로시저 reptq1, 줄 1
개체 'reptq1', 데이터베이스 'pubs', 스키마 'dbo'에 대한 EXECUTE 사용 권한이 거부되었습니다.


[원인]
pubs 데이터베이스에 대해서 uglybetty 계정의 유효 사용 권한은 CONNECT, SELECT 입니다. 저장 프로시저를 실행할 수 있는 EXECUTE 권한이 부여되어 있지 않습니다.


[해결방안]
저장 프로시저를 사용하기 위해서는 아래와 같이 execute 권한을 부여해야 합니다. 이 권한을 부여하면 저장 프로시저 실행이 가능하며 SSMS 에서도 저장 프로시저 목록을 볼 수 있습니다.

use [pubs]
GO
GRANT EXECUTE TO [uglybetty]
GO


[분석결과]
pubs 데이터베이스의 속성 - 사용권한 - 유효 사용 권한을 확인하니 CONNECT, SELECT 권한만 부여되어 있는 것을 확인할 수 있습니다.



[참고자료]
GRANT Object Permissions (Transact-SQL)
http://msdn.microsoft.com/en-us/library/ms188371.aspx


작성자 : Lai Go / 작성일자 : 2009.07.14
Posted by Lai Go