소유권 체인으로 인해 발생하지 않는 것으로 생각되는 중첩 된 뷰와 관련된 재미있는 권한 문제가 발생했습니다. 언급 된 모든 서버는 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를 통해 직접 쿼리 할 수있는 이유를 모르지만 저장 프로 시저가 실패합니다.
아이디어가 있으십니까?
을 수행하면 SQL Server 관리 스튜디오에서 또는 응용 프로그램에서와 SP를 호출 당신은 아마 다음과 같은 일을 실행해야합니다. 관리 스튜디오를 통해 – Habibillah
명확히하기 위해 편집 됨. – Shock