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


ALTER USER (Transact-SQL)

Переименовывает пользователя базы данных или изменяет его схему, используемую по умолчанию.

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

ALTER USER user_name  
     WITH <set_item> [ ,...n ]
<set_item> ::= 
     NAME = new_user_name 
     | DEFAULT_SCHEMA = schema_name
     | LOGIN = login_name

Аргументы

  • user_name
    Указывает имя, по которому пользователь идентифицируется в этой базе данных.
  • LOGIN **=**login_name
    Повторно сопоставляет пользователя другому имени входа путем изменения идентификатора безопасности (SID) пользователя в соответствии с идентификатором безопасности имени входа.
  • NAME **=**new_user_name
    Указывает новое имя для этого пользователя. Аргумент new_user_name не должен существовать в текущей базе данных.
  • DEFAULT_SCHEMA **=**schema_name
    Задает первую схему для поиска сервером, когда он разрешает имена объектов для этого пользователя.

Замечания

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

ms176060.note(ru-ru,SQL.90).gifВажно!
Значение параметра DEFAULT_SCHEMA не учитывается, если пользователь является членом фиксированной серверной роли sysadmin. Для всех членов роли sysadmin по умолчанию установлена схема dbo.

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

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

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

ms176060.note(ru-ru,SQL.90).gifПримечание.
Пользователь с разрешением ALTER ANY USER может изменить схему по умолчанию для любого пользователя. Пользователь с измененной схемой может производить выборку данных неизвестным образом из неправильной таблицы или выполнять код из неправильной схемы.

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

ms176060.Caution(ru-ru,SQL.90).gifВнимание!
В SQL Server 2005 поведение схем отличается от более ранних версий SQL Server. Код, предполагающий, что схемы эквивалентны пользователям базы данных, может возвращать неверные результаты. Старые представления каталога содержат таблицу 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 для пользователя. Пользователь может изменить свою собственную схему, используемую по умолчанию.

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

Примеры

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

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

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

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

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

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

См. также

Справочник

CREATE USER (Transact-SQL)
DROP USER (Transact-SQL)
EVENTDATA (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005