2012-02-17 2 views

답변

156

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] 
+16

+1 플러스 : 향후 저장 프로 시저에 EXECUTE 권한을 부여합니다. 아직 데이터베이스에 없지만 나중에 생성 될 것입니다. –

+1

'사용자'가 대괄호 안에 있어야 할 수도 있습니다. 내 사용자가 도메인을 첨부했기 때문에 (예 : 도메인 이름에 \ 문자가 있음) 적어도 부분적으로는 사실이었습니다. 편집 : 고정 된 이스케이프 처리되지 않은 슬래시 문자 – PrinceTyke

+1

사용자를 db_ddladmin 역할에 할당하지 않는 이유는 무엇입니까? "db_ddladmin 고정 데이터베이스 역할의 구성원은 데이터베이스에서 모든 DDL (데이터 정의 언어) 명령을 실행할 수 있습니다." - [here] (https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/database-level-roles)를 참조하십시오. –

60

SQL 서버 2005 데이터베이스 원리에 grant database execute permissions 할 수있는 기능을 도입 당신이 설명한대로 :

이것은 모든 스키마의 모든 저장 프로 시저를 암시 적으로 포함하는 데이터베이스 범위에서 사용 권한을 부여합니다. 즉, 저장 프로 시저마다 사용 권한을 명시 적으로 부여 할 필요가 없습니다.

좀 더 세분화되고 싶은 경우도 granting schema execute permissions에 의해 제한 할 수 있습니다

위의 답변에 추가
GRANT EXECUTE ON SCHEMA ::dbo TO [MyDomain\MyUser] 
+4

특정 스키마로이 작업을 수행하는 것이 좋습니다. , sys에 대한 사용 권한을 피하십시오. – RemarkLima

8

, 내가 추가하고 싶습니다 :

당신은이 권한을 부여 할 수 있습니다

대신 역할을 입력 한 다음 사용자에게 역할을 할당하십시오.

CREATE ROLE [myAppRights] 
GRANT EXECUTE TO [myAppRights] 

않습니다.

당신이 스키마 수준에서 그것을 을 수행 할 경우

:

GRANT EXECUTE ON SCHEMA ::dbo TO [myAppRights] 

도 작동 (이 예에서는 역할 myAppRights 나중에 스키마 dbo의 모든 요소에 대한 권리를 실행해야합니다).

이 방법을 사용하면 나중에 한 번만 변경하면됩니다. 나중에 변경해야 할 경우 사용자와 관련된 모든 응용 프로그램 권한을 쉽게 할당하거나 취소 할 수 있습니다. 더 복잡한 액세스 프로필을 만들려면 특히 유용합니다.

관련 문제