CREATE USER(Transact-SQL)CREATE USER (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

현재 데이터베이스에 사용자를 추가합니다.Adds a user to the current database. 11가지 유형의 사용자가 가장 기본적인 구문 샘플과 함께 아래 나열되어 있습니다.The eleven types of users are listed below with a sample of the most basic syntax:

마스터의 로그인 기반 사용자 가장 일반적인 사용자 유형입니다.Users based on logins in master This is the most common type of user.

  • Windows Active Directory 계정을 기반으로 하는 로그인 기반 사용자입니다.User based on a login based on a Windows Active Directory account. CREATE USER [Contoso\Fritz];
  • Windows 그룹을 기반으로 하는 로그인 기반 사용자User based on a login based on a Windows group. CREATE USER [Contoso\Sales];
  • SQL ServerSQL Server 인증을 사용하는 로그인 기반 사용자User based on a login using SQL ServerSQL Server authentication. CREATE USER Mary;

데이터베이스에서 인증하는 사용자 데이터베이스의 이식성을 높이기 위해 사용하는 것이 좋습니다.Users that authenticate at the database Recommended to help make your database more portable.
SQL 데이터베이스SQL Database에 항상 허용됩니다.Always allowed in SQL 데이터베이스SQL Database. SQL ServerSQL Server에 포함된 데이터베이스에서만 사용할 수 있습니다.Only allowed in a contained database in SQL ServerSQL Server.

  • 로그인이 없는 Windows 사용자 기반 사용자User based on a Windows user that has no login. CREATE USER [Contoso\Fritz];
  • 로그인이 없는 Windows 그룹 기반 사용자User based on a Windows group that has no login. CREATE USER [Contoso\Sales];
  • Azure Active Directory 사용자에 기반한 SQL 데이터베이스SQL Database 또는 SQL 데이터 웨어하우스SQL Data Warehouse의 사용자.User in SQL 데이터베이스SQL Database or SQL 데이터 웨어하우스SQL Data Warehouse based on an Azure Active Directory user. CREATE USER [Contoso\Fritz] FROM EXTERNAL PROVIDER;

  • 암호가 있는 포함된 데이터베이스 사용자Contained database user with password. ( SQL 데이터 웨어하우스SQL Data Warehouse에서 사용할 수 없습니다.) CREATE USER Mary WITH PASSWORD = '********';(Not available in SQL 데이터 웨어하우스SQL Data Warehouse.) CREATE USER Mary WITH PASSWORD = '********';

Windows 그룹 로그인을 통해 연결하는 Windows 보안 주체 기반 사용자Users based on Windows principals that connect through Windows group logins

  • 로그인이 없지만 Windows 그룹의 멤버 자격을 통해 데이터베이스 엔진Database Engine에 연결할 수 있는 Windows 사용자 기반 사용자User based on a Windows user that has no login, but can connect to the 데이터베이스 엔진Database Engine through membership in a Windows group. CREATE USER [Contoso\Fritz];

  • 로그인이 없지만 다른 Windows 그룹의 멤버 자격을 통해 데이터베이스 엔진Database Engine에 연결할 수 있는 Windows 그룹 기반 사용자User based on a Windows group that has no login, but can connect to the 데이터베이스 엔진Database Engine through membership in a different Windows group. CREATE USER [Contoso\Fritz];

인증할 수 없는 사용자 이러한 사용자는 SQL ServerSQL Server 또는 SQL 데이터베이스SQL Database에 로그인할 수 없습니다.Users that cannot authenticate These users cannot login to SQL ServerSQL Server or SQL 데이터베이스SQL Database.

  • 로그인이 없는 사용자.User without a login. 로그인할 수는 없지만 권한을 부여받을 수 있습니다.Cannot login but can be granted permissions. CREATE USER CustomApp WITHOUT LOGIN;
  • 인증서 기반 사용자.User based on a certificate. 로그인할 수는 없지만 권한을 부여받고 모듈에 서명할 수 있습니다.Cannot login but can be granted permissions and can sign modules. CREATE USER TestProcess FOR CERTIFICATE CarnationProduction50;
  • 비대칭 키 기반 사용자.User based on an asymmetric key. 로그인할 수는 없지만 권한을 부여받고 모듈에 서명할 수 있습니다.Cannot login but can be granted permissions and can sign modules. CREATE User TestProcess FROM ASYMMETRIC KEY PacificSales09;

항목 링크 아이콘 Transact-SQL 구문 규칙Topic link icon Transact-SQL Syntax Conventions

구문Syntax

-- Syntax for SQL Server and Azure SQL Database  

-- Syntax Users based on logins in master  
CREATE USER user_name   
    [   
        { FOR | FROM } LOGIN login_name   
    ]  
    [ WITH <limited_options_list> [ ,... ] ]   
[ ; ]  

--Users that authenticate at the database  
CREATE USER   
    {  
      windows_principal [ WITH <options_list> [ ,... ] ]  

    | user_name WITH PASSWORD = 'password' [ , <options_list> [ ,... ]   
    | Azure_Active_Directory_principal FROM EXTERNAL PROVIDER   
    }  

 [ ; ]  

--Users based on Windows principals that connect through Windows group logins  
CREATE USER   
    {   
          windows_principal [ { FOR | FROM } LOGIN windows_principal ]  
        | user_name { FOR | FROM } LOGIN windows_principal  
}  
    [ WITH <limited_options_list> [ ,... ] ]   
[ ; ]  

--Users that cannot authenticate   
CREATE USER user_name   
    {  
         WITHOUT LOGIN [ WITH <limited_options_list> [ ,... ] ]  
       | { FOR | FROM } CERTIFICATE cert_name   
       | { FOR | FROM } ASYMMETRIC KEY asym_key_name   
    }  
 [ ; ]  

<options_list> ::=  
      DEFAULT_SCHEMA = schema_name  
    | DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }  
    | SID = sid   
    | ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ]  

