CREATE USER(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_name은 sysname입니다. 최대 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를 지정할 수 없습니다.
중요: |
---|
사용자가 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) 카탈로그 뷰에서 볼 수 있습니다.
주의: |
---|
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)