사용자 정의 테이블 유형에서 EXECUTE 권한이 거부 되었습니까?


87

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속성 창에서 권한을 설정 하면 문제가 해결되고 저장 프로 시저가 문제없이 실행 된다는 것입니다.



감사합니다! 내가 검색하지만 명확하지 충분했습니다 /
야 네즈

AS dbo끝에 넣어보세요 . 이렇게 : GRANT EXEC ON TYPE::[schema].[typename] TO [User] AS dbo. 나를 위해 일했습니다.
조나단

답변:


198

질문이 거의 4 개월이 되었으니 지금까지이 문제를 해결 하셨기를 바랍니다.하지만 그렇지 않은 경우 여기에 답이 있습니다.

GRANT EXEC ON TYPE::[schema].[typename] TO [User]
GO

9
내 2 센트 : 연결 인증 메커니즘에 따라 공개 그룹에 exec를 부여해야 할 수도 있습니다. 따라서 귀하의 보조금은 다음과 같습니다. GRANT EXEC ON TYPE :: [schema]. [typename] TO [Public] GO
Sudhanshu Mishra

@dotnetguy 대단히 감사합니다. 어떤 솔루션도 저에게 효과가 없었습니다.
Mazen el Senih

3

저장 프로 시저가 동적 SQL을 사용하는 경우 ( @sql이 생성 된 다음를 통해 실행 됨) exec @sql기본 테이블에 부여 된 권한이 필요합니다.

한 가지 해결 방법은 저장 프로 시저를 수정하여 다른 사용자로 실행하는 것 입니다. SELF로 실행하면 저장된 proc의 작성자 아래에서 실행되므로 매우 위험합니다. 그래도 다른 옵션이없는 경우 :

CREATE PROCEDURE dbo.usp_Demo
WITH EXECUTE AS SELF

1
이것을 지적 해 주신 Thx. 그러나 저장 프로 시저에는 동적 SQL이 없습니다. INSERT INTO이 사용자가 필요한 모든 권한을 가진 일반 및 "UPDATE"테이블 문만 있습니다. 또한이 사용자 / 로그인은이 ASP.NET 응용 프로그램이이 데이터베이스에 연결할 수 있고 저장 프로 시저 만 실행할 수 있도록 특별히 예약 / 작성됩니다 (작성 등이 아님, 작성자는 항상 'sa').
Janez 2011-07-29

고마워, 그게 문제였다. 이 문제가있는 다른 독자 는 더 많은 팁을 위해 동적 SQL사용하는 Stored Procs의 SQL Server 권한을 참조 할 수 있습니다 .
Nickolay
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.