GRANT(Transact-SQL)GRANT (Transact-SQL)

이 항목은 다음에 적용됩니다. 예SQL Server(2008부터)예Azure SQL Database예Azure SQL Data Warehouse 예병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO: yesSQL Server (starting with 2008)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

보안 주체에 보안 개체에 대한 사용 권한을 부여합니다.Grants permissions on a securable to a principal. 일반적인 개념은 GRANT <사용 권한> ON <개체> TO <사용자, 로그인 또는 그룹>입니다.The general concept is to GRANT <some permission> ON <some object> TO <some user, login, or group>. 사용 권한에 대한 일반적인 설명은 사용 권한(데이터베이스 엔진)을 참조하세요.For a general discussion of permissions, see Permissions (Database Engine).

문서 링크 아이콘 Transact-SQL 구문 표기 규칙Article link icon Transact-SQL Syntax Conventions

구문Syntax

-- Syntax for SQL Server and Azure SQL Database  

-- Simplified syntax for GRANT  
GRANT { ALL [ PRIVILEGES ] }  
      | permission [ ( column [ ,...n ] ) ] [ ,...n ]  
      [ ON [ class :: ] securable ] TO principal [ ,...n ]   
      [ WITH GRANT OPTION ] [ AS principal ]  
-- Syntax for Azure SQL Data Warehouse and Parallel Data Warehouse  

GRANT   
    <permission> [ ,...n ]  
    [ ON [ <class_type> :: ] securable ]   
    TO principal [ ,...n ]  
    [ WITH GRANT OPTION ]  
[;]  

<permission> ::=  
{ see the tables below }  

<class_type> ::=  
{  
      LOGIN  
    | DATABASE  
    | OBJECT  
    | ROLE  
    | SCHEMA  
    | USER  
}  

인수Arguments

ALLALL
이 옵션은 사용되지 않으며 이전 버전과의 호환성을 위해서만 유지 관리되고This option is deprecated and maintained only for backward compatibility. 모든 가능한 사용 권한을 부여하지 않습니다.It does not grant all possible permissions. ALL을 부여하는 것은 다음 사용 권한을 부여하는 것과 동일합니다.Granting ALL is equivalent to granting the following permissions:

  • 보안 개체가 데이터베이스인 경우 ALL은 BACKUP DATABASE, BACKUP LOG, CREATE DATABASE, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TABLE 및 CREATE VIEW를 의미합니다.If the securable is a database, ALL means BACKUP DATABASE, BACKUP LOG, CREATE DATABASE, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TABLE, and CREATE VIEW.

  • 보안 개체가 스칼라 함수인 경우 ALL은 EXECUTE 및 REFERENCES를 의미합니다.If the securable is a scalar function, ALL means EXECUTE and REFERENCES.

  • 보안 개체가 테이블 반환 함수인 경우 ALL은 DELETE, INSERT, REFERENCES, SELECT 및 UPDATE를 의미합니다.If the securable is a table-valued function, ALL means DELETE, INSERT, REFERENCES, SELECT, and UPDATE.

  • 보안 개체가 저장 프로시저인 경우 ALL은 EXECUTE를 의미합니다.If the securable is a stored procedure, ALL means EXECUTE.

  • 보안 개체가 테이블인 경우 ALL은 DELETE, INSERT, REFERENCES, SELECT 및 UPDATE를 의미합니다.If the securable is a table, ALL means DELETE, INSERT, REFERENCES, SELECT, and UPDATE.

  • 보안 개체가 뷰인 경우 ALL은 DELETE, INSERT, REFERENCES, SELECT 및 UPDATE를 의미합니다.If the securable is a view, ALL means DELETE, INSERT, REFERENCES, SELECT, and UPDATE.

PRIVILEGESPRIVILEGES
ISO 호환성을 위해 포함됩니다.Included for ISO compliance. ALL의 동작을 변경하지 않습니다.Does not change the behavior of ALL.

permissionpermission
사용 권한의 이름입니다.Is the name of a permission. 아래 나열된 하위 항목에서는 보안 개체에 대한 사용 권한의 올바른 매핑에 대해 설명합니다.The valid mappings of permissions to securables are described in the subtopics listed below.

columncolumn
사용 권한을 부여할 테이블의 열 이름을 지정합니다.Specifies the name of a column in a table on which permissions are being granted. 괄호()가 필요합니다.The parentheses () are required.

classclass
사용 권한을 부여할 보안 개체의 클래스를 지정합니다.Specifies the class of the securable on which the permission is being granted. 범위 한정자 :: 가 필요합니다.The scope qualifier :: is required.

securablesecurable
사용 권한을 부여할 보안 개체를 지정합니다.Specifies the securable on which the permission is being granted.

