ALTER USER(Transact-SQL)

데이터베이스 사용자의 이름을 바꾸거나 기본 스키마를 변경합니다.

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

구문

ALTER USER userName  
     WITH <set_item> [ ,...n ]

<set_item> ::= 
     NAME = newUserName 
     | DEFAULT_SCHEMA = schemaName
     | LOGIN = loginName

인수

  • userName
    이 데이터베이스 내에서 사용자를 식별하는 이름을 지정합니다.

  • LOGIN **=**loginName
    사용자의 SID(보안 ID)를 다른 로그인의 SID와 일치하도록 변경하여 사용자를 다른 로그인으로 다시 매핑합니다.

  • NAME **=**newUserName
    이 사용자의 새 이름을 지정합니다. newUserName은 현재 데이터베이스에 아직 없는 이름이어야 합니다.

  • DEFAULT_SCHEMA **=**schemaName
    서버가 이 사용자에 대한 개체의 이름을 확인할 때 검색할 첫 번째 스키마를 지정합니다.

주의

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

중요 정보중요

사용자가 sysadmin 고정 서버 역할의 멤버이면 DEFAULT_SCHEMA 값은 무시됩니다. sysadmin 고정 서버 역할의 모든 멤버는 기본 스키마가 dbo입니다.

새 사용자 이름의 SID가 데이터베이스에 기록된 SID와 일치할 때만 Windows 로그인 또는 그룹에 매핑된 사용자의 이름을 변경할 수 있습니다. 이 검사는 데이터베이스에서 Windows 로그인의 스푸핑을 방지하는 데 도움이 됩니다.

WITH LOGIN 절을 사용하면 사용자를 다른 로그인으로 다시 매핑할 수 있습니다. 로그인이 없는 사용자, 인증서로 매핑된 사용자 또는 비대칭 키로 매핑된 사용자는 이 절을 사용하여 다시 매핑할 수 없습니다. SQL 사용자 및 Windows 사용자(또는 그룹)만 다시 매핑할 수 있습니다. WITH LOGIN 절은 Windows 계정을 SQL Server 로그인으로 변경하는 것처럼 사용자 유형을 변경하는 데는 사용할 수 없습니다.

다음 조건이 충족되면 사용자 이름이 로그인 이름으로 자동 변경됩니다.

  • 사용자가 Windows 사용자입니다.

  • 이름이 Windows 이름입니다(백슬래시 포함).

  • 새 이름이 지정되지 않았습니다.

  • 현재 이름이 로그인 이름과 다릅니다.

위의 조건을 충족하지 않으면 사용자 이름이 변경되지 않으며 호출자가 NAME 절을 추가로 호출해야 합니다.

[!참고]

ALTER ANY USER 권한이 있는 사용자는 모든 사용자의 기본 스키마를 변경할 수 있습니다. 스키마가 변경된 사용자는 자신도 모르는 사이 잘못된 테이블에서 데이터를 선택하거나 잘못된 스키마의 코드를 실행할 수 있습니다.

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

주의 사항주의

SQL Server 2005부터 스키마 동작이 변경되었습니다. 이에 따라 스키마가 데이터베이스 사용자와 같다고 가정하는 코드에서 올바른 결과가 반환되지 않을 수 있습니다. 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 권한이 필요합니다. 기본 스키마를 변경하려면 사용자에 대한 ALTER 권한이 필요합니다. 사용자는 자신의 기본 스키마만 변경할 수 있습니다.

사용자를 로그온에 다시 매핑하려면 데이터베이스에 대한 CONTROL 권한이 필요합니다.

1. 데이터베이스 사용자의 이름 변경

다음 예에서는 데이터베이스 사용자 Mary5의 이름을 Mary51로 변경합니다.

USE AdventureWorks;
ALTER USER Mary5 WITH NAME = Mary51;
GO 

2. 사용자의 기본 스키마 변경

다음 예에서는 Mary51 사용자의 기본 스키마를 Purchasing으로 변경합니다.

USE AdventureWorks;
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO