[sql-server] 개체 ‘xxxxxxx’, 데이터베이스 ‘zzzzzzz’, 스키마 ‘dbo’에 대한 EXECUTE 권한이 거부되었습니다.

함수를 실행하는 데 문제가 있습니다.

내가 한 일은 다음과 같습니다.

  1. SQL Server Management Studio를 사용하여 함수를 만듭니다. 성공적으로 작성되었습니다.
  2. 그런 다음 새로 생성 된 기능을 실행하려고 시도했으며 여기에 내가 얻은 것이 있습니다.

개체 ‘xxxxxxx’, 데이터베이스 ‘zzzzzzz’, 스키마 ‘dbo’에 대한 EXECUTE 권한이 거부되었습니다.



답변

해당 저장 프로 시저에 대해 사용자 (또는 그룹이 속한 그룹)에 실행 권한을 부여해야하는 것처럼 들립니다.

예를 들어, 당신은 할 수 따라서 액세스 권한을 부여 :

USE zzzzzzz;
GRANT EXEC ON dbo.xxxxxxx TO PUBLIC


답변

내가 찾은 최고의 솔루션은 새로운 데이터베이스 역할을 만드는 것입니다.

CREATE ROLE db_executor;

그런 다음 해당 역할 실행 권한을 부여하십시오.

GRANT EXECUTE TO db_executor;

이제 사용자의 속성으로 이동하여 사용자 매핑으로 이동하여 새 역할을 추가 한 데이터베이스를 선택하면 다음에 대한 데이터베이스 역할 멤버 자격에 새 역할이 표시됩니다.

자세한 내용은 전체 기사를 읽으십시오


답변

Sql Server Management Studio에서 :

로 이동하십시오 security->schema->dbo.

dbo를 두 번 클릭 한 다음을 클릭 하고 사용 또는 제어 선택을 permission tab->(blue font)view database permission위한 "execute".도움말 과 같은 필수 필드를 자유롭게 스크롤 하십시오 . 이것이 도움이되기를 바랍니다 🙂grantdeny


답변

이런 식으로 실행해야합니다

GRANT Execute ON [dbo].fnc_whatEver TO [domain\user]


답변

사용자 또는 역할에 권한을 부여하려는 경우 작동합니다.

Microsoft SQL Server Management Studio 사용 :

  1. 이동 : 데이터베이스
  2. dbo.my_database를 마우스 오른쪽 버튼으로 클릭하십시오.
  3. 선택 : 속성
  4. 왼쪽 패널에서 다음을 클릭하십시오. 권한
  5. 이름 패널에서 사용자 또는 역할을 선택하십시오.
  6. 권한 및 확인 표시에서 실행 찾기 : Grant, With Grant 또는 Deny

답변

특히 웹 응용 프로그램에서 동일한 사용자 이름을 사용하는 경우 이러한 권한을 부여하는 것은 위험 할 수 있습니다.

이제 웹 사용자 (및 전 세계 웹)도 데이터베이스 내에서 객체를 생성하고 삭제할 수있는 권한이 있습니다. SQL 인젝션을 생각하십시오!

다음과 같이 지정된 객체의 특정 사용자에게만 실행 권한을 부여하는 것이 좋습니다.

grant execute on storedProcedureNameNoquotes to myusernameNoquotes

이제 사용자 myusernameNoquotes는 중요한 데이터에 대한 다른 불필요한 권한없이 storedProcedureNameNoquotes 프로 시저를 실행할 수 있습니다.


답변

실행할 권한이 있지만 실행할 권한이 없습니다.

자세한 내용은 GRANT 개체 권한 (Transact-SQL)을 참조하십시오.