TO principalTO principal
보안 주체의 이름입니다.Is the name of a principal. 보안 개체에 대한 사용 권한을 부여할 수 있는 대상 보안 주체는 보안 개체에 따라 달라집니다.The principals to which permissions on a securable can be granted vary, depending on the securable. 유효한 조합에 대해서는 아래에 나열된 하위 항목을 참조하세요.See the subtopics listed below for valid combinations.

GRANT OPTIONGRANT OPTION
지정된 사용 권한을 다른 보안 주체에게 부여할 수 있는 권한도 피부여자에게 제공됨을 나타냅니다.Indicates that the grantee will also be given the ability to grant the specified permission to other principals.

AS principalAS principal
권한의 부여자로 기록된 보안 주체가 해당 명령문을 실행하는 사용자 이외의 보안 주체여야 한다는 것을 표시하려면 AS principal 절을 사용합니다.Use the AS principal clause to indicate that the principal recorded as the grantor of the permission should be a principal other than the person executing the statement. 예를 들어 Mary라는 사용자가 principal_id 12이고 Raul이라는 사용자는 principal 15라고 가정해 보겠습니다.For example, presume that user Mary is principal_id 12 and user Raul is principal 15. Mary가 GRANT SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul;을 실행합니다. 이제 sys.database_permissions 테이블에 실제로 사용자 13(Mary)이 명령문을 실행했지만 grantor_prinicpal_id가 15(Raul)임이 표시됩니다.Mary executes GRANT SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul; Now the sys.database_permissions table will indicate that the grantor_prinicpal_id was 15 (Raul) even though the statement was actually executed by user 13 (Mary).

권한 체인을 명시적으로 정의해야 하는 경우가 아니면 AS 절은 사용하지 않는 것이 좋습니다.Using the AS clause is typically not recommended unless you need to explicitly define the permission chain. 자세한 내용은 사용 권한(데이터베이스 엔진)사용 권한 검사 알고리즘 요약 섹션을 참조하세요.For more information, see the Summary of the Permission Check Algorithm section of Permissions (Database Engine).

이 명령문에 AS를 사용한다고 해서 다른 사용자로 가장하는 기능을 의미하는 것은 아닙니다.The use of AS in this statement does not imply the ability to impersonate another user.

RemarksRemarks

GRANT 문의 전체 구문은 복잡합니다.The full syntax of the GRANT statement is complex. 위의 구문 다이어그램은 구조를 강조하기 위해 단순하게 표현되었습니다.The syntax diagram above was simplified to draw attention to its structure. 특정 보안 개체에 대한 사용 권한을 부여하는 완전한 구문은 아래에 나열된 문서에서 설명합니다.Complete syntax for granting permissions on specific securables is described in the articles listed below.

REVOKE 문을 사용하여 부여된 사용 권한을 제거할 수 있으며 DENY 문을 사용하여 보안 주체가 GRANT를 통해 특정 사용 권한을 얻지 못하도록 막을 수 있습니다.The REVOKE statement can be used to remove granted permissions, and the DENY statement can be used to prevent a principal from gaining a specific permission through a GRANT.

사용 권한을 부여하면 지정된 보안 개체에 대한 이 사용 권한의 DENY 또는 REVOKE가 제거됩니다.Granting a permission removes DENY or REVOKE of that permission on the specified securable. 보안 개체가 포함된 상위 범위에서 동일한 사용 권한이 거부되면 DENY가 우선 적용됩니다.If the same permission is denied at a higher scope that contains the securable, the DENY takes precedence. 그러나 상위 범위에서 부여된 사용 권한을 취소하는 것은 우선 적용되지 않습니다.But revoking the granted permission at a higher scope does not take precedence.

데이터베이스 수준 사용 권한은 지정된 데이터베이스 범위 내에서 부여됩니다.Database-level permissions are granted within the scope of the specified database. 사용자가 다른 데이터베이스에 있는 개체에 대한 사용 권한을 필요로 하는 경우에는 다른 데이터베이스에서 사용자 계정을 만들거나 다른 데이터베이스와 현재 데이터베이스에 대해 사용자 계정 액세스를 부여하세요.If a user needs permissions to objects in another database, create the user account in the other database, or grant the user account access to the other database, as well as the current database.

주의

테이블 수준의 DENY는 열 수준의 GRANT보다 우선하지 않습니다.A table-level DENY does not take precedence over a column-level GRANT. 사용 권한 계층에서의 이러한 불일치는 이전 버전과의 호환성을 위해 유지되었으며This inconsistency in the permissions hierarchy has been preserved for the sake of backward compatibility. 후속 릴리스에서 제거될 예정입니다.It will be removed in a future release.

sp_helprotect 시스템 저장 프로시저는 데이터베이스 수준 보안 개체에 대한 사용 권한을 보고합니다.The sp_helprotect system stored procedure reports permissions on a database-level securable.

WITH GRANT OPTIONWITH GRANT OPTION

