2012-10-23 2 views
1

소유권 체인으로 인해 발생하지 않는 것으로 생각되는 중첩 된 뷰와 관련된 재미있는 권한 문제가 발생했습니다. 언급 된 모든 서버는 SQL Server 2008 R2입니다.연결된 서버를 통해 중첩 된 뷰에서 선택 권한이 거부 됨

특정 로그인 (예 : Bill)을 사용하도록 구성된 연결된 서버가 있습니다. 원격 서버에서 뷰를 가지고 있는데, ViewA이라고하고 다른 뷰에서 차례대로 선택해 보겠습니다. ViewB.

나는 잘 작동 연결된 서버를 통해 선택을 할 수 있습니다

SELECT * FROM [LINKEDSERVER].[DATABASE].[SCHEMA].[VIEWA] 

이 행복한 결과 집합, 아무 문제를 반환합니다.

이제 동일한보기에서 쿼리를 시도하는 저장 프로 시저가 있습니다. 동일한 연결 서버 인 Bill을 사용하고 있다는 것을 기억하십시오. 내가 다시 연결된 서버를 통해 ViewA를 조회 관리 스튜디오를 통해 저장 프로 시저를 EXECUTE

, 내가 얻을 :

SELECT 권한이 ViewB에 부인했다.

연결된 서버가 사용하고있는 로그인, 빌, View A에 명시 적으로 액세스 할 수있는 역할의 일부입니다. 두보기 모두 동일한 스키마의 일부이며 모든 개체는 dbo에서 소유합니다.

Bill이 명시 적으로 권한을 가지고있는 ViewA에 대해 불평하지 않고 있지만, 소유권 체인으로 인해 Bill에게 권리가 있어야한다는 점에 유의하십시오.

Bill Linked Server를 통해 직접 쿼리 할 수있는 이유를 모르지만 저장 프로 시저가 실패합니다.

아이디어가 있으십니까?

+0

을 수행하면 SQL Server 관리 스튜디오에서 또는 응용 프로그램에서와 SP를 호출 당신은 아마 다음과 같은 일을 실행해야합니다. 관리 스튜디오를 통해 – Habibillah

+0

명확히하기 위해 편집 됨. – Shock

답변

0

역할에 [ViewA] 중에서 선택할 권한이 있지만 저장 프로 시저에 대한 사용 권한을 확인하지 않았습니다. GRANT 문에

GRANT EXECUTE ON [InsertProcedureNameHere] TO [InsertRoleNameHere]; 

더 많은 정보는 여기에서 찾을 수 있습니다 : GRANT object

관련 문제