2015-01-12 6 views
-1

sysadmin 권한과 모든 데이터베이스에 대한 액세스 권한이있는 SQL 사용자 'ABC'를 보유하고 있으며 특정 서버의 데이터베이스 A와 데이터베이스 B를 말합니다. 내 응용 프로그램이 하나의 데이터베이스에만 액세스 할 수있는 사용자를 사용하는 곳 A. 데이터베이스 B의 테이블에 레코드를 삽입하는 저장 프로 시저를 만들었으므로 EXECUTE AS 절을 사용하여 ABC ​​사용자와 함께 저장 프로 시저를 실행하지만 테스트를 마친 후 찾았습니다. 내 응용 프로그램 사용자가 ABC의 용도와 정확히 동일한 서버 역할을 갖고 있지 않으면 작동하지 않습니다. 다른 사용자 sysadmin을 만들면 오류가 발생하지 않고 잘 작동합니다. 두 사용자가 동일한 역할을 수행해야하는 경우이 EXECUTE AS 절의 용도는 무엇입니까? 또는 나는 무엇인가 놓치고 있냐?SQL EXECUTE AS 절

+0

귀하의 SQL 코드를 게시하십시오. 코드가없는 상태에서 무엇이 잘못되었는지를 말하는 것은 불가능합니다. 어쩌면 권한 문제 일 수도 있지만 그렇지 않을 수도 있습니다. – Paolo

+0

파올로 문제는 절차 코드와 관련이 없으며 문제는 허가와 관련되어 있으며 허가 문제에 대해 분명히 묻습니다. – elmo

답변

0

난 당신이 이미 여기에 대한 답이 질문을 생각 : SQL Server Execute Impersonation

가 사용자로 실행 = 'ABC'가장의 --The 범위는 현재 데이터베이스로 제한됩니다.

VS

로그인으로 실행은 = 'ABC'의 가장 --The 범위는 서버 레벨로된다.

+0

로그인을 'ABC'로 실행 해 봅시다. 이 일이 나를 도와 주든 그렇지 않으면 당신을 업데이트 할 것입니다. – elmo

+0

login 프로 시저에 login = 'ABC'로 실행할 수 없습니다. 오류가 발생합니다. '로그인'근처에서 오류가 잘못되었습니다. 아래는 제 코드입니다. '부호'로그인 와 같이 실행 바꾼다 절차의 StoredProcedure - 표 (ID, NAME) 값 ('11', 'SAM') go'code '로 인서트로 @r 숯 (15)의 출력 – elmo