<limited_options_list> ::=  
      DEFAULT_SCHEMA = schema_name ]   
    | ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ]  

-- SQL Database syntax when connected to a federation member  
CREATE USER user_name  
[;]  
-- Syntax for Azure SQL Data Warehouse  

CREATE USER user_name   
    [ { { FOR | FROM } { LOGIN login_name }   
      | WITHOUT LOGIN  
    ]   
    [ WITH DEFAULT_SCHEMA = schema_name ]  
[;]

CREATE USER Azure_Active_Directory_principal FROM EXTERNAL PROVIDER  
    [ WITH DEFAULT_SCHEMA = schema_name ]  
[;]
-- Syntax for Parallel Data Warehouse  

CREATE USER user_name   
    [ { { FOR | FROM }  
      {   
        LOGIN login_name   
      }   
      | WITHOUT LOGIN  
    ]   
    [ WITH DEFAULT_SCHEMA = schema_name ]  
[;]  

인수Arguments

user_nameuser_name
이 데이터베이스 내에서 사용자를 식별하는 이름을 지정합니다.Specifies the name by which the user is identified inside this database. user_namesysname입니다.user_name is a sysname. 최대 128자까지 지정할 수 있습니다.It can be up to 128 characters long. Windows 보안 주체 기반 사용자를 만드는 경우 다른 사용자 이름을 지정하지 않으면 Windows 보안 주체 이름이 사용자 이름이 됩니다.When creating a user based on a Windows principal, the Windows principal name becomes the user name unless another user name is specified.

LOGIN login_nameLOGIN login_name
데이터베이스 사용자를 만들 로그인을 지정합니다.Specifies the login for which the database user is being created. login_name은 서버에서 유효한 로그인이어야 합니다.login_name must be a valid login in the server. Windows 보안 주체(사용자 또는 그룹)를 기반으로 하는 로그인이거나 SQL ServerSQL Server 인증을 사용하는 로그인일 수 있습니다.Can be a login based on a Windows principal (user or group), or a login using SQL ServerSQL Server authentication. SQL ServerSQL Server 로그인이 데이터베이스에 들어가면 이 로그인은 만들 데이터베이스 사용자의 이름과 ID를 획득합니다.When this SQL ServerSQL Server login enters the database, it acquires the name and ID of the database user that is being created. Windows 보안 주체에서 매핑된 로그인을 만들 때는 [<domainName>\<loginName>] 형식을 사용하세요.When creating a login mapped from a Windows principal, use the format [<domainName>\<loginName>]. 예제는 구문 요약을 참조하세요.For examples, see Syntax Summary.

CREATE USER 문이 SQL 일괄 처리의 유일한 문인 경우 Microsoft Azure SQL Database는 WITH LOGIN 절을 지원합니다.If the CREATE USER statement is the only statement in a SQL batch, Windows Azure SQL Database supports the WITH LOGIN clause. CREATE USER 문이 SQL 일괄 처리의 유일한 문이 아니거나 동적 SQL에서 실행되는 경우 WITH LOGIN 절이 지원되지 않습니다.If the CREATE USER statement is not the only statement in a SQL batch or is executed in dynamic SQL, the WITH LOGIN clause is not supported.

WITH DEFAULT_SCHEMA = schema_nameWITH DEFAULT_SCHEMA = schema_name
서버에서 이 데이터베이스 사용자에 대한 개체 이름을 확인할 때 첫 번째로 검색하는 스키마를 지정합니다.Specifies the first schema that will be searched by the server when it resolves the names of objects for this database user.

'windows_principal''windows_principal'
데이터베이스 사용자를 만들 Windows 보안 주체를 지정합니다.Specifies the Windows principal for which the database user is being created. windows_principal은 Windows 사용자 또는 Windows 그룹일 수 있습니다.The windows_principal can be a Windows user, or a Windows group. windows_principal에 로그인이 없어도 사용자가 만들어집니다.The user will be created even if the windows_principal does not have a login. SQL ServerSQL Server에 연결할 때 windows_principal에 로그인이 없는 경우 Windows 보안 주체가 로그인이 있는 Windows 그룹의 멤버 자격을 통해 데이터베이스 엔진Database Engine에서 인증하거나, 연결 문자열에서 포함된 데이터베이스를 초기 카탈로그로 지정해야 합니다.When connecting to SQL ServerSQL Server, if the windows_principal does not have a login, the Windows principal must authenticate at the 데이터베이스 엔진Database Engine through membership in a Windows group that has a login, or the connection string must specify the contained database as the initial catalog. Windows 보안 주체에서 사용자를 만들 때는 [<domainName>\<loginName>] 형식을 사용하세요.When creating a user from a Windows principal, use the format [<domainName>\<loginName>]. 예제는 구문 요약을 참조하세요.For examples, see Syntax Summary. Active Directory 사용자에 기반한 사용자는 21자 미만의 이름으로 제한됩니다.Users based on Active Directory users, are limited to names of less than 21 characters.

'Azure_Active_Directory_principal''Azure_Active_Directory_principal'
적용 대상: SQL 데이터베이스SQL Database, SQL 데이터 웨어하우스SQL Data WarehouseApplies to: SQL 데이터베이스SQL Database, SQL 데이터 웨어하우스SQL Data Warehouse.

데이터베이스 사용자를 만들 Azure Active Directory 보안 주체를 지정합니다.Specifies the Azure Active Directory principal for which the database user is being created. Azure_Active_Directory_principal은 Azure Active Directory 사용자 또는 Azure Active Directory 그룹일 수 있습니다.The Azure_Active_Directory_principal can be an Azure Active Directory user, or an Azure Active Directory group. (Azure Active Directory 사용자는 SQL 데이터베이스SQL Database에 Windows 인증 로그인을 가질 수 없으며 데이터베이스 사용자만 가능합니다.) 연결 문자열은 포함된 데이터베이스를 초기 카탈로그로 지정해야 합니다.(Azure Active Directory users cannot have Windows Authentication logins in SQL 데이터베이스SQL Database; only database users.) The connection string must specify the contained database as the initial catalog.

사용자는 도메인 보안 주체의 전체 별칭을 사용합니다.For users, you use the full alias of their domain principal.

WITH PASSWORD = 'password'WITH PASSWORD = 'password'
적용 대상: SQL Server 2012(11.x)SQL Server 2012 (11.x)부터 SQL Server 2017SQL Server 2017, SQL 데이터베이스SQL Database까지Applies to: SQL Server 2012(11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017, SQL 데이터베이스SQL Database.

포함된 데이터베이스에서만 사용할 수 있습니다.Can only be used in a contained database. 만들 사용자의 암호를 지정합니다.Specifies the password for the user that is being created. SQL Server 2012(11.x)SQL Server 2012 (11.x)부터 저장된 암호 정보는 솔트 암호의 SHA-512를 사용하여 계산됩니다.Beginning with SQL Server 2012(11.x)SQL Server 2012 (11.x), stored password information is calculated using SHA-512 of the salted password.

WITHOUT LOGINWITHOUT LOGIN
사용자가 기존 로그인에 매핑되지 않도록 지정합니다.Specifies that the user should not be mapped to an existing login.

CERTIFICATE cert_nameCERTIFICATE cert_name
적용 대상: SQL Server 2008SQL Server 2008부터 SQL Server 2017SQL Server 2017, SQL 데이터베이스SQL Database까지Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017, SQL 데이터베이스SQL Database.

데이터베이스 사용자를 만들 인증서를 지정합니다.Specifies the certificate for which the database user is being created.

ASYMMETRIC KEY asym_key_nameASYMMETRIC KEY asym_key_name
적용 대상: SQL Server 2008SQL Server 2008부터 SQL Server 2017SQL Server 2017, SQL 데이터베이스SQL Database까지Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017, SQL 데이터베이스SQL Database.

데이터베이스 사용자를 만들 비대칭 키를 지정합니다.Specifies the asymmetric key for which the database user is being created.

DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }
적용 대상: SQL Server 2012(11.x)SQL Server 2012 (11.x)부터 SQL Server 2017SQL Server 2017까지, SQL 데이터베이스SQL DatabaseApplies to: SQL Server 2012(11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017, SQL 데이터베이스SQL Database.

새 사용자의 기본 언어를 지정합니다.Specifies the default language for the new user. 사용자의 기본 언어가 지정된 경우 데이터베이스의 기본 언어가 나중에 변경되더라도 사용자의 기본 언어는 지정된 대로 유지됩니다.If a default language is specified for the user and the default language of the database is later changed, the users default language remains as specified. 기본 언어를 지정하지 않으면 사용자의 기본 언어는 데이터베이스의 기본 언어가 됩니다.If no default language is specified, the default language for the user will be the default language of the database. 사용자의 기본 언어가 지정되지 않은 경우 데이터베이스의 기본 언어가 나중에 변경되면 사용자의 기본 언어는 데이터베이스의 새 기본 언어로 변경됩니다.If the default language for the user is not specified and the default language of the database is later changed, the default language of the user will change to the new default language for the database.

중요

DEFAULT_LANGUAGE는 포함된 데이터베이스 사용자에 대해서만 사용됩니다.DEFAULT_LANGUAGE is used only for a contained database user.

SID = sidSID = sid
적용 대상: SQL Server 2012(11.x)SQL Server 2012 (11.x) 부터 SQL Server 2017SQL Server 2017까지Applies to: SQL Server 2012(11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017.

포함된 데이터베이스의 암호가 있는 사용자( SQL ServerSQL Server 인증)에만 적용됩니다.Applies only to users with passwords ( SQL ServerSQL Server authentication) in a contained database. 새 데이터베이스 사용자의 SID를 지정합니다.Specifies the SID of the new database user. 이 옵션을 선택하지 않으면 SQL ServerSQL Server에서 자동으로 SID를 할당합니다.If this option is not selected, SQL ServerSQL Server automatically assigns a SID. SID 매개 변수를 사용하여 여러 데이터베이스에 ID(SID)가 동일한 사용자를 만듭니다.Use the SID parameter to create users in multiple databases that have the same identity (SID). 이 옵션은 여러 데이터베이스에 사용자를 만들어 Always On 장애 조치(failover)를 준비하려는 경우에 유용합니다.This is useful when creating users in multiple databases to prepare for Always On failover. 사용자의 SID를 확인하려면 sys.database_principals를 쿼리합니다.To determine the SID of a user, query sys.database_principals.

ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ]ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ]
적용 대상: SQL Server 2016(13.x)SQL Server 2016 (13.x)부터 SQL Server 2017SQL Server 2017, SQL 데이터베이스SQL Database까지Applies to: SQL Server 2016(13.x)SQL Server 2016 (13.x) through SQL Server 2017SQL Server 2017, SQL 데이터베이스SQL Database.

대량 복사 작업에서 서버에 대한 암호화 메타데이터 검사를 표시하지 않습니다.Suppresses cryptographic metadata checks on the server in bulk copy operations. 이를 통해 사용자는 데이터를 암호 해독하지 않고도 테이블이나 데이터베이스 사이에 암호화된 데이터를 대량 복사할 수 있습니다.This enables the user to bulk copy encrypted data between tables or databases, without decrypting the data. 기본값은 OFF입니다.The default is OFF.

경고

이 옵션을 부적절하게 사용할 경우 데이터가 손상될 수 있습니다.Improper use of this option can lead to data corruption. 자세한 내용은 상시 암호화로 보호되는 중요한 데이터 마이그레이션을 참조하세요.For more information, see Migrate Sensitive Data Protected by Always Encrypted.

RemarksRemarks

FOR LOGIN을 생략하면 새 데이터베이스 사용자는 같은 이름의 SQL ServerSQL Server 로그인에 매핑됩니다.If FOR LOGIN is omitted, the new database user will be mapped to the SQL ServerSQL Server login with the same name.

기본 스키마는 서버에서 이 데이터베이스 사용자에 대한 개체 이름을 확인할 때 첫 번째로 검색하는 스키마가 됩니다.The default schema will be the first schema that will be searched by the server when it resolves the names of objects for this database user. 달리 지정하지 않는 한 기본 스키마는 이 데이터베이스 사용자가 만든 개체의 소유자가 됩니다.Unless otherwise specified, the default schema will be the owner of objects created by this database user.

사용자에게 기본 스키마가 있는 경우에는 해당 기본 스키마가 사용됩니다.If the user has a default schema, that default schema will used. 사용자에게 기본 스키마가 없지만 사용자가 기본 스키마가 있는 그룹의 멤버인 경우에는 그룹의 기본 스키마가 사용됩니다.If the user does not have a default schema, but the user is a member of a group that has a default schema, the default schema of the group will be used. 사용자에게 기본 스키마가 없고 사용자가 두 개 이상 그룹의 멤버인 경우 principle_id가 가장 낮고 명시적으로 설정된 기본 스키마가 있는 Windows 그룹의 기본 스키마가 사용자의 기본 스키마가 됩니다.If the user does not have a default schema, and is a member of more than one group, the default schema for the user will be that of the Windows group with the lowest principal_id and an explicitly set default schema. 사용할 수 있는 기본 스키마 중 하나를 기본 설정 스키마로 명시적으로 선택할 수는 없습니다. 사용자의 기본 스키마를 확인할 수 없으면 dbo 스키마가 사용됩니다.(It is not possible to explicitly select one of the available default schemas as the preferred schema.) If no default schema can be determined for a user, the dbo schema will be used.

DEFAULT_SCHEMA는 가리키는 스키마가 만들어지기 전에 설정될 수 있습니다.DEFAULT_SCHEMA can be set before the schema that it points to is created.

인증서 또는 비대칭 키에 매핑된 사용자를 생성할 때는 DEFAULT_SCHEMA를 지정할 수 없습니다.DEFAULT_SCHEMA cannot be specified when you are creating a user mapped to a certificate, or an asymmetric key.

사용자가 sysadmin 고정 서버 역할의 멤버이면 DEFAULT_SCHEMA 값은 무시됩니다.The value of DEFAULT_SCHEMA is ignored if the user is a member of the sysadmin fixed server role. sysadmin 고정 서버 역할의 모든 멤버는 기본 스키마가 dbo입니다.All members of the sysadmin fixed server role have a default schema of dbo.

WITHOUT LOGIN 절은 SQL Server 로그인에 매핑되지 않는 사용자를 만듭니다.The WITHOUT LOGIN clause creates a user that is not mapped to a SQL Server login. guest와 같은 다른 데이터베이스에 연결할 수 있습니다.It can connect to other databases as guest. 로그인이 없는 사용자에게 사용 권한을 할당할 수 있으며 보안 컨텍스트가 로그인이 없는 사용자로 변경되면 원래 사용자가 로그인이 없는 사용자의 사용 권한을 받습니다.Permissions can be assigned to this user without login and when the security context is changed to a user without login, the original users receives the permissions of the user without login. D. 로그인 없이 사용자 만들기 및 사용 예제를 참조하세요.See example D. Creating and using a user without a login.

Windows 보안 주체에 매핑되는 사용자만 백슬래시 문자(\)를 포함할 수 있습니다.Only users that are mapped to Windows principals can contain the backslash character (\).

게스트 사용자가 이미 모든 데이터베이스 내에 있기 때문에 CREATE USER를 사용하여 게스트 사용자를 만들 수 없습니다.CREATE USER cannot be used to create a guest user because the guest user already exists inside every database. 다음과 같이 CONNECT 권한을 부여하여 게스트 사용자를 사용할 수 있습니다.You can enable the guest user by granting it CONNECT permission, as shown:

GRANT CONNECT TO guest;  
GO  

데이터베이스 사용자 정보는 sys.database_principals 카탈로그 뷰에 표시됩니다.Information about database users is visible in the sys.database_principals catalog view.

구문 요약Syntax Summary

마스터의 로그인 기반 사용자Users based on logins in master

다음 목록에서는 로그인 기반 사용자에 대해 사용할 수 있는 구문을 보여 줍니다.The following list shows possible syntax for users based on logins. 기본 스키마 옵션은 나열되지 않습니다.The default schema options are not listed.

  • CREATE USER [Domain1\WindowsUserBarry]
  • CREATE USER [Domain1\WindowsUserBarry] FOR LOGIN Domain1\WindowsUserBarry
  • CREATE USER [Domain1\WindowsUserBarry] FROM LOGIN Domain1\WindowsUserBarry
  • CREATE USER [Domain1\WindowsGroupManagers]
  • CREATE USER [Domain1\WindowsGroupManagers] FOR LOGIN [Domain1\WindowsGroupManagers]
  • CREATE USER [Domain1\WindowsGroupManagers] FROM LOGIN [Domain1\WindowsGroupManagers]
  • CREATE USER SQLAUTHLOGIN
  • CREATE USER SQLAUTHLOGIN FOR LOGIN SQLAUTHLOGIN
  • CREATE USER SQLAUTHLOGIN FROM LOGIN SQLAUTHLOGIN

데이터베이스에서 인증하는 사용자Users that authenticate at the database

다음 목록에서는 포함된 데이터베이스에서만 사용할 수 있는 사용자에 대한 구문을 보여 줍니다.The following list shows possible syntax for users that can only be used in a contained database. 생성된 사용자는 master 데이터베이스의 로그인에 연결되지 않습니다.The users created will not be related to any logins in the master database. 기본 스키마 및 언어 옵션은 나열되지 않습니다.The default schema and language options are not listed.

중요

이 구문은 사용자에게 데이터베이스에 대한 액세스 권한을 부여하며 데이터베이스 엔진Database Engine에 대한 새로운 액세스 권한도 부여합니다.This syntax grants users access to the database and also grants new access to the 데이터베이스 엔진Database Engine.

  • CREATE USER [Domain1\WindowsUserBarry]
  • CREATE USER [Domain1\WindowsGroupManagers]
  • CREATE USER Barry WITH PASSWORD = 'sdjklalie8rew8337!$d'

마스터에 로그인이 없는 Windows 보안 주체 기반 사용자Users based on Windows principals without logins in master

다음 목록은 Windows 그룹을 통해 데이터베이스 엔진Database Engine에 액세스하지만 master에 로그인이 없는 사용자에 대한 구문을 보여 줍니다.The following list shows possible syntax for users that have access to the 데이터베이스 엔진Database Engine through a Windows group but do not have a login in master. 이 구문은 모든 유형의 데이터베이스에서 사용할 수 있습니다.This syntax can be used in all types of databases. 기본 스키마 및 언어 옵션은 나열되지 않습니다.The default schema and language options are not listed.

이 구문은 마스터의 로그인을 기반으로 하는 사용자와 유사하지만 이 범주의 사용자는 마스터에 로그인을 가지고 있지 않습니다.This syntax is similar to users based on logins in master, but this category of user does not have a login in master. 사용자는 Windows 그룹 로그인을 통해 데이터베이스 엔진Database Engine에 액세스할 수 있어야 합니다.The user must have access to the 데이터베이스 엔진Database Engine through a Windows group login.

이 구문은 Windows 보안 주체를 기반으로 하는 포함된 데이터베이스 사용자와 유사하지만 이 범주의 사용자는 데이터베이스 엔진Database Engine에 대한 새로운 액세스 권한을 부여받지 않습니다.This syntax is similar to contained database users based on Windows principals, but this category of user does not get new access to the 데이터베이스 엔진Database Engine.

  • CREATE USER [Domain1\WindowsUserBarry]
  • CREATE USER [Domain1\WindowsUserBarry] FOR LOGIN Domain1\WindowsUserBarry
  • CREATE USER [Domain1\WindowsUserBarry] FROM LOGIN Domain1\WindowsUserBarry
  • CREATE USER [Domain1\WindowsGroupManagers]
  • CREATE USER [Domain1\WindowsGroupManagers] FOR LOGIN [Domain1\WindowsGroupManagers]
  • CREATE USER [Domain1\WindowsGroupManagers] FROM LOGIN [Domain1\WindowsGroupManagers]

인증할 수 없는 사용자Users that cannot authenticate

다음 목록에서는 SQL ServerSQL Server에 로그인할 수 없는 사용자에 대한 구문을 보여 줍니다.The following list shows possible syntax for users that cannot login to SQL ServerSQL Server.

  • CREATE USER RIGHTSHOLDER WITHOUT LOGIN
  • CREATE USER CERTUSER FOR CERTIFICATE SpecialCert
  • CREATE USER CERTUSER FROM CERTIFICATE SpecialCert
  • CREATE USER KEYUSER FOR ASYMMETRIC KEY SecureKey
  • CREATE USER KEYUSER FROM ASYMMETRIC KEY SecureKey

보안Security

사용자를 만들면 데이터베이스에 대한 액세스 권한이 부여되지만 데이터베이스 내부의 개체에 대한 액세스 권한은 자동으로 부여되지 않습니다.Creating a user grants access to a database but does not automatically grant any access to the objects in a database. 사용자를 만든 후에는 대개 데이터베이스 개체에 액세스할 수 있는 권한이 있는 데이터베이스 역할에 사용자를 추가하거나 사용자에게 개체 사용 권한을 부여합니다.After creating a user, common actions are to add users to database roles which have permission to access database objects, or grant object permissions to the user. 권한 시스템 디자인에 대한 정보는 Getting Started with Database Engine Permissions을(를) 참조하세요.For information about designing a permissions system, see Getting Started with Database Engine Permissions.

포함된 데이터베이스에 대한 특별 고려 사항Special Considerations for Contained Databases

포함된 데이터베이스에 연결하는 경우 사용자에게 master 데이터베이스의 로그인이 없으면 연결 문자열에 포함된 데이터베이스 이름이 초기 카탈로그로 포함되어야 합니다.When connecting to a contained database, if the user does not have a login in the master database, the connection string must include the contained database name as the initial catalog. 암호가 있는 포함된 데이터베이스 사용자의 경우 언제나 초기 카탈로그 매개 변수를 지정해야 합니다.The initial catalog parameter is always required for a contained database user with password.

포함된 데이터베이스에서 사용자를 만들면 데이터베이스 엔진Database Engine 인스턴스로부터 데이터베이스를 분리하는 데 도움이 됩니다. 데이터베이스를 분리하면 다른 SQL ServerSQL Server 인스턴스로 데이터베이스를 쉽게 이동할 수 있습니다.In a contained database, creating users helps separate the database from the instance of the 데이터베이스 엔진Database Engine so that the database can easily be moved to another instance of SQL ServerSQL Server. 자세한 내용은 포함된 데이터베이스포함된 데이터베이스 사용자 - 이식 가능한 데이터베이스 만들기를 참조하세요.For more information, see Contained Databases and Contained Database Users - Making Your Database Portable. SQL ServerSQL Server 인증 로그인 기반 데이터베이스 사용자를 암호가 있는 포함된 데이터베이스 사용자로 변경하려면 sp_migrate_user_to_contained(Transact-SQL)를 참조하세요.To change a database user from a user based on a SQL ServerSQL Server authentication login to a contained database user with password, see sp_migrate_user_to_contained (Transact-SQL).

포함된 데이터베이스에서 사용자는 master 데이터베이스의 로그인을 가질 필요가 없습니다.In a contained database, users do not have to have logins in the master database. 데이터베이스 엔진Database Engine 관리자는 데이터베이스 엔진Database Engine 수준이 아니라 데이터베이스 수준에서 포함된 데이터베이스에 대한 액세스 권한을 부여할 수 있음을 이해해야 합니다. administrators should understand that access to a contained database can be granted at the database level, instead of the 데이터베이스 엔진Database Engine level. 자세한 내용은 Security Best Practices with Contained Databases를 참조하세요.For more information, see Security Best Practices with Contained Databases.

Azure SQL 데이터베이스Azure SQL Database에 포함된 데이터베이스 사용자를 사용하는 경우, 서버 수준 방화벽 규칙 대신 데이터베이스 수준 방화벽 규칙을 사용하여 액세스를 구성합니다.When using contained database users on Azure SQL 데이터베이스Azure SQL Database, configure access using a database-level firewall rule, instead of a server-level firewall rule. 자세한 내용은 sp_set_database_firewall_rule(Azure SQL Database)을 참조하세요.For more information, see sp_set_database_firewall_rule (Azure SQL Database).

SQL 데이터베이스SQL DatabaseSQL 데이터 웨어하우스SQL Data Warehouse 포함된 데이터베이스 사용자에 대해 SSMS는 Multi-Factor Authentication을 지원할 수 있습니다.For SQL 데이터베이스SQL Database and SQL 데이터 웨어하우스SQL Data Warehouse contained database users, SSMS can support Multi-Factor Authentication. 자세한 내용은 SQL Database 및 SQL Data Warehouse를 사용한 Azure AD MFA에 대한 SSMS 지원을 참조하세요.For more information, see SSMS support for Azure AD MFA with SQL Database and SQL Data Warehouse.

사용 권한Permissions

데이터베이스에 대한 ALTER ANY USER 권한이 필요합니다.Requires ALTER ANY USER permission on the database.

Examples

1.A. SQL Server 로그인 기반 데이터베이스 사용자 만들기Creating a database user based on a SQL Server login

다음 예에서는 먼저 AbolrousHazem이라는 SQL ServerSQL Server 로그인을 만든 다음 AbolrousHazem에 이에 해당하는 AdventureWorks2012이라는 데이터베이스 사용자를 만듭니다.The following example first creates a SQL ServerSQL Server login named AbolrousHazem, and then creates a corresponding database user AbolrousHazem in AdventureWorks2012.

CREATE LOGIN AbolrousHazem   
    WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';  

사용자 데이터베이스로 변경합니다.Change to a user database. 예를 들어 SQL ServerSQL ServerUSE AdventureWorks2012 문을 사용합니다.For example, in SQL ServerSQL Server use the USE AdventureWorks2012 statement. Azure SQL 데이터 웨어하우스Azure SQL Data Warehouse병렬 데이터 웨어하우스Parallel Data Warehouse에서 사용자 데이터베이스에 새 연결을 만들어야 합니다.In Azure SQL 데이터 웨어하우스Azure SQL Data Warehouse and 병렬 데이터 웨어하우스Parallel Data Warehouse, you must make a new connection to the user database.

CREATE USER AbolrousHazem FOR LOGIN AbolrousHazem;  
GO   

2.B. 기본 스키마로 데이터베이스 사용자 만들기Creating a database user with a default schema

다음 예에서는 암호를 사용하여 WanidaBenshoof라는 서버 로그인을 만든 다음 기본 스키마인 Wanida을 사용하여 해당 데이터베이스 사용자 Marketing를 만듭니다.The following example first creates a server login named WanidaBenshoof with a password, and then creates a corresponding database user Wanida, with the default schema Marketing.

CREATE LOGIN WanidaBenshoof   
    WITH PASSWORD = '8fdKJl3$nlNv3049jsKK';  
USE AdventureWorks2012;  
CREATE USER Wanida FOR LOGIN WanidaBenshoof   
    WITH DEFAULT_SCHEMA = Marketing;  
GO  

3.C. 인증서에서 데이터베이스 사용자 만들기Creating a database user from a certificate

다음 예에서는 JinghaoLiu 인증서에서 데이터베이스 사용자 CarnationProduction50를 만듭니다.The following example creates a database user JinghaoLiu from certificate CarnationProduction50.

적용 대상: SQL Server 2008SQL Server 2008 부터 SQL Server 2017SQL Server 2017까지Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.

USE AdventureWorks2012;  
CREATE CERTIFICATE CarnationProduction50  
    WITH SUBJECT = 'Carnation Production Facility Supervisors',  
    EXPIRY_DATE = '11/11/2011';  
GO  
CREATE USER JinghaoLiu FOR CERTIFICATE CarnationProduction50;  
GO   

4.D. 로그인이 없는 사용자 만들기 및 사용Creating and using a user without a login

다음 예에서는 SQL ServerSQL Server 로그인에 매핑되지 않는 데이터베이스 사용자 CustomApp를 만듭니다.The following example creates a database user CustomApp that does not map to a SQL ServerSQL Server login. 그런 다음 adventure-works\tengiz0 사용자를 가장하도록 사용자에게 CustomApp 권한을 부여합니다.The example then grants a user adventure-works\tengiz0 permission to impersonate the CustomApp user.

USE AdventureWorks2012 ;  
CREATE USER CustomApp WITHOUT LOGIN ;  
GRANT IMPERSONATE ON USER::CustomApp TO [adventure-works\tengiz0] ;  
GO   

CustomApp 자격 증명을 사용하기 위해 사용자 adventure-works\tengiz0이 다음 문을 실행합니다.To use the CustomApp credentials, the user adventure-works\tengiz0 executes the following statement.

EXECUTE AS USER = 'CustomApp' ;  
GO  

adventure-works\tengiz0 자격 증명으로 다시 돌아가려면 사용자는 다음 문을 실행합니다.To revert back to the adventure-works\tengiz0 credentials, the user executes the following statement.

REVERT ;  
GO  

5.E. 암호가 있는 포함된 데이터베이스 사용자 만들기Creating a contained database user with password

다음 예에서는 암호가 있는 포함된 데이터베이스 사용자를 만듭니다.The following example creates a contained database user with password. 이 예는 포함된 데이터베이스에서만 실행할 수 있습니다.This example can only be executed in a contained database.

적용 대상: SQL Server 2012(11.x)SQL Server 2012 (11.x) 부터 SQL Server 2017SQL Server 2017까지Applies to: SQL Server 2012(11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017. DEFAULT_LANGUAGE가 삭제된 경우 이 예제가 SQL 데이터베이스SQL Database에서 동작합니다.This example works in SQL 데이터베이스SQL Database if DEFAULT_LANGUAGE is removed.

USE AdventureWorks2012 ;  
GO  
CREATE USER Carlo  
WITH PASSWORD='RN92piTCh%$!~3K9844 Bl*'  
    , DEFAULT_LANGUAGE=[Brazilian]  
    , DEFAULT_SCHEMA=[dbo]  
GO   

6.F. 도메인 로그인에 대한 포함된 데이터베이스 사용자 만들기Creating a contained database user for a domain login

다음 예에서는 Contoso라는 도메인의 Fritz라는 로그인에 대한 포함된 데이터베이스 사용자를 만듭니다.The following example creates a contained database user for a login named Fritz in a domain named Contoso. 이 예는 포함된 데이터베이스에서만 실행할 수 있습니다.This example can only be executed in a contained database.

적용 대상: SQL Server 2012(11.x)SQL Server 2012 (11.x) 부터 SQL Server 2017SQL Server 2017까지Applies to: SQL Server 2012(11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017.

USE AdventureWorks2012 ;  
GO  
CREATE USER [Contoso\Fritz] ;  
GO   

7.G. 특정 SID가 있는 포함된 데이터베이스 사용자 만들기Creating a contained database user with a specific SID

다음 예에서는 CarmenW라는 SQL Server 인증 포함된 데이터베이스 사용자를 만듭니다.The following example creates a SQL Server authenticated contained database user named CarmenW. 이 예는 포함된 데이터베이스에서만 실행할 수 있습니다.This example can only be executed in a contained database.

적용 대상: SQL Server 2012(11.x)SQL Server 2012 (11.x) 부터 SQL Server 2017SQL Server 2017까지Applies to: SQL Server 2012(11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017.

USE AdventureWorks2012 ;  
GO  
CREATE USER CarmenW WITH PASSWORD = 'a8ea v*(Rd##+'  
, SID = 0x01050000000000090300000063FF0451A9E7664BA705B10E37DDC4B7;  

8.H. 암호화된 데이터를 복사할 사용자 만들기Creating a user to copy encrypted data

다음 예에서는 Always Encrypted 기능으로 보호되는 데이터를 암호화된 열이 있는 테이블 집합에서 암호화된 열이 있는 또 다른 테이블 집합으로(동일하거나 다른 데이터베이스에 있음) 복사할 수 있는 사용자를 만듭니다.The following example creates a user that can copy data that is protected by the Always Encrypted feature from one set of tables, containing encrypted columns, to another set of tables with encrypted columns (in the same or a different database). 자세한 내용은 상시 암호화로 보호되는 중요한 데이터 마이그레이션을 참조하세요.For more information, see Migrate Sensitive Data Protected by Always Encrypted.

적용 대상: SQL Server 2016(13.x)SQL Server 2016 (13.x)부터 SQL Server 2017SQL Server 2017, SQL 데이터베이스SQL Database까지Applies to: SQL Server 2016(13.x)SQL Server 2016 (13.x) through SQL Server 2017SQL Server 2017, SQL 데이터베이스SQL Database.

CREATE USER [Chin]   
WITH   
      DEFAULT_SCHEMA = dbo  
    , ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = ON ;  

다음 단계Next steps

사용자가 생성되면 ALTER ROLE 문을 사용하여 데이터베이스 역할에 사용자를 추가하는 것이 좋습니다.Once the user is created, consider adding the user to a database role using the ALTER ROLE statement.
테이블에 액세스할 수 있도록 역할에 GRANT 개체 사용 권한을 수행할 수도 있습니다.You might also want to GRANT Object Permissions to the role so they can access tables. SQL Server 보안 모델에 대한 일반적인 내용은 사용 권한을 참조하세요.For general information about the SQL Server security model, see Permissions.

참고 항목See Also

데이터베이스 사용자 만들기 Create a Database User
sys.database_principals(Transact-SQL) sys.database_principals (Transact-SQL)
ALTER USER(Transact-SQL) ALTER USER (Transact-SQL)
DROP USER (Transact-SQL) DROP USER (Transact-SQL)
CREATE LOGIN (Transact-SQL) CREATE LOGIN (Transact-SQL)
EVENTDATA(Transact-SQL) EVENTDATA (Transact-SQL)
포함된 데이터베이스 Contained Databases
Azure Active Directory 인증을 사용하여 SQL Database에 연결 Connecting to SQL Database By Using Azure Active Directory Authentication
데이터베이스 엔진 권한 시작Getting Started with Database Engine Permissions