CREATE USER(Transact-SQL)
적용 대상: Microsoft Fabric의 SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW) SQL 데이터베이스
현재 데이터베이스에 사용자를 추가합니다. 13가지 유형의 사용자가 가장 기본적인 구문 샘플과 함께 나열됩니다.
참고 항목
Microsoft Entra ID는 Azure AD(Azure Active Directory)의 새 이름이지만, 기존 환경의 중단을 방지하기 위해 UI 필드, 연결 공급자, 오류 코드 및 cmdlet과 같은 일부 하드 코딩된 요소에는 여전히 Azure AD가 남아 있습니다. 이 문서에서는 두 이름을 혼용할 수 있습니다.
로그인을 기반으로 하는 사용자 master
Windows Active Directory 계정을 기반으로 하는 로그인 기반 사용자입니다.
CREATE USER [Contoso\Fritz];
Windows 그룹을 기반으로 하는 로그인 기반 사용자
CREATE USER [Contoso\Sales];
SQL Server 인증을 사용하는 로그인 기반 사용자
CREATE USER Mary;
Microsoft Entra 로그인을 기반으로 하는 사용자입니다.
CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com]
참고 항목
Microsoft Entra 서버 보안 주체(로그인) 는 현재 Azure SQL Database에 대한 공개 미리 보기로 제공됩니다.
참고 항목
로그인 및 로그인 기반 사용자는 Microsoft Fabric의 SQL 데이터베이스에서 지원되지 않습니다.
데이터베이스에서 인증하는 사용자 - 데이터베이스의 이식성을 높이기 위해 사용하는 것이 좋습니다.
SQL Database에 항상 허용됩니다. SQL Server에 포함된 데이터베이스에서만 사용할 수 있습니다.
로그인이 없는 Windows 사용자 기반 사용자
CREATE USER [Contoso\Fritz];
로그인이 없는 Windows 그룹 기반 사용자
CREATE USER [Contoso\Sales];
Microsoft Entra 사용자를 기반으로 하는 SQL Database 또는 Azure Synapse Analytics의 사용자입니다.
CREATE USER [Fritz@contoso.com] FROM EXTERNAL PROVIDER;
암호가 있는 포함된 데이터베이스 사용자 (Azure Synapse Analytics에서 사용할 수 없습니다.)
CREATE USER Mary WITH PASSWORD = '********';
Windows 그룹 로그인을 통해 연결하는 Windows 보안 주체 기반 사용자
로그인이 없지만 Windows 그룹의 멤버 자격을 통해 데이터베이스 엔진에 연결할 수 있는 Windows 사용자 기반 사용자
CREATE USER [Contoso\Fritz];
로그인이 없지만 다른 Windows 그룹의 멤버 자격을 통해 데이터베이스 엔진에 연결할 수 있는 Windows 그룹 기반 사용자
CREATE USER [Contoso\Fritz];
인증 할 수 없는 사용자 - 이러한 사용자는 SQL Server 또는 SQL Database에 로그인할 수 없습니다.
- 로그인이 없는 사용자. 로그인할 수 없지만 사용 권한을 부여할 수 있습니다.
CREATE USER CustomApp WITHOUT LOGIN;
- 인증서 기반 사용자. 로그인할 수 없지만 사용 권한을 부여할 수 있으며 모듈에 서명할 수 있습니다.
CREATE USER TestProcess FOR CERTIFICATE CarnationProduction50;
- 비대칭 키 기반 사용자. 로그인할 수 없지만 사용 권한을 부여할 수 있으며 모듈에 서명할 수 있습니다.
CREATE User TestProcess FROM ASYMMETRIC KEY PacificSales09;
Syntax
SQL Server, Azure SQL Database 및 Azure SQL Managed Instance용 구문
-- 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> [ ,... ]
| Microsoft_Entra_principal FROM EXTERNAL PROVIDER [WITH OBJECT_ID = 'objectid']
}
[ ; ]
-- 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 users based on Microsoft Entra logins for Azure SQL Managed Instance
CREATE USER user_name
[ { FOR | FROM } LOGIN login_name ]
| FROM EXTERNAL PROVIDER
[ WITH <limited_options_list> [ ,... ] ]
[ ; ]
<limited_options_list> ::=
DEFAULT_SCHEMA = schema_name
| DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ]
Azure Synapse Analytics 구문
CREATE USER user_name
[ { { FOR | FROM } { LOGIN login_name }
| WITHOUT LOGIN
]
[ WITH DEFAULT_SCHEMA = schema_name ]
[;]
CREATE USER Microsoft_Entra_principal FROM EXTERNAL PROVIDER
[ WITH DEFAULT_SCHEMA = schema_name ]
[;]
Microsoft Fabric의 SQL 데이터베이스 구문
CREATE USER
{
Microsoft_Entra_principal FROM EXTERNAL PROVIDER [ WITH <limited_options_list> [ ,... ] ]
| Microsoft_Entra_principal WITH <options_list> [ ,... ]
}
[ ; ]
-- Users that cannot authenticate
CREATE USER user_name
{ WITHOUT LOGIN [ WITH DEFAULT_SCHEMA = schema_name ]
| { FOR | FROM } CERTIFICATE cert_name
| { FOR | FROM } ASYMMETRIC KEY asym_key_name
}
[ ; ]
<limited_options_list> ::=
DEFAULT_SCHEMA = schema_name
| OBJECT_ID = 'objectid'
<options_list> ::=
DEFAULT_SCHEMA = schema_name
| SID = sid
| TYPE = { X | E }
병렬 데이터 웨어하우스 구문
CREATE USER user_name
[ { { FOR | FROM }
{
LOGIN login_name
}
| WITHOUT LOGIN
]
[ WITH DEFAULT_SCHEMA = schema_name ]
[;]
인수
user_name
이 데이터베이스 내에서 사용자를 식별하는 이름을 지정합니다. user_name은 sysname입니다. 최대 128자까지 지정할 수 있습니다. Windows 보안 주체 기반 사용자를 만드는 경우 다른 사용자 이름을 지정하지 않으면 Windows 보안 주체 이름이 사용자 이름이 됩니다.
LOGIN login_name
데이터베이스 사용자를 만들 로그인을 지정합니다. login_name은 서버에서 유효한 로그인이어야 합니다. Windows 보안 주체(사용자 또는 그룹), SQL Server 인증을 사용한 로그인 또는 Microsoft Entra 보안 주체(사용자, 그룹 또는 애플리케이션)를 사용한 로그인일 수 있습니다. 이 SQL Server 로그인이 데이터베이스에 들어가면 생성 중인 데이터베이스 사용자의 이름과 ID를 획득합니다. Windows 보안 주체에서 매핑된 로그인을 만들 때는 [<domainName>\<loginName>] 형식을 사용하세요. 예제는 구문 요약을 참조하세요.
CREATE USER 문이 SQL 일괄 처리의 유일한 문인 경우 Azure SQL Database는 WITH LOGIN 절을 지원합니다. CREATE USER 문이 SQL 일괄 처리의 유일한 문이 아니거나 동적 SQL에서 실행되는 경우 WITH LOGIN 절이 지원되지 않습니다.
WITH DEFAULT_SCHEMA = schema_name
서버에서 이 데이터베이스 사용자에 대한 개체 이름을 확인할 때 첫 번째로 검색하는 스키마를 지정합니다.
'windows_principal'
데이터베이스 사용자를 만들 Windows 보안 주체를 지정합니다. windows_principal은 Windows 사용자 또는 Windows 그룹일 수 있습니다. windows_principal에 로그인이 없어도 사용자가 만들어집니다. SQL Server에 연결할 때 windows_principal에 로그인을 가지고 있지 않은 경우 Windows 보안 주체가 로그인이 있는 Windows 그룹의 멤버 자격을 통해 데이터베이스 엔진에서 인증하거나 연결 문자열에서 포함된 데이터베이스를 초기 카탈로그로 지정해야 합니다. Windows 보안 주체에서 사용자를 만들 때는 [<domainName>\<loginName>] 형식을 사용하세요. 예제는 구문 요약을 참조하세요. Active Directory 사용자에 기반한 사용자는 21자 미만의 이름으로 제한됩니다.
'Microsoft_Entra_principal'
적용 대상: Microsoft Fabric의 SQL Database, SQL Managed Instance, Azure Synapse Analytics, SQL Database
데이터베이스 사용자를 만들 Microsoft Entra 보안 주체를 지정합니다. Microsoft_Entra_principal Microsoft Entra 사용자, Microsoft Entra 그룹 또는 Microsoft Entra 애플리케이션일 수 있습니다. (Microsoft Entra 사용자는 SQL Database에서 Windows 인증 로그인을 가질 수 없으며 데이터베이스 사용자만 사용할 수 있습니다.) 연결 문자열 포함된 데이터베이스를 초기 카탈로그로 지정해야 합니다.
Microsoft Entra 보안 주체의 경우 CREATE USER 구문에는 다음이 필요합니다.
Microsoft Entra 사용자용 Microsoft Entra 개체의 UserPrincipalName입니다.
CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
CREATE USER [alice@fabrikam.onmicrosoft.com] FROM EXTERNAL PROVIDER;
Microsoft Entra 서버 보안 주체(로그인) 는 가상
master
데이터베이스에서 Microsoft Entra 로그인에 매핑되는 사용자를 만드는 방법을 소개합니다. 예를 들어CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com];
2048개 이상의 Microsoft Entra 보안 그룹의 구성원인 Microsoft Entra 사용자 및 애플리케이션(서비스 주체)은 Azure SQL Database, Azure SQL Managed Instance 또는 Azure Synapse의 데이터베이스에 로그인할 수 없습니다.
Microsoft Entra 그룹 및 Microsoft Entra Applications용 Microsoft Entra 개체의 DisplayName입니다. Nurses 보안 그룹이 있다면 다음을 사용합니다.
CREATE USER [Nurses] FROM EXTERNAL PROVIDER;
자세한 내용은 Microsoft Entra 인증을 사용하여 SQL Database에 연결을 참조하세요.
WITH PASSWORD = 'password'
적용 대상: SQL Server 2012(11.x) 이상, SQL Database.
포함된 데이터베이스에서만 사용할 수 있습니다. 만들 사용자의 암호를 지정합니다. SQL Server 2012(11.x)부터 저장된 암호 정보는 솔트 암호의 SHA-512를 사용하여 계산됩니다.
WITHOUT LOGIN
사용자가 기존 로그인에 매핑되지 않도록 지정합니다.
CERTIFICATE cert_name
적용 대상: MICROSOFT Fabric의 SQL Server 2008(10.0.x) 이상, SQL Database, SQL Database
데이터베이스 사용자를 만들 인증서를 지정합니다.
ASYMMETRIC KEY asym_key_name
적용 대상: MICROSOFT Fabric의 SQL Server 2008(10.0.x) 이상, SQL Database, SQL Database
데이터베이스 사용자를 만들 비대칭 키를 지정합니다.
DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language salias> }
적용 대상: SQL Server 2012(11.x) 이상, SQL Database
새 사용자의 기본 언어를 지정합니다. 사용자의 기본 언어가 지정된 경우 데이터베이스의 기본 언어가 나중에 변경되더라도 사용자의 기본 언어는 지정된 대로 유지됩니다. 기본 언어를 지정하지 않으면 사용자의 기본 언어는 데이터베이스의 기본 언어가 됩니다. 사용자의 기본 언어가 지정되지 않은 경우 데이터베이스의 기본 언어가 나중에 변경되면 사용자의 기본 언어는 데이터베이스의 새 기본 언어로 변경됩니다.
중요
DEFAULT_LANGUAGE는 포함된 데이터베이스 사용자에 대해서만 사용됩니다.
SID = sid
적용 대상: SQL Server 2012(11.x) 이상 및 Microsoft Fabric의 SQL 데이터베이스에 적용됩니다.
SQL Server 2012(11.x) 이상에서는 포함된 데이터베이스에 암호(SQL Server 인증)가 있는 사용자에게만 적용됩니다. 새 데이터베이스 사용자의 SID를 지정합니다. 이 옵션을 선택하지 않으면 SQL Server에서 자동으로 SID를 할당합니다. SID 매개 변수를 사용하여 여러 데이터베이스에 ID(SID)가 동일한 사용자를 만듭니다. 이 옵션은 여러 데이터베이스에 사용자를 만들어 Always On 장애 조치(failover)를 준비하려는 경우에 유용합니다. 사용자의 SID를 확인하려면 sys.database_principals를 쿼리합니다.
Microsoft Fabric sid
의 SQL 데이터베이스에서 지정된 Microsoft Entra 보안 주체의 유효한 ID여야 합니다. 보안 주체가 사용자 또는 그룹인 경우 ID는 사용자/그룹의 Microsoft Entra 개체 ID여야 합니다. Microsoft Entra 보안 주체가 서비스 주체(애플리케이션 또는 관리 ID)인 경우 ID는 애플리케이션 ID(또는 클라이언트 ID)여야 합니다. 지정된 ID는 값이어야 binary(16)
합니다. 데이터베이스 엔진 Microsoft Entra에서 지정된 ID의 유효성을 검사하지 않습니다. arguemnt는 SID
.와 TYPE
함께 사용해야 합니다.
TYPE = [ E | X ]
적용 대상: Microsoft Fabric의 SQL 데이터베이스.
Microsoft Entra 보안 주체의 유형을 지정합니다. E
는 보안 주체가 사용자 또는 서비스 주체(애플리케이션 또는 관리 ID)임을 나타냅니다. X
는 보안 주체가 그룹임을 나타냅니다.
ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
적용 대상: SQL Server 2016(13.x) 이상, SQL Database.
대량 복사 작업에서 서버에 대한 암호화 메타데이터 검사를 표시하지 않습니다. 이를 통해 사용자는 데이터를 암호 해독하지 않고도 테이블이나 데이터베이스 사이에 암호화된 데이터를 대량 복사할 수 있습니다. 기본값은 OFF입니다.
경고
이 옵션을 부적절하게 사용할 경우 데이터가 손상될 수 있습니다. 자세한 내용은 상시 암호화로 보호되는 중요한 데이터 마이그레이션을 참조하세요.
FROM EXTERNAL PROVIDER
적용 대상: Microsoft Fabric의 SQL Database, Azure SQL Managed Instance, SQL Database
보안 주체가 Microsoft Entra 인증용임을 지정합니다. SQL Server는 Microsoft Entra에서 제공된 보안 주체 이름의 유효성을 자동으로 검사합니다.
문을 발행하는 CREATE USER
보안 주체가 Microsoft Entra 사용자 보안 주체인 경우 보안 주체(또는 보안 주체의 그룹)는 Microsoft Entra의 디렉터리 읽기 권한자 역할에 있어야 합니다.
SQL Database 및 Azure SQL Managed Instance에서 문을 발급하는 CREATE USER
보안 주체가 서비스 주체인 경우 데이터베이스 서버 또는 관리되는 인스턴스의 ID는 Microsoft Entra의 디렉터리 읽기 권한자 역할에 있어야 합니다.
Microsoft Fabric FROM EXTERNAL PROVIDER
의 SQL 데이터베이스에서는 보안 주체 발급 CREATE USER
이 Microsoft Entra의 서비스 주체인 경우 허용되지 않습니다. 서비스 주체는 Microsoft Entra 보안 주체에 대한 사용자를 만들기 위해 사용하고 TYPE
SID
검색해야 합니다.
WITH OBJECT_ID = 'objectid'
적용 대상: Microsoft Fabric의 SQL Database, Azure SQL Managed Instance, SQL Database
Microsoft Entra 개체 ID를 지정합니다. OBJECT_ID
지정된 경우 user_name 접미사가 추가된 원래 보안 주체 표시 이름에서 형성된 사용자 정의 별칭일 수 있습니다. user_name 보기에서 sys.database_principals
고유한 이름이어야 하며 다른 sysname
모든 제한 사항을 준수해야 합니다. 이 옵션을 사용하는 WITH OBJECT_ID
방법에 대한 자세한 내용은 Microsoft Entra 로그인 및 특수하지 않은 표시 이름을 가진 사용자를 참조하세요.
참고 항목
서비스 주체 표시 이름이 중복되지 않은 경우 기본값 CREATE LOGIN
또는 CREATE USER
문을 사용해야 합니다. 확장은 WITH OBJECT_ID
특수하지 않은 서비스 주체와 함께 사용하기 위해 구현된 문제 해결 복구 항목입니다. 고유한 서비스 주체와 함께 사용하는 것은 권장되지 않습니다. 접미사를 추가하지 않고 서비스 주체에 WITH OBJECT_ID
익스텐션을 사용하면 성공적으로 실행은 되지만 로그인 또는 사용자가 만들어진 서비스 주체를 명확하게 나타내지는 못합니다. 서비스 주체를 고유하게 식별하는 접미사를 사용하여 별칭을 만들 것을 권장합니다. SQL Server에는 WITH OBJECT_ID
익스텐션이 지원되지 않습니다.
설명
생략하면 FOR LOGIN
새 데이터베이스 사용자가 동일한 이름의 SQL Server 로그인에 매핑됩니다.
기본 스키마는 서버에서 이 데이터베이스 사용자에 대한 개체 이름을 확인할 때 첫 번째로 검색하는 스키마가 됩니다. 달리 지정하지 않는 한 기본 스키마는 이 데이터베이스 사용자가 만든 개체의 소유자가 됩니다.
사용자에게 기본 스키마가 있는 경우에는 해당 기본 스키마가 사용됩니다. 사용자에게 기본 스키마가 없지만 사용자가 기본 스키마가 있는 그룹의 멤버인 경우에는 그룹의 기본 스키마가 사용됩니다. 사용자에게 기본 스키마가 없고 사용자가 두 개 이상 그룹의 멤버인 경우 principle_id가 가장 낮고 명시적으로 설정된 기본 스키마가 있는 Windows 그룹의 기본 스키마가 사용자의 기본 스키마가 됩니다. (사용할 수 있는 기본 스키마 중 하나를 기본 설정 스키마로 명시적으로 선택할 수는 없습니다.) 사용자의 기본 스키마를 확인할 수 없으면 dbo 스키마가 사용됩니다.
DEFAULT_SCHEMA는 가리키는 스키마가 만들어지기 전에 설정될 수 있습니다.
인증서 또는 비대칭 키에 매핑된 사용자를 생성할 때는 DEFAULT_SCHEMA를 지정할 수 없습니다.
사용자가 sysadmin 고정 서버 역할의 멤버이면 DEFAULT_SCHEMA 값은 무시됩니다. sysadmin 고정 서버 역할의 모든 멤버는 기본 스키마가 dbo
입니다.
WITHOUT LOGIN 절은 SQL Server 로그인에 매핑되지 않는 사용자를 만듭니다. guest와 같은 다른 데이터베이스에 연결할 수 있습니다. 로그인 없이 이 사용자에게 권한을 할당할 수 있으며, 로그인 없이 보안 컨텍스트가 사용자로 변경되면 원래 사용자는 로그인 없이 사용자의 권한을 받습니다. D. 로그인 없이 사용자 만들기 및 사용 예제를 참조하세요.
Windows 보안 주체에 매핑되는 사용자만 백슬래시 문자( \ )를 포함할 수 있습니다.
게스트 사용자가 이미 모든 데이터베이스 내에 있기 때문에 CREATE USER를 사용하여 게스트 사용자를 만들 수 없습니다. 다음과 같이 CONNECT 권한을 부여하여 게스트 사용자를 사용할 수 있습니다.
GRANT CONNECT TO guest;
GO
데이터베이스 사용자 정보는 sys.database_principals 카탈로그 뷰에 표시됩니다.
구문 확장을 FROM EXTERNAL PROVIDER
사용하여 Azure SQL Database 및 Azure SQL Managed Instance에서 서버 수준 Microsoft Entra 로그인을 만듭니다. Microsoft Entra 로그인을 사용하면 데이터베이스 수준 Microsoft Entra 보안 주체를 서버 수준 Microsoft Entra 로그인에 매핑할 수 있습니다. Microsoft Entra 로그인에서 Microsoft Entra 사용자를 만들려면 다음 구문을 사용합니다.
CREATE USER [Microsoft_Entra_principal] FROM LOGIN [Microsoft Entra login];
Azure SQL 데이터베이스에서 사용자를 만들 때 login_name 기존 Microsoft Entra 로그인에 해당해야 합니다. 그렇지 않으면 FROM EXTERNAL PROVIDER 절을 사용하면 데이터베이스에 master
로그인하지 않고 Microsoft Entra 사용자만 생성됩니다. 예를 들어 이 명령은 다음이 포함된 사용자를 만듭니다.
CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
구문 요약
로그인을 기반으로 하는 사용자 master
다음 목록에서는 로그인 기반 사용자에 대해 사용할 수 있는 구문을 보여 줍니다. 기본 스키마 옵션은 나열되지 않습니다.
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
데이터베이스에서 인증하는 사용자
다음 목록에서는 포함된 데이터베이스에서만 사용할 수 있는 사용자에 대한 구문을 보여 줍니다. 생성된 사용자는 master 데이터베이스의 로그인에 연결되지 않습니다. 기본 스키마 및 언어 옵션은 나열되지 않습니다.
중요
이 구문은 사용자에게 데이터베이스에 대한 액세스 권한을 부여하며 데이터베이스 엔진에 대한 새로운 액세스 권한도 부여합니다.
CREATE USER [Domain1\WindowsUserBarry]
CREATE USER [Domain1\WindowsGroupManagers]
CREATE USER Barry WITH PASSWORD = 'sdjklalie8rew8337!$d'
시스템 데이터베이스에 로그인하지 않은 Windows 보안 주체를 기반으로 하는 master
사용자
다음 목록에서는 Windows 그룹을 통해 데이터베이스 엔진 액세스할 수 있지만 시스템 데이터베이스에 로그인이 없는 사용자에 master
대한 가능한 구문을 보여 줍니다. 이 구문은 모든 유형의 데이터베이스에서 사용할 수 있습니다. 기본 스키마 및 언어 옵션은 나열되지 않습니다.
이 구문은 로그인 master
을 기반으로 하는 사용자와 유사하지만 이 사용자 범주에는 로그인 master
이 없습니다. 사용자는 Windows 그룹 로그인을 통해 데이터베이스 엔진에 액세스할 수 있어야 합니다.
이 구문은 Windows 보안 주체를 기반으로 하는 포함된 데이터베이스 사용자와 유사하지만 이 범주의 사용자는 데이터베이스 엔진에 대한 새로운 액세스 권한을 부여받지 않습니다.
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]
인증할 수 없는 사용자
다음 목록에서는 SQL 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
보안
사용자를 만들면 데이터베이스에 대한 액세스 권한이 부여되지만 데이터베이스 내부의 개체에 대한 액세스 권한은 자동으로 부여되지 않습니다. 사용자를 만든 후에는 대개 데이터베이스 개체에 액세스할 수 있는 권한이 있는 데이터베이스 역할에 사용자를 추가하거나 사용자에게 개체 사용 권한을 부여합니다. 권한 시스템 디자인에 대한 정보는 Getting Started with Database Engine Permissions을(를) 참조하세요.
포함된 데이터베이스에 대한 특별 고려 사항
포함된 데이터베이스에 연결할 때 사용자에게 데이터베이스에 master
로그인이 없는 경우 연결 문자열 포함된 데이터베이스 이름을 초기 카탈로그로 포함해야 합니다. 암호가 있는 포함된 데이터베이스 사용자의 경우 언제나 초기 카탈로그 매개 변수를 지정해야 합니다.
포함된 데이터베이스에서 사용자를 만들면 데이터베이스 엔진 인스턴스로부터 데이터베이스를 분리하는 데 도움이 됩니다. 데이터베이스를 분리하면 다른 SQL Server 인스턴스로 데이터베이스를 쉽게 이동할 수 있습니다. 자세한 내용은 포함된 데이터베이스 및 포함된 데이터베이스 사용자 - 이식 가능한 데이터베이스 만들기를 참조하세요. SQL Server 인증 로그인 기반 데이터베이스 사용자를 암호가 있는 포함된 데이터베이스 사용자로 변경하려면 sp_migrate_user_to_contained(Transact-SQL)를 참조하세요.
포함된 데이터베이스에서 사용자는 데이터베이스에 master
로그인할 필요가 없습니다. 데이터베이스 엔진 관리자는 데이터베이스 엔진 수준이 아니라 데이터베이스 수준에서 포함된 데이터베이스에 대한 액세스 권한을 부여할 수 있음을 이해해야 합니다. 자세한 내용은 Security Best Practices with Contained Databases를 참조하세요.
Azure SQL Database에 포함된 데이터베이스 사용자를 사용하는 경우, 서버 수준 방화벽 규칙 대신 데이터베이스 수준 방화벽 규칙을 사용하여 액세스를 구성합니다. 자세한 내용은 sp_set_database_firewall_rule(Azure SQL Database)을 참조하세요.
SQL Server 2022(16.x), SQL Database, Azure SQL Managed Instance 및 Azure Synapse Analytics에 포함된 데이터베이스 사용자의 경우 SSMS는 다단계 인증을 지원합니다. 자세한 내용은 Microsoft Entra 다단계 인증 사용을 참조하세요.
사용 권한
데이터베이스에 대한 ALTER ANY USER 권한이 필요합니다.
SQL Server 2022 이상에 대한 사용 권한
데이터베이스에 대한 CREATE USER 권한이 필요합니다.
예제
A. SQL Server 로그인 기반 데이터베이스 사용자 만들기
다음 예에서는 먼저 SQL Server이라는 AbolrousHazem
로그인을 만든 다음 AbolrousHazem
에 이에 해당하는 AdventureWorks2022
이라는 데이터베이스 사용자를 만듭니다.
CREATE LOGIN AbolrousHazem
WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';
사용자 데이터베이스로 변경합니다. 예를 들어 SQL Server는 USE AdventureWorks2022
문을 사용합니다. Azure Synapse Analytics 및 분석 플랫폼 시스템(PDW)에서 사용자 데이터베이스에 새 연결을 만들어야 합니다.
CREATE USER AbolrousHazem FOR LOGIN AbolrousHazem;
GO
B. 기본 스키마로 데이터베이스 사용자 만들기
다음 예에서는 암호를 사용하여 WanidaBenshoof
라는 서버 로그인을 만든 다음 기본 스키마인 Wanida
을 사용하여 해당 데이터베이스 사용자 Marketing
를 만듭니다.
CREATE LOGIN WanidaBenshoof
WITH PASSWORD = '8fdKJl3$nlNv3049jsKK';
USE AdventureWorks2022;
CREATE USER Wanida FOR LOGIN WanidaBenshoof
WITH DEFAULT_SCHEMA = Marketing;
GO
C. 인증서에서 데이터베이스 사용자 만들기
다음 예에서는 JinghaoLiu
인증서에서 데이터베이스 사용자 CarnationProduction50
를 만듭니다.
적용 대상: SQL Server 2008(10.0.x) 이상
USE AdventureWorks2022;
CREATE CERTIFICATE CarnationProduction50
WITH SUBJECT = 'Carnation Production Facility Supervisors',
EXPIRY_DATE = '11/11/2011';
GO
CREATE USER JinghaoLiu FOR CERTIFICATE CarnationProduction50;
GO
D. 로그인이 없는 사용자 만들기 및 사용
다음 예에서는 SQL Server 로그인에 매핑되지 않는 데이터베이스 사용자 CustomApp
를 만듭니다. 그런 다음 adventure-works\tengiz0
사용자를 가장하도록 사용자에게 CustomApp
권한을 부여합니다.
USE AdventureWorks2022;
CREATE USER CustomApp WITHOUT LOGIN ;
GRANT IMPERSONATE ON USER::CustomApp TO [adventure-works\tengiz0] ;
GO
CustomApp
자격 증명을 사용하기 위해 사용자 adventure-works\tengiz0
이 다음 문을 실행합니다.
EXECUTE AS USER = 'CustomApp' ;
GO
adventure-works\tengiz0
자격 증명으로 다시 돌아가려면 사용자는 다음 문을 실행합니다.
REVERT ;
GO
E. 암호가 있는 포함된 데이터베이스 사용자 만들기
다음 예에서는 암호가 있는 포함된 데이터베이스 사용자를 만듭니다. 이 예는 포함된 데이터베이스에서만 실행할 수 있습니다.
적용 대상: SQL Server 2012(11.x) 이상 DEFAULT_LANGUAGE가 삭제된 경우 이 예제가 SQL Database에서 동작합니다.
USE AdventureWorks2022;
GO
CREATE USER Carlo
WITH PASSWORD='RN92piTCh%$!~3K9844 Bl*'
, DEFAULT_LANGUAGE=[Brazilian]
, DEFAULT_SCHEMA=[dbo]
GO
F. 도메인 로그인에 대한 포함된 데이터베이스 사용자 만들기
다음 예에서는 Contoso라는 도메인의 Fritz라는 로그인에 대한 포함된 데이터베이스 사용자를 만듭니다. 이 예는 포함된 데이터베이스에서만 실행할 수 있습니다.
적용 대상: SQL Server 2012(11.x) 이상
USE AdventureWorks2022;
GO
CREATE USER [Contoso\Fritz] ;
GO
G. 특정 SID가 있는 포함된 데이터베이스 사용자 만들기
다음 예에서는 CarmenW라는 SQL Server 인증 포함된 데이터베이스 사용자를 만듭니다. 이 예는 포함된 데이터베이스에서만 실행할 수 있습니다.
적용 대상: SQL Server 2012(11.x) 이상
USE AdventureWorks2022;
GO
CREATE USER CarmenW WITH PASSWORD = 'a8ea v*(Rd##+'
, SID = 0x01050000000000090300000063FF0451A9E7664BA705B10E37DDC4B7;
H. 암호화된 데이터를 복사할 사용자 만들기
다음 예에서는 Always Encrypted 기능으로 보호되는 데이터를 암호화된 열이 있는 테이블 집합에서 암호화된 열이 있는 또 다른 테이블 집합으로(동일하거나 다른 데이터베이스에 있음) 복사할 수 있는 사용자를 만듭니다. 자세한 내용은 상시 암호화로 보호되는 중요한 데이터 마이그레이션을 참조하세요.
적용 대상: SQL Server 2016(13.x) 이상, SQL Database.
CREATE USER [Chin]
WITH
DEFAULT_SCHEMA = dbo
, ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = ON ;
9\. Azure SQL의 Microsoft Entra 로그인에서 Microsoft Entra 사용자 만들기
Microsoft Entra 로그인에서 Microsoft Entra 사용자를 만들려면 다음 구문을 사용합니다.
SQL Managed Instance에서 역할을 부여한 sysadmin
Microsoft Entra 로그인을 사용하여 Azure 또는 SQL Managed Instance의 논리 서버에 로그인하거나 loginmanager
SQL Database에서 역할을 부여합니다. 다음 T-SQL 스크립트는 로그인bob@contoso.com
에서 Microsoft Entra 사용자를 bob@contoso.com
만듭니다. 이 로그인은 CREATE LOGIN 예제에서 생성되었습니다.
CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com];
GO
Important
Microsoft Entra 로그인에서 USER를 만들 때 LOGIN에서 동일한 login_name user_name 지정합니다.
그룹인 Microsoft Entra 로그인에서 Microsoft Entra 사용자를 그룹으로 만드는 것이 지원됩니다.
CREATE USER [MS Entra group] FROM LOGIN [MS Entra group];
GO
그룹인 Microsoft Entra 로그인에서 Microsoft Entra 사용자를 만들 수도 있습니다.
CREATE USER [bob@contoso.com] FROM LOGIN [MS Entra group];
GO
J. Microsoft Entra 보안 주체에서 포함된 데이터베이스 사용자 만들기
다음 구문은 연결된 로그인master
이 없는 데이터베이스에 Microsoft Entra 사용자를 bob@contoso.com
만듭니다. 데이터베이스 엔진 지정된 사용자가 Microsoft Entra에 있는지 확인합니다.
CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
GO
11. 유효성 검사 없이 Microsoft Entra 보안 주체에서 포함된 데이터베이스 사용자 만들기
적용 대상: Microsoft Fabric의 SQL 데이터베이스
이 섹션의 예제에서는 Microsoft Entra에서 보안 주체 이름의 유효성을 검사하지 않고 Microsoft Entra 보안 주체에 대한 데이터베이스 사용자를 만듭니다.
다음 T-SQL 예제에서는 Microsoft bob@contoso.com
Entra 사용자에 대한 데이터베이스 사용자를 만듭니다. 새 사용자의 SID를 Microsoft Entra 사용자의 개체 ID로 바꿉 <unique identifier sid>
니다.
DECLARE @principal_name SYSNAME = 'bob@contoso.com';
DECLARE @objectId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- user's object ID in Microsoft Entra
-- Convert the guid to the right type
DECLARE @castObjectId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @objectId), 1);
-- Construct command: CREATE USER [@principal_name] WITH SID = @castObjectId, TYPE = E;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castObjectId + ', TYPE = E;'
EXEC (@cmd);
다음 예제에서는 이름이 Microsoft HRApp
Entra 서비스 주체에 대한 데이터베이스 사용자를 만듭니다. 새 사용자의 SID를 Microsoft Entra의 서비스 주체의 클라이언트 ID로 바꿉 <unique identifier sid>
니다.
DECLARE @principal_name SYSNAME = 'HRApp';
DECLARE @clientId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- principal's client ID in Microsoft Entra
-- Convert the guid to the right type
DECLARE @castClientId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @clientId), 1);
-- Construct command: CREATE USER [@principal_name] WITH SID = @castClientId, TYPE = E;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castClientId + ', TYPE = E;'
EXEC (@cmd);
다음 예제에서는 이름이 Microsoft HR
Entra 그룹에 대한 데이터베이스 사용자를 만듭니다. 새 사용자의 SID를 그룹의 개체 ID로 바꿉 <unique identifier sid>
니다.
DECLARE @group_name SYSNAME = 'HR';
DECLARE @objectId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- principal's object ID in Microsoft Entra
-- Convert the guid to the right type
DECLARE @castObjectId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @objectId), 1);
-- Construct command: CREATE USER [@groupName] WITH SID = @castObjectId, TYPE = X;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castObjectId + ', TYPE = X;'
EXEC (@cmd);
다음 단계
사용자가 생성되면 ALTER ROLE 문을 사용하여 데이터베이스 역할에 사용자를 추가하는 것이 좋습니다.
테이블에 액세스할 수 있도록 역할에 GRANT 개체 사용 권한을 수행할 수도 있습니다. SQL Server 보안 모델에 대한 일반적인 내용은 사용 권한을 참조하세요.