ALTER USER (Transact-SQL)
Переименовывает пользователя базы данных или изменяет его схему, используемую по умолчанию.
Синтаксис
ALTER USER userName
WITH <set_item> [ ,...n ]
<set_item> ::=
NAME = newUserName
| DEFAULT_SCHEMA = schemaName
| LOGIN = loginName
Аргументы
userName
Указывает имя, по которому пользователь идентифицируется в этой базе данных.LOGIN =loginName
Сопоставляет пользователя с другим именем входа, заменив идентификатор безопасности пользователя для соответствия идентификатору безопасности имени входа.NAME =newUserName
Указывает новое имя для этого пользователя. Пользователь newUserName не должен существовать в текущей базе данных.DEFAULT_SCHEMA =schemaName
Задает первую схему для поиска сервером, когда он разрешает имена объектов для этого пользователя.
Замечания
Если параметр DEFAULT_SCHEMA оставлен неопределенным, то в качестве схемы по умолчанию пользователь должен использовать dbo. В качестве значения DEFAULT_SCHEMA можно задать схему, которая в настоящий момент не существует в базе данных. Поэтому значение DEFAULT_SCHEMA можно определить для пользователя еще до создания схемы. Значение DEFAULT_SCHEMA не может быть указано для пользователя, сопоставленного с группой Windows, сертификатом или асимметричным ключом.
Важно! |
---|
Значение параметра DEFAULT_SCHEMA не учитывается, если пользователь является членом предопределенной роли сервера sysadmin. Для всех членов предопределенной роли сервера sysadmin по умолчанию установлена схема dbo. |
Имя пользователя, сопоставленное с именем входа или группой Windows, можно изменить только в том случае, если значение идентификатора безопасности имени нового пользователя совпадает с уже записанным в базе данных. Такая проверка предотвращает имитацию подключения к базе данных с помощью имен входа Windows.
Предложение WITH LOGIN позволяет сопоставить пользователя с другим именем входа. Пользователи, не имеющие имени входа, а также пользователи, сопоставленные с сертификатом или с асимметричным ключом, не могут быть повторно сопоставлены с помощью этого предложения. Возможно повторное сопоставление только пользователей (или групп) SQL и Windows. Предложение WITH LOGIN не может быть использовано для изменения типа пользователя, например для перехода от учетной записи Windows на имя входа SQL Server.
Имя пользователя будет автоматически изменено на имя входа, если удовлетворяются следующие условия.
Пользователь является пользователем Windows.
Имя является именем Windows (содержит обратную косую черту).
Новое имя не было указано.
Текущее имя отличается от имени входа.
В противном случае пользователь не будет переименован, если только вызывающий не вызовет дополнительно предложение NAME.
Примечание |
---|
Пользователь с разрешением ALTER ANY USER может изменить схему по умолчанию для любого пользователя. Пользователь с измененной схемой может производить выборку данных неизвестным образом из неправильной таблицы или выполнять код из неправильной схемы. |
Имя пользователя, сопоставленное с именем входа 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 для пользователя. Пользователь может изменить только свою собственную схему по умолчанию.
Примеры
А. Изменение имени пользователя базы данных
В данном примере показано изменение имени пользователя базы данных с Mary5 на Mary51.
USE AdventureWorks2008R2;
ALTER USER Mary5 WITH NAME = Mary51;
GO
Б. Изменение схемы пользователя, используемой по умолчанию
В данном примере показано изменение схемы пользователя, используемой по умолчанию, с Mary51 на Purchasing.
USE AdventureWorks2008R2;
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO