안녕하세요.
SQL2008 프로시져 계정 권한문제에 대해서 도움 구합니다.
환경 : windows 2003 Ent / mssql 2008 stn
프로시져를 생성해서 권한 주는 문제에 대해 질문입니다.
다른 데이타베이스의 프로시져 실행이 안되고 있습니다.
1) DB 생성 및 테이블 생성
- DB : 'A' , 'B' : 같은 기본 인스턴스에 존재
- 테이블 : A DB - TB_A
B DB - TB_B
2) 로그인계정 생성
- '가' / 역할(public)
- create login 가
with Password = '가가가가',
default_database = [A];
go
3) 사용자 계정 생성
- A DB에 '가' 사용자 계정 생성
- use A
go
Create User 가 for LOGIN 가
go
4) proc 생성
- use A
go
create proc usp_test
as
begin
select count(*) from B.dbo.TB_B
end
5) Proc 실행권한 생성
- use A
go
Grant Execute on usp_test to [가];
위와 같이 작업을 하고 '가' 계정으로 로그인을 해서 usp_test 를 실행 시켰더니 아래와 같은 에러 메세지가 발생되었습니다.
개체 'TB_B', 데이터베이스 'B', 스키마 'dbo'에 대한 SELECT 권한이 거부되었습니다.
그래서 일단 급한대로 아래와 같이 해결은 보았습니다.
ㅎㅐ결)
1) B 디비의 TB_B 테이블에 '가' 사용자 계정 생성 및 select 권한 생성
- use B
go
Create User 가 for LOGIN 가
go
- use B
go
Grant select On TB_B to 가
go
위와 같이 1차적으로 실행은 되게 해놓았습니다.
요지는 A디비의 usp_test 프로시져로 다른디비의 특정테이블 Select를 할때 따로 Grant select on....을 꼭 해주어야 하냐는 것입니다.
위와 같은 해결 방법외에는 다른 해결방안이 없는것인가요.
제가 너무 두서없이 질문한것 같기도 하고...고수님들 소중한 답변 부탁드립니다.
Comment 1
-
김동인_278615
2014.06.19 15:14
검색을 다시 해보니
http://www.sqler.com/485639#comment_485826
강동운님 답변으로 보아 제가 해결한 방법과 동일 하더군요.ㅠㅠ
다른 방법이 없는듯 합니다...