2 개의 스키마가 있으며 첫 번째 스키마의 개체 중 하나는 다른 스키마의 개체에 액세스해야합니다. 예 :다른 스키마에 액세스하는 개체가있는 스키마에 대한 사용 권한을 설정하는 방법은 무엇입니까?
CREATE VIEW I.ITest
AS
SELECT 1 as TestColumn
GO
CREATE VIEW O.OTest
AS
SELECT * FROM I.ITest
GO
EXEC ('SELECT * FROM O.OTest') AS USER = 'TestUser'
DROP VIEW O.OTest
DROP VIEW I.ITest
위의 예에서 TestUser는 'O'스키마에만 액세스 할 수 있습니다. 그래서 스스로 선택은 잘 작동하지만보기가 다른 스키마 '나'다음에서 선택을하고 있기 때문에 오류와 함께 실패합니다
The SELECT permission was denied on the object 'ITest', database 'MyDB', schema 'I'.
이 해결하기 위해 내가 액세스에 'O'스키마 권한을 부여 할 수 있습니다 'I'스키마가 있지만 올바르게 작동하지 않으며 스키마 권한을 건너 뜁니다.
수행 할 수있는 작업은 무엇입니까? 이 모든 일을 잘못하고 있니? 이 시나리오에서 가장 좋은 방법은 무엇입니까?
감사
UPDATE : 내 스키마가 서로 다른 DB의 역할에 의해 소유되었다 그래서 단순히 DBO에 모두의 소유자를 변경 한 후 스키마에 액세스 할 수있는 DB 역할 권한을 부여하여이 문제를 해결 얻었다. 이것은 소유자 dbo가 모든 것을 볼 수 있었고이 스키마를 통해서만 db 역할에만 특정 권한을 부여 할 수 있었고 나머지 db 개체는 사용할 수 없다는 것을 의미했습니다. 귀하의 도움에 감사드립니다
사용자 작성 명령문과 각 사용자가 속한 기본 스키마를 제공 할 수 있습니까? –
비아 관리 스튜디오에서 사용자를 만들었습니다. 즉, 스크립트를 통해서가 아닌 것이 중요합니까? – HAdes