GRANTThe GRANT WITH GRANT OPTION은 사용 권한을 받는 보안 주체에게 다른 보안 계정에 지정된 권한을 부여할 수 있는 권한이 부여되도록 지정합니다.WITH GRANT OPTION specifies that the security principal receiving the permission is given the ability to grant the specified permission to other security accounts. 사용 권한을 받는 보안 주체가 역할 또는 Windows 그룹인 경우, 그룹 또는 역할의 멤버가 아닌 사용자에게 개체 권한을 추가로 부여해야 할 때는 AS 절을 사용해야 합니다.When the principal that receives the permission is a role or a Windows group, the AS clause must be used when the object permission needs to be further granted to users who are not members of the group or role. 그룹 또는 역할이 아니라 사용자만 GRANT 문을 실행할 수 있으므로 그룹 또는 역할의 특정 멤버는 사용 권한을 부여할 때 AS 절을 사용하여 역할 또는 그룹 멤버 자격을 명시적으로 호출해야 합니다.Because only a user, rather than a group or role, can execute a GRANT statement, a specific member of the group or role must use the AS clause to explicitly invoke the role or group membership when granting the permission. 다음 예에서는 역할 또는 Windows 그룹에 부여될 때 WITH GRANT OPTION이 사용되는 방법을 보여 줍니다.The following example shows how the WITH GRANT OPTION is used when granted to a role or Windows group.

-- Execute the following as a database owner  
GRANT EXECUTE ON TestProc TO TesterRole WITH GRANT OPTION;  
EXEC sp_addrolemember TesterRole, User1;  
-- Execute the following as User1  
-- The following fails because User1 does not have the permission as the User1  
GRANT EXECUTE ON TestMe TO User2;  
-- The following succeeds because User1 invokes the TesterRole membership  
GRANT EXECUTE ON TestMe TO User2 AS TesterRole;  

SQL Server 사용 권한 차트Chart of SQL Server Permissions

pdf 형식의 모든 데이터베이스 엔진Database Engine 권한에 대한 포스터 크기의 차트를 보려면 https://aka.ms/sql-permissions-poster를 참조하세요.For a poster sized chart of all 데이터베이스 엔진Database Engine permissions in pdf format, see https://aka.ms/sql-permissions-poster.

사용 권한Permissions

사용 권한을 부여한 사용자 또는 AS 옵션으로 지정한 보안 주체에게 GRANT OPTION을 통한 사용 권한이 있거나 부여할 사용 권한을 포함하는 상위 사용 권한이 있어야 합니다.The grantor (or the principal specified with the AS option) must have either the permission itself with GRANT OPTION, or a higher permission that implies the permission being granted. AS 옵션을 사용하는 경우 추가 요구 사항이 적용됩니다.If using the AS option, additional requirements apply. 자세한 내용은 보안 개체 관련 문서를 참조하세요.See the securable-specific article for details.

개체 소유자는 소유하고 있는 개체에 대한 사용 권한을 부여할 수 있습니다.Object owners can grant permissions on the objects they own. 보안 개체에 대한 CONTROL 사용 권한을 가진 보안 주체는 해당 보안 개체에 대한 사용 권한을 부여할 수 있습니다.Principals with CONTROL permission on a securable can grant permission on that securable.

sysadmin 고정 서버 역할의 멤버와 같이 CONTROL SERVER 사용 권한이 부여된 사용자는 서버의 모든 보안 개체에 대한 사용 권한을 부여할 수 있습니다.Grantees of CONTROL SERVER permission, such as members of the sysadmin fixed server role, can grant any permission on any securable in the server. db_owner 고정 데이터베이스 역할의 멤버와 같이 데이터베이스에 대한 CONTROL 사용 권한이 부여된 사용자는 데이터베이스의 모든 보안 개체에 대한 사용 권한을 부여할 수 있습니다.Grantees of CONTROL permission on a database, such as members of the db_owner fixed database role, can grant any permission on any securable in the database. 스키마에 대한 CONTROL 권한이 부여된 사용자는 스키마 내의 모든 개체에 대한 사용 권한을 부여할 수 있습니다.Grantees of CONTROL permission on a schema can grant any permission on any object within the schema.

Examples

다음 표에는 보안 개체와 보안 개체별 구문을 설명하는 문서 목록이 정리되어 있습니다.The following table lists the securables and the articles that describe the securable-specific syntax.

응용 프로그램 역할Application Role GRANT 데이터베이스 보안 주체 사용 권한(Transact-SQL)GRANT Database Principal Permissions (Transact-SQL)
어셈블리Assembly GRANT 어셈블리 사용 권한(Transact-SQL)GRANT Assembly Permissions (Transact-SQL)
비대칭 키Asymmetric Key GRANT 비대칭 키 사용 권한(Transact-SQL)GRANT Asymmetric Key Permissions (Transact-SQL)
가용성 그룹Availability Group GRANT 가용성 그룹 사용 권한(Transact-SQL)GRANT Availability Group Permissions (Transact-SQL)
인증서Certificate GRANT 인증서 사용 권한(Transact-SQL)GRANT Certificate Permissions (Transact-SQL)
계약Contract GRANT Service Broker 사용 권한(Transact-SQL)GRANT Service Broker Permissions (Transact-SQL)
데이터베이스Database GRANT 데이터베이스 사용 권한(Transact-SQL)GRANT Database Permissions (Transact-SQL)
데이터베이스 범위 자격 증명Database Scoped Credential GRANT 데이터베이스 범위 자격 증명(Transact-SQL)GRANT Database Scoped Credential (Transact-SQL)
끝점Endpoint GRANT 엔드포인트 사용 권한(Transact-SQL)GRANT Endpoint Permissions (Transact-SQL)
전체 텍스트 카탈로그Full-Text Catalog GRANT 전체 텍스트 사용 권한(Transact-SQL)GRANT Full-Text Permissions (Transact-SQL)
전체 텍스트 중지 목록Full-Text Stoplist GRANT 전체 텍스트 사용 권한(Transact-SQL)GRANT Full-Text Permissions (Transact-SQL)
함수Function GRANT 개체 사용 권한(Transact-SQL)GRANT Object Permissions (Transact-SQL)
로그인Login GRANT 서버 보안 주체 사용 권한(Transact-SQL)GRANT Server Principal Permissions (Transact-SQL)
메시지 유형Message Type GRANT Service Broker 사용 권한(Transact-SQL)GRANT Service Broker Permissions (Transact-SQL)
ObjectObject GRANT 개체 사용 권한(Transact-SQL)GRANT Object Permissions (Transact-SQL)
Queue GRANT 개체 사용 권한(Transact-SQL)GRANT Object Permissions (Transact-SQL)
원격 서비스 바인딩Remote Service Binding GRANT Service Broker 사용 권한(Transact-SQL)GRANT Service Broker Permissions (Transact-SQL)
RoleRole GRANT 데이터베이스 보안 주체 사용 권한(Transact-SQL)GRANT Database Principal Permissions (Transact-SQL)
경로Route GRANT Service Broker 사용 권한(Transact-SQL)GRANT Service Broker Permissions (Transact-SQL)
스키마Schema GRANT 스키마 사용 권한(Transact-SQL)GRANT Schema Permissions (Transact-SQL)
검색 속성 목록Search Property List GRANT 검색 속성 목록 사용 권한(Transact-SQL)GRANT Search Property List Permissions (Transact-SQL)
서버Server GRANT 서버 사용 권한(Transact-SQL)GRANT Server Permissions (Transact-SQL)
서비스Service GRANT Service Broker 사용 권한(Transact-SQL)GRANT Service Broker Permissions (Transact-SQL)
저장 프로시저Stored Procedure GRANT 개체 사용 권한(Transact-SQL)GRANT Object Permissions (Transact-SQL)
대칭 키Symmetric Key GRANT 대칭 키 사용 권한(Transact-SQL)GRANT Symmetric Key Permissions (Transact-SQL)
동의어Synonym GRANT 개체 사용 권한(Transact-SQL)GRANT Object Permissions (Transact-SQL)
시스템 개체System Objects GRANT 시스템 개체 사용 권한(Transact-SQL)GRANT System Object Permissions (Transact-SQL)
TableTable GRANT 개체 사용 권한(Transact-SQL)GRANT Object Permissions (Transact-SQL)
형식Type GRANT 형식 사용 권한(Transact-SQL)GRANT Type Permissions (Transact-SQL)
사용자User GRANT 데이터베이스 보안 주체 사용 권한(Transact-SQL)GRANT Database Principal Permissions (Transact-SQL)
보기View GRANT 개체 사용 권한(Transact-SQL)GRANT Object Permissions (Transact-SQL)
XML 스키마 컬렉션XML Schema Collection GRANT XML 스키마 컬렉션 사용 권한(Transact-SQL)GRANT XML Schema Collection Permissions (Transact-SQL)

참고 항목See Also

DENY(Transact-SQL) DENY (Transact-SQL)
REVOKE(Transact-SQL) REVOKE (Transact-SQL)
sp_addlogin(Transact-SQL) sp_addlogin (Transact-SQL)
sp_adduser(Transact-SQL) sp_adduser (Transact-SQL)
sp_changedbowner(Transact-SQL) sp_changedbowner (Transact-SQL)
sp_dropuser(Transact-SQL) sp_dropuser (Transact-SQL)
sp_helprotect(Transact-SQL) sp_helprotect (Transact-SQL)
sp_helpuser(Transact-SQL)sp_helpuser (Transact-SQL)