Поделиться через


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
    Сопоставляет пользователя с другим именем входа, заменив идентификатор безопасности пользователя для соответствия идентификатору безопасности имени входа.

  • NAME **=**newUserName
    Задает новое имя для этого пользователя. Аргумент newUserName уже не должен встречаться в текущей базе данных.

  • DEFAULT_SCHEMA = { schemaName | NULL }
    Задает первую схему для поиска сервером, когда он разрешает имена объектов для этого пользователя. При установке схемы по умолчанию в значение NULL схема по умолчанию удаляется из группы Windows. Параметр NULL нельзя использовать с пользователем Windows.

  • PASSWORD = 'password'
    Указывает пароль для пользователя, которого необходимо изменить. При вводе пароля учитывается регистр символов.

    ПримечаниеПримечание

    Данный параметр доступен только для содержащихся пользователей. Дополнительные сведения см. в разделах Автономные базы данных и sp_migrate_user_to_contained (Transact-SQL).

  • OLD_PASSWORD ='oldpassword'
    Текущий пароль пользователя, который будет заменен на «password». При вводе пароля учитывается регистр символов. Параметр OLD_PASSWORD является обязательным для изменения пароля. Изменить пароль без этого параметра можно только при наличии разрешения ALTER ANY USER. Необходимость указать OLD_PASSWORD не позволит пользователям с разрешением IMPERSONATION изменить пароль.

    ПримечаниеПримечание

    Данный параметр доступен только для содержащихся пользователей.

  • DEFAULT_LANGUAGE ={ NONE | <lcid> | <language name> | <language alias> }
    Указывает язык по умолчанию, присвоенный пользователю. Если этот параметр установлен в значение NONE, то в качестве языка по умолчанию выбирается текущий язык по умолчанию для базы данных. При последующей смене языка по умолчанию для базы данных язык по умолчанию для пользователя не меняется. Аргумент DEFAULT_LANGUAGE может быть идентификатором локали (lcid), названием языка или псевдонимом языка.

    ПримечаниеПримечание

    Этот параметр можно задать только в автономной базе данных и только для содержащихся пользователей.

Замечания

Схемой по умолчанию будет первая схема, которую найдет сервер, после того, как получит имена объектов для данного пользователя базы данных. Если не указано иное, схемой по умолчанию будет владелец объектов, создаваемых этим пользователем базы данных.

Если пользователь имеет схему по умолчанию, будет использоваться эта схема. Если у пользователя нет схемы по умолчанию, но он является членом группы, которая имеет схему по умолчанию, используется схема по умолчанию группы. Если пользователь не имеет схемы по умолчанию и является членом нескольких групп, схемой по умолчанию для этого пользователя будет схема по умолчанию группы Windows с минимальным значением principal_id и явно заданной схемой по умолчанию. Если для пользователя нельзя определить схему по умолчанию, будет использоваться схема dbo.

В качестве значения DEFAULT_SCHEMA можно задать схему, которая в настоящий момент не существует в базе данных. Поэтому значение DEFAULT_SCHEMA можно определить для пользователя еще до создания схемы.

Значение DEFAULT_SCHEMA не может быть указано для пользователя, сопоставленного с сертификатом или асимметричным ключом.

Важное примечаниеВажно!

Значение параметра DEFAULT_SCHEMA не учитывается, если пользователь является членом предопределенной роли сервера sysadmin. Для всех членов роли сервера sysadmin по умолчанию установлена схема dbo.

Имя пользователя, сопоставленное с именем входа или группой Windows, можно изменить только в том случае, если значение идентификатора безопасности имени нового пользователя совпадает с уже записанным в базе данных. Такая проверка предотвращает имитацию подключения к базе данных с помощью имен входа Windows.

Предложение WITH LOGIN позволяет сопоставить пользователя с другим именем входа. Пользователи, не имеющие имени входа, а также пользователи, сопоставленные с сертификатом или с асимметричным ключом, не могут быть повторно сопоставлены с помощью этого предложения. Возможно повторное сопоставление только пользователей (или групп) SQL и Windows. Предложение WITH LOGIN не может быть использовано для изменения типа пользователя, например для перехода от учетной записи Windows на имя входа SQL Server.

Имя пользователя будет автоматически изменено на имя входа, если удовлетворяются следующие условия.

  • Пользователь является пользователем Windows.

  • Имя является именем Windows (содержит обратную косую черту).

  • Новое имя не было указано.

  • Текущее имя отличается от имени входа.

В противном случае пользователь не будет переименован, если только вызывающий не вызовет дополнительно предложение NAME.

Имя пользователя, сопоставленное с именем входа SQL Server, сертификатом или асимметричным ключом, не может содержать обратную косую черту (\).

ПредупреждениеВнимание!

Начиная с SQL Server 2005 поведение схем изменилось. В результате программный код, предполагающий, что схемы эквивалентны пользователям базы данных, возможно, не будет более возвращать правильные результаты. Старые представления каталога, включая sysobjects, не должны использоваться в той базе данных, где когда-либо выполнялась любая из следующих инструкций DDL: 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. В таких базах данных необходимо использовать новые представления каталога. Новые представления каталога учитывают разделение участников и схем, введенное в SQL Server 2005. Дополнительные сведения о представлениях каталогов см. в разделе Представления каталогов (Transact-SQL).

Безопасность

ПримечаниеПримечание

Пользователь с разрешением ALTER ANY USER может изменить схему по умолчанию для любого пользователя. Пользователь с измененной схемой может производить выборку данных неизвестным образом из неправильной таблицы или выполнять код из неправильной схемы.

Разрешения

Чтобы изменить имя пользователя, необходимо разрешение ALTER ANY USER.

Чтобы изменить имя пользователя, целевое имя входа или идентификатор безопасности пользователя с разрешением CONTROL в базе данных, требуется разрешение CONTROL в базе данных.

Чтобы изменить схему или язык по умолчанию, требуется разрешение ALTER на пользователя. Пользователь может изменить только свою собственную схему или язык по умолчанию.

Примеры

А.Изменение имени пользователя базы данных

В следующем примере показано изменение имени пользователя базы данных с Mary5 на Mary51.

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

Б.Изменение схемы пользователя, используемой по умолчанию

В данном примере показано изменение схемы пользователя, используемой по умолчанию, с Mary51 на Purchasing.

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

В.Изменение нескольких параметров одновременно

В следующем примере несколько параметров пользователя автономной базы данных изменяются одной инструкцией.

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)

Основные понятия

Автономные базы данных