programing

저장된 모든 프로시저에 실행 권한 부여

lastcode 2023. 4. 27. 22:28
반응형

저장된 모든 프로시저에 실행 권한 부여

다음 명령은 데이터베이스에 저장된 모든 프로시저를 실행할 수 있는 권한을 "MyUser" 사용자에게 부여합니까?

GRANT EXECUTE TO [MyDomain\MyUser]

SQL Server 2008 이상:

/* CREATE A NEW ROLE */
CREATE ROLE db_executor

/* GRANT EXECUTE TO THE ROLE */
GRANT EXECUTE TO db_executor

역할이 아닌 사용자의 경우:

USE [DBName]
GO
GRANT EXECUTE TO [user]

SQL Server 2005에는 다음과 같이 데이터베이스 원칙에 데이터베이스 실행 권한을 부여하는 기능이 도입되었습니다.

GRANT EXECUTE TO [MyDomain\MyUser]

그러면 데이터베이스 범위에서 사용 권한이 부여되며, 모든 스키마에 저장된 모든 프로시저가 암시적으로 포함됩니다.즉, 저장 프로시저별로 사용 권한을 명시적으로 부여할 필요가 없습니다.

보다 세분화하려는 경우 스키마 실행 권한을 부여하여 제한할 수도 있습니다.

GRANT EXECUTE ON SCHEMA ::dbo TO [MyDomain\MyUser]

위의 답변 외에도 다음과 같은 내용이 추가됩니다.


대신 역할에 이 권한을 부여한 다음 사용자에게 역할을 할당할 수 있습니다.역할을 만들었다고 가정합니다.myAppRights경유로

CREATE ROLE [myAppRights] 

그러면 다음을 통해 실행 권한을 부여할 수 있습니다.

GRANT EXECUTE TO [myAppRights] 

그 역할까지.


또는 스키마 수준에서 수행하려는 경우:

GRANT EXECUTE ON SCHEMA ::dbo TO [myAppRights]

또한 작동합니다(이 예에서는 역할).myAppRights스키마의 모든 요소에 대한 실행 권한을 가집니다.dbo나중에).

이 방법은 한 번만 수행하면 되며 나중에 변경해야 할 경우 사용자에게 관련된 모든 응용프로그램 권한을 쉽게 할당/해제할 수 있습니다. 특히 복잡한 액세스 프로파일을 작성하려는 경우 유용합니다.

참고: 스키마에 역할을 부여하면 나중에 작성한 요소에도 영향을 미칩니다. 이는 사용자가 의도한 설계에 따라 유용하거나 유용하지 않을 수 있습니다.

언급URL : https://stackoverflow.com/questions/9321334/grant-execute-to-all-stored-procedures

반응형