2017-11-20 2 views
0

나는 다른 것들 사이베이스 A의 저장 프로 시저 X크로스 데이터베이스 보조금

X를 가지고, 업데이트 테이블 Y 데이터베이스 B에서 내가 할 때 사용자 1 만 사용자 1에 X에서 실행 부여한

X를 호출하면 다음 오류가 표시됩니다.

The UPDATE permission was denied on the object 'Y', database 'B', schema 'dbo'. 

어떻게하면 User1에 대한 업데이트 권한을 올바르게 부여 할 수 있습니까? 사용자 Y에게 테이블 Y에 삽입/업데이트/삭제 권한을 직접 부여하고 싶지 않습니다.

답변

2

모든 개체가 동일한 소유자 (dbo)이고 데이터베이스 소유자가 동일한 경우 데이터베이스 간 소유권 체인을 사용하는 것이 좋습니다 즉, 두 데이터베이스 모두에 대해 수행해야합니다.

ALTER DATABASE A SET DB_CHAINING ON; 
ALTER DATABASE B SET DB_CHAINING ON; 

링크 : Enabling Cross-Database Access in SQL Server.

User1은 두 번째 데이터베이스에 매핑되어야합니다.

+0

답장을 보내 주셔서 감사합니다. SQL Server 전문가와는 거리가 멀어서 당신이 말하는 몇 가지 점을 명확히 할 수 있습니까? 두 데이터베이스의 테이블은 모두 X.dbo와 Y.dbo입니다. dbo 부분의 중요성에 대한 나의 이해는 항상 나를 피했습니다. 그게 당신의 요구 사항을 만족합니까? –

+0

proc와 두 테이블 모두 dbo 스키마 (A.dbo.my_sp, B.dbo.Y)에 있고 다른 사용자가 직접 smth else에 대한 권한을 변경하지 않은 경우 모든 개체의 소유자 (dbo)가 동일합니다. 또한 데이터베이스 소유자가 동일한 지 확인하고 두 데이터베이스 모두 DB_CHAINING을 활성화해야합니다. – sepupic

+0

OK. 감사. 나는 지금 그것을 가지고 있다고 생각한다. –

관련 문제