ALTER USER(Transact-SQL)

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

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

구문

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

<set_item> ::= 
      NAME = newUserName 
    | DEFAULT_SCHEMA = { schemaName | NULL }
    | LOGIN = loginName
    | PASSWORD = 'password' [ OLD_PASSWORD = 'oldpassword' ]
    | DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }

인수

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

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

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

  • DEFAULT_SCHEMA = { schemaName | NULL }
    서버에서 이 사용자에 대한 개체 이름을 확인할 때 첫 번째로 검색할 스키마를 지정합니다. 기본 스키마를 NULL로 설정하면 Windows 그룹에서 기본 스키마가 제거됩니다. Windows 사용자에는 NULL 옵션을 사용할 수 없습니다.

  • PASSWORD = 'password'
    변경할 사용자의 암호를 지정합니다. 암호는 대소문자를 구분합니다.

    [!참고]

    이 옵션은 포함된 사용자에 대해서만 사용할 수 있습니다. 자세한 내용은 포함된 데이터베이스sp_migrate_user_to_contained(Transact-SQL)를 참조하십시오.

  • OLD_PASSWORD ='oldpassword'
    'password'로 바뀔 현재 사용자 암호입니다. 암호는 대소문자를 구분합니다. ALTER ANY USER 권한이 없으면 OLD_PASSWORD가 있어야 암호를 변경할 수 있습니다. OLD_PASSWORD를 요구하면 IMPERSONATION 권한을 가진 사용자가 암호를 변경할 수 없습니다.

    [!참고]

    이 옵션은 포함된 사용자에 대해서만 사용할 수 있습니다.

  • DEFAULT_LANGUAGE ={ NONE | <lcid> | <language name> | <language alias> }
    사용자에게 할당할 기본 언어를 지정합니다. 이 옵션을 NONE으로 설정하면 기본 언어가 데이터베이스의 현재 기본 언어로 설정됩니다. 나중에 데이터베이스의 기본 언어가 변경되더라도 사용자의 기본 언어는 그대로 유지됩니다. DEFAULT_LANGUAGE는 로컬 ID(lcid), 언어 이름 또는 언어 별칭이 될 수 있습니다.

    [!참고]

    이 옵션은 포함된 데이터베이스에서 포함된 사용자에 대해서만 지정할 수 있습니다.

주의

기본 스키마는 서버에서 이 데이터베이스 사용자에 대한 개체 이름을 확인할 때 첫 번째로 검색하는 스키마가 됩니다. 달리 지정하지 않는 한 기본 스키마는 이 데이터베이스 사용자가 만든 개체의 소유자가 됩니다.

사용자에게 기본 스키마가 있는 경우에는 해당 기본 스키마가 사용됩니다. 사용자에게 기본 스키마가 없지만 사용자가 기본 스키마가 있는 그룹의 멤버인 경우에는 그룹의 기본 스키마가 사용됩니다. 사용자에게 기본 스키마가 없고 사용자가 두 개 이상 그룹의 멤버인 경우 principle_id가 가장 낮고 명시적으로 설정된 기본 스키마가 있는 Windows 그룹의 기본 스키마가 사용자의 기본 스키마가 됩니다. 사용자의 기본 스키마를 확인할 수 없으면 dbo 스키마가 사용됩니다.

DEFAULT_SCHEMA는 현재 데이터베이스에 없는 스키마로 설정할 수 있습니다. 따라서 해당 스키마가 생성되기 전에 DEFAULT_SCHEMA를 사용자에게 할당할 수 있습니다.

인증서 또는 비대칭 키에 매핑된 사용자에는 DEFAULT_SCHEMA를 지정할 수 없습니다.

중요 정보중요

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

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

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

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

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

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

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

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

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

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 ANY USER 권한이 필요합니다.

데이터베이스에 대한 CONTROL 권한이 있는 사용자의 사용자 이름, 대상 로그인 또는 SID를 변경하려면 데이터베이스에 대한 CONTROL 권한이 필요합니다.

기본 스키마나 언어를 변경하려면 사용자에 대한 ALTER 권한이 필요합니다. 사용자는 자신의 기본 스키마 또는 언어만 변경할 수 있습니다.

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

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

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

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

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

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

3.한 번에 여러 옵션 변경

다음 예에서는 포함된 데이터베이스 사용자에 대해 여러 옵션을 하나의 문에서 변경합니다.

USE AdventureWorks2012;
GO 
ALTER USER Philip 
WITH  NAME = Philipe 
    , DEFAULT_SCHEMA = Development 
    , PASSWORD = 'W1r77TT98%ab@#’ OLD_PASSWORD = 'New Devel0per' 
    , DEFAULT_LANGUAGE  = French ;
GO

참고 항목

참조

CREATE USER(Transact-SQL)

DROP USER(Transact-SQL)

EVENTDATA(Transact-SQL)

sp_migrate_user_to_contained(Transact-SQL)

개념

포함된 데이터베이스