CREATE USER(Transact-SQL)

현재 데이터베이스에 사용자를 추가합니다.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

CREATE USER user_name     [ { { FOR | FROM }
      { 
        LOGIN login_name 
        | CERTIFICATE cert_name 
        | ASYMMETRIC KEY asym_key_name
      } 
      | WITHOUT LOGIN
    ] 
    [ WITH DEFAULT_SCHEMA = schema_name ]

인수

  • user_name
    이 데이터베이스 내에서 사용자를 식별하는 이름을 지정합니다. user_namesysname입니다. 최대 128자까지 지정할 수 있습니다.
  • LOGIN login_name
    데이터베이스 사용자를 생성할 SQL Server 로그인을 지정합니다. login_name은 서버에서 유효한 로그인이어야 합니다. 이 SQL Server 로그인은 데이터베이스에 액세스할 때 생성될 데이터베이스 사용자의 이름과 ID를 얻게 됩니다.
  • CERTIFICATE cert_name
    데이터베이스 사용자를 생성할 인증서를 지정합니다.
  • ASYMMETRIC KEY asym_key_name
    데이터베이스 사용자를 생성할 비대칭 키를 지정합니다.
  • WITH DEFAULT_SCHEMA **=**schema_name
    서버가 이 데이터베이스 사용자에 대한 개체의 이름을 확인할 때 검색할 첫 번째 스키마를 지정합니다.
  • WITHOUT LOGIN
    사용자가 기존 로그인에 매핑되지 않도록 지정합니다.

주의

FOR LOGIN을 생략하면 새 데이터베이스 사용자가 같은 이름으로 SQL Server 로그인에 매핑됩니다.

DEFAULT_SCHEMA를 정의하지 않은 채로 두면 dbo가 데이터베이스 사용자의 기본 스키마로 사용됩니다. DEFAULT_SCHEMA는 현재 데이터베이스에 없는 스키마로 설정할 수 있으며 가리키는 스키마가 생성되기 전에 설정할 수 있습니다. Windows 그룹, 인증서 또는 비대칭 키에 매핑된 사용자를 생성할 때는 DEFAULT_SCHEMA를 지정할 수 없습니다.

ms173463.note(ko-kr,SQL.90).gif중요:
사용자가 sysadmin 고정 서버 역할의 멤버이면 DEFAULT_SCHEMA 값은 무시됩니다. sysadmin 고정 서버 역할의 모든 멤버는 기본 스키마가 dbo입니다.

WITHOUT LOGIN 절은 SQL Server 로그인에 매핑되지 않은 사용자를 만들며 guest와 같은 다른 데이터베이스에 연결할 수 있습니다.

SQL Server 로그인, 인증서 또는 비대칭 키에 매핑되는 사용자의 이름에는 백슬래시 문자(\)가 포함될 수 없습니다.

guest 사용자가 이미 모든 데이터베이스 내에 있기 때문에 CREATE USER를 사용하여 guest 사용자를 만들 수 없습니다. 다음과 같이 CONNECT 권한을 부여하여 guest 사용자를 사용할 수 있습니다.

GRANT CONNECT TO guest;
GO

데이터베이스 사용자에 대한 정보는 sys.database_principals(Transact-SQL) 카탈로그 뷰에서 볼 수 있습니다.

ms173463.Caution(ko-kr,SQL.90).gif주의:
SQL Server 2005의 스키마 동작은 이전 버전의 SQL Server 동작과 다릅니다. 스키마가 데이터베이스 사용자와 같다고 가정하는 코드에서 올바른 결과가 반환되지 않을 수도 있습니다. sysobjects를 비롯한 이전 카탈로그 뷰는 CREATE SCHEMA, ALTER SCHEMA, DROP SCHEMA, CREATE USER, ALTER USER, DROP USER, CREATE ROLE, ALTER ROLE, DROP ROLE, CREATE APPROLE, ALTER APPROLE, DROP APPROLE, ALTER AUTHORIZATION 등의 DDL 문이 사용된 데이터베이스에서 사용하지 않아야 합니다. 이러한 문이 사용된 데이터베이스에서는 새 카탈로그 뷰를 사용해야 합니다. 새 카탈로그 뷰는 SQL Server 2005에서 도입된 보안 주체와 스키마 분리를 고려합니다. 카탈로그 뷰에 대한 자세한 내용은 카탈로그 뷰(Transact-SQL)를 참조하십시오.

사용 권한

데이터베이스에 대한 ALTER ANY USER 권한이 필요합니다.

1. 데이터베이스 사용자 만들기

다음 예에서는 암호를 사용하여 AbolrousHazem이라는 서버 로그인을 만든 다음 AdventureWorks에 해당 데이터베이스 사용자 AbolrousHazem을 만듭니다.

CREATE LOGIN AbolrousHazem 
    WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';
USE AdventureWorks;
CREATE USER AbolrousHazem FOR LOGIN AbolrousHazem;
GO 

2. 기본 스키마로 데이터베이스 사용자 만들기

다음 예에서는 암호를 사용하여 WanidaBenshoof라는 서버 로그인을 만든 다음 기본 스키마인 Marketing을 사용하여 해당 데이터베이스 사용자 Wanida를 만듭니다.

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

3. 인증서에서 데이터베이스 사용자 만들기

다음 예에서는 CarnationProduction50 인증서에서 데이터베이스 사용자 JinghaoLiu를 만듭니다.

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

참고 항목

참조

sys.database_principals(Transact-SQL)
ALTER USER(Transact-SQL)
DROP USER(Transact-SQL)
CREATE LOGIN(Transact-SQL)
EVENTDATA(Transact-SQL)

관련 자료

사용자와 스키마 분리

도움말 및 정보

SQL Server 2005 지원 받기