ALTER USER (Transact-SQL)

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

Применимо для следующих объектов: SQL Server (SQL Server 2008 по текущую версию), База данных SQL Windows Azure (С первоначального выпуска по текущий выпуск).

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

Синтаксис

-- SQL Server Syntax
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> }

-- Windows Azure SQL Database Syntax
ALTER USER userName  
     WITH <set_item> [ ,...n ]

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

-- SQL Database syntax when connected to a federation member
ALTER USER userName
     WITH <set_item> [ ,… n ] 
[;]

<set_item> ::= 
     NAME = newUserName

Аргументы

  • userName
    Указывает имя, по которому пользователь идентифицируется в этой базе данных.

  • LOGIN **=**loginName
    Сопоставляет пользователя с другим именем входа, заменив идентификатор безопасности пользователя для соответствия идентификатору безопасности имени входа.

    Если инструкция ALTER USER — единственная в пакете SQL, то база данных SQL Windows Azure поддерживает предложение WITH LOGIN. Если инструкция ALTER USER не единственная в пакете SQL или выполняется в динамическом коде SQL, предложение WITH LOGIN не поддерживается.

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

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

  • PASSWORD = 'password'

    Применимо для следующих объектов: С SQL Server 2012 по SQL Server 2014 включительно.

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

    Примечание

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

  • OLD_PASSWORD ='oldpassword'

    Применимо для следующих объектов: С SQL Server 2012 по SQL Server 2014 включительно.

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

    Примечание

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

  • DEFAULT_LANGUAGE ={ NONE | <lcid> | <language name> | <language alias> }

    Применимо для следующих объектов: С SQL Server 2012 по SQL Server 2014 включительно.

    Указывает язык по умолчанию, присвоенный пользователю. Если этот параметр установлен в значение 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

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

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

Применимо для следующих объектов: С SQL Server 2012 по SQL Server 2014 включительно.

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)

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

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