다음 명령을 사용하면 "MyUser"라는 사용자에게 데이터베이스의 모든 저장 프로 시저를 실행할 수있는 권한을 효과적으로 부여합니까?모든 저장 프로 시저에 대해 GRANT 실행
GRANT EXECUTE TO [MyDomain\MyUser]
다음 명령을 사용하면 "MyUser"라는 사용자에게 데이터베이스의 모든 저장 프로 시저를 실행할 수있는 권한을 효과적으로 부여합니까?모든 저장 프로 시저에 대해 GRANT 실행
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 서버 2005 데이터베이스 원리에 grant database execute permissions 할 수있는 기능을 도입 당신이 설명한대로 :
이것은 모든 스키마의 모든 저장 프로 시저를 암시 적으로 포함하는 데이터베이스 범위에서 사용 권한을 부여합니다. 즉, 저장 프로 시저마다 사용 권한을 명시 적으로 부여 할 필요가 없습니다.
좀 더 세분화되고 싶은 경우도 granting schema execute permissions에 의해 제한 할 수 있습니다
위의 답변에 추가GRANT EXECUTE ON SCHEMA ::dbo TO [MyDomain\MyUser]
특정 스키마로이 작업을 수행하는 것이 좋습니다. , sys에 대한 사용 권한을 피하십시오. – RemarkLima
, 내가 추가하고 싶습니다 :
당신은이 권한을 부여 할 수 있습니다대신 역할을 입력 한 다음 사용자에게 역할을 할당하십시오.
CREATE ROLE [myAppRights]
GRANT EXECUTE TO [myAppRights]
않습니다.
당신이 스키마 수준에서 그것을 을 수행 할 경우
:GRANT EXECUTE ON SCHEMA ::dbo TO [myAppRights]
도 작동 (이 예에서는 역할 myAppRights
나중에 스키마 dbo
의 모든 요소에 대한 권리를 실행해야합니다).
이 방법을 사용하면 나중에 한 번만 변경하면됩니다. 나중에 변경해야 할 경우 사용자와 관련된 모든 응용 프로그램 권한을 쉽게 할당하거나 취소 할 수 있습니다. 더 복잡한 액세스 프로필을 만들려면 특히 유용합니다.
+1 플러스 : 향후 저장 프로 시저에 EXECUTE 권한을 부여합니다. 아직 데이터베이스에 없지만 나중에 생성 될 것입니다. –
'사용자'가 대괄호 안에 있어야 할 수도 있습니다. 내 사용자가 도메인을 첨부했기 때문에 (예 : 도메인 이름에 \ 문자가 있음) 적어도 부분적으로는 사실이었습니다. 편집 : 고정 된 이스케이프 처리되지 않은 슬래시 문자 – PrinceTyke
사용자를 db_ddladmin 역할에 할당하지 않는 이유는 무엇입니까? "db_ddladmin 고정 데이터베이스 역할의 구성원은 데이터베이스에서 모든 DDL (데이터 정의 언어) 명령을 실행할 수 있습니다." - [here] (https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/database-level-roles)를 참조하십시오. –