[asp.net] 사용자 정의 테이블 유형에서 EXECUTE 권한이 거부 되었습니까?
SQL Server 2008의 사용자 정의 테이블 유형 에 대한 질문이 있습니다 .
ASP.NET 응용 프로그램 중 하나가 필요한 경우 저장 프로 시저에서 매개 변수로 사용하기 위해 SQL Server 2008에서 자체 테이블 유형을 정의했습니다 (ASP.NET 응용 프로그램에서 sql 명령을 실행할 때 저장 프로 시저의 매개 변수로 DataTable 개체를 전달합니다). 예를 보려면 여기를 참조하십시오 )
문제는 ASP.NET에서 Sql 명령 (저장 프로 시저 실행)을 실행할 때 오류가 발생한다는 것입니다.
개체 ‘ourTableType’, 데이터베이스 ‘ourDatabase’, 스키마 ‘ourSchema’에서 EXECUTE 권한이 거부되었습니다.
왜 이렇게이다? 사용자 정의 테이블 유형에 대한 권한을 설정해야하는 이유는 무엇입니까? 사용하는 저장 프로 시저에만 사용 권한을 설정하는 것만으로는 충분하지 않은 이유는 무엇입니까? 우리는 상관없이, 왜이없는 무엇을 설정하지해야하는 경우 그리고 EXECUTE
어떠한 속성 창에서 설정에 대한 권한 유형 (I에서만 볼 수있는 Control
, References
, Take Ownership
, View Definition
)?
내가 이해하지 못하는 것은 Control
속성 창에서 권한을 설정 하면 문제가 해결되고 저장 프로 시저가 문제없이 실행 된다는 것입니다.
답변
질문이 거의 4 개월이 되었으니 지금까지이 문제를 해결 하셨기를 바랍니다.하지만 그렇지 않은 경우 여기에 답이 있습니다.
GRANT EXEC ON TYPE::[schema].[typename] TO [User]
GO
답변
저장 프로 시저가 동적 SQL을 사용하는 경우 ( @sql
이 생성 된 다음를 통해 실행 됨) exec @sql
기본 테이블에 부여 된 권한이 필요합니다.
한 가지 해결 방법은 저장 프로 시저를 수정하여 다른 사용자로 실행하는 것 입니다. SELF로 실행하면 저장된 proc의 작성자 아래에서 실행되므로 매우 위험합니다. 그래도 다른 옵션이없는 경우 :
CREATE PROCEDURE dbo.usp_Demo
WITH EXECUTE AS SELF