programing

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

linuxpc 2023. 4. 21. 20:17
반응형

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

SQL Server 2008의 사용자 정의 테이블 유형에 대한 질문이 있습니다.

ASP 중 하나가 필요한 경우NET 어플리케이션에서는 (ASP에서 sql 명령어를 실행할 때) 저장 프로시저의 파라미터로 사용하기 위해 SQL Server 2008에 자체 테이블 타입을 정의했습니다.NET 어플리케이션 스토어드 프로시저의 파라미터로 DataTable 객체를 전달합니다.를 들어 여기를 참조하십시오.)

문제는 ASP에서Sql 명령어(저장 프로시저 실행)를 실행할 때 발생합니다.NET 오류 발생:

개체 'ourTableType', 데이터베이스 'ourDatabase', 스키마 'ourSchema'에 대한 EXECUTE 권한이 거부되었습니다.

왜 그렇죠?사용자 정의 테이블 유형에 대한 권한을 설정해야 하는 이유는 무엇입니까?왜 그것을 사용하는 스토어드 프로시저에만 권한을 설정하는 것만으로는 불충분합니까?그리고 우리가 무슨 일이 있어도 설정해야 한다면, 왜 없는가?EXECUTE속성 창에서 설정할 권한 유형(표시만 가능)Control,References,Take Ownership,View Definition)?

또 이해할 수 없는 것은, 다음의 설정 허가입니다.ControlProperties 창에서 문제를 해결하고 저장 프로시저를 문제없이 실행합니다.

벌써 4개월이 다 되어 가는 질문이기 때문에, 이 문제를 해결하셨으면 합니다만, 아직 풀지 않은 경우는, 다음과 같습니다.

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

스토어드 프로시저가 dynamic sql을 사용하는 경우, 즉@sql를 통해 생성 및 실행됩니다.exec @sql기본 테이블에 대한 권한이 필요합니다.

회피책 중 하나는 스토어드 프로시저를 변경하여 다른 사용자로 실행하는 것입니다.SELF로 실행시키면 저장된 proc의 작성자 아래에서 실행되므로 매우 위험합니다.그래도 다른 옵션이 없는 경우:

CREATE PROCEDURE dbo.usp_Demo
WITH EXECUTE AS SELF

SSMS에서 "검색" 버튼을 클릭하기 전에 "스키마 권한 보기" 링크를 클릭해야 합니다.

언급URL : https://stackoverflow.com/questions/6870320/the-execute-permission-is-denied-on-the-user-defined-table-types

반응형