ALTER USER (Transact-SQL)

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

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

Выберите продукт

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

* SQL Server *  

 

SQL Server

Синтаксис

-- Syntax for SQL Server

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> }
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]

Аргументы

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

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

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

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

PASSWORD = 'пароль' Область применения: SQL Server 2012 (11.x) и более поздних версий, База данных SQL.

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

Примечание

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

OLD_PASSWORD = 'старый_пароль' Область применения: SQL Server 2012 (11.x) и более поздних версий, База данных SQL.

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

Примечание

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

DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> } Применимо к: SQL Server 2012 (11.x) и более поздних версий.

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

Примечание

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

ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] Область применения: SQL Server 2016 (13.x); и более поздних версий, База данных SQL.

Отключает проверки шифрованных метаданных на сервере в операциях массового копирования. Это позволяет пользователю массово копировать зашифрованные данные между таблицами или базами данных без расшифровки данных. Значение по умолчанию — OFF.

Предупреждение

Неправильное использование этого параметра может привести к повреждению данных. Дополнительные сведения см. в разделе Перенос конфиденциальных данных с помощью функции Always Encrypted.

Remarks

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

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

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

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

  • Пользователь является пользователем 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 в базе данных, требуется разрешение CONTROL в базе данных.

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

Примеры

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

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

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

ALTER USER Mary5 WITH NAME = Mary51;
GO

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

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

ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO

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

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

Область применения: SQL Server 2012 (11.x) и более поздних версий.

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

Г. Исправление несоответствия SID

В следующем примере SID пользователя исправляется в базе данных в соответствии с SID на сервере для учетных данных SQL Server, прошедших проверку подлинности.

ALTER USER Mai
WITH LOGIN = Mai;
GO

См. также раздел

* База данных SQL *

 

База данных SQL

Синтаксис

-- Syntax for Azure SQL Database

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

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

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

<set_item> ::=
NAME = newUserName
| DEFAULT_SCHEMA = { schemaName | NULL }
| LOGIN = loginName
| PASSWORD = 'password' [ OLD_PASSWORD = 'oldpassword' ]
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]

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

<set_item> ::=
 NAME = newUserName

Аргументы

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

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

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

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

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

PASSWORD = 'пароль' Область применения: SQL Server 2012 (11.x) и более поздних версий, База данных SQL.

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

Примечание

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

OLD_PASSWORD = 'старый_пароль' Область применения: SQL Server 2012 (11.x) и более поздних версий, База данных SQL.

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

Примечание

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

ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] Область применения: SQL Server 2016 (13.x); и более поздних версий, База данных SQL.

Отключает проверки шифрованных метаданных на сервере в операциях массового копирования. Это позволяет пользователю массово копировать зашифрованные данные между таблицами или базами данных без расшифровки данных. Значение по умолчанию — OFF.

Предупреждение

Неправильное использование этого параметра может привести к повреждению данных. Дополнительные сведения см. в разделе Перенос конфиденциальных данных с помощью функции Always Encrypted.

Remarks

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

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

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

Примеры

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

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

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

ALTER USER Mary5 WITH NAME = Mary51;
GO

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

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

ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO

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

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

ALTER USER Philip
WITHNAME = Philipe
, DEFAULT_SCHEMA = Development
, PASSWORD = 'W1r77TT98%ab@#' OLD_PASSWORD = 'New Devel0per';
GO

См. также раздел

* Управляемый экземпляр SQL *

 

Управляемый экземпляр SQL Azure

Синтаксис

Важно!

Для Управляемого экземпляра SQL Azure поддерживаются только следующие параметры при применении к пользователям с именами входа Azure AD: DEFAULT_SCHEMA = { schemaName | NULL } и DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }

Для сопоставления пользователей в базе данных, которая была перенесена в Управляемый экземпляр SQL Azure, было добавлено новое расширение синтаксиса. Синтаксис ALTER USER позволяет сопоставлять пользователей базы данных в объединенном и синхронизированном домене с Azure AD с именами входа Azure AD.

-- Syntax for SQL Managed Instance
ALTER USER userName
 { WITH <set_item> [ ,...n ] | FROM EXTERNAL PROVIDER }
[;]

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

-- Users or groups that are migrated as federated and synchronized with Azure AD have the following syntax:

/** Applies to Windows users that were migrated and have the following user names:
- Windows user <domain\user>
- Windows group <domain\MyWindowsGroup>
- Windows alias <MyWindowsAlias>
**/

ALTER USER userName
 { WITH <set_item> [ ,...n ] | FROM EXTERNAL PROVIDER }
[;]

<set_item> ::=
 NAME = newUserName
| DEFAULT_SCHEMA = { schemaName | NULL }
| LOGIN = loginName
| DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }

Аргументы

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

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

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

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

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

PASSWORD = 'password'

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

Примечание

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

OLD_PASSWORD = 'старый_пароль'

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

Примечание

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

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

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

Примечание

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

ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]

Отключает проверки шифрованных метаданных на сервере в операциях массового копирования. Это позволяет пользователю массово копировать зашифрованные данные между таблицами или базами данных без расшифровки данных. Значение по умолчанию — OFF.

Предупреждение

Неправильное использование этого параметра может привести к повреждению данных. Дополнительные сведения см. в разделе Перенос конфиденциальных данных с помощью функции Always Encrypted.

Remarks

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

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

Примечание

Указанные ниже правила не применяются к пользователям Windows в Управляемом экземпляре SQL Azure, так как мы не поддерживаем создание имен входа Windows в Управляемом экземпляре SQL Azure. Параметр WITH LOGIN можно использовать только при наличии имен входа Azure AD.

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

  • Пользователь является пользователем 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).

Примечания для пользователей Windows в локальной среде SQL, перенесенных в Управляемый экземпляр SQL Azure

Эти замечания относятся к проверке подлинности в качестве пользователей Windows, которые были объединены и синхронизированы с Azure AD.

Примечание

Изменились функции, доступные администратору Azure AD для Управляемого экземпляра SQL Azure после создания. Дополнительные сведения см. в разделе Новые функции администратора Azure AD для MI.

  • Проверка пользователей или групп Windows, сопоставленных с Azure AD, выполняется по умолчанию с помощью API Graph во всех версиях синтаксиса ALTER USER, используемого для миграции.
  • Локальные пользователи, которым были назначены псевдонимы (другое имя, помимо имени исходной учетной записи Windows), будут иметь имя с псевдонимом.
  • При проверке подлинности Azure AD параметр LOGIN применяется только к Управляемому экземпляру SQL Azure и не может использоваться с базой данных SQL.
  • Чтобы просмотреть имена входа для субъектов Azure AD, используйте следующую команду: select * from sys.server_principals.
  • Проверьте, что указанный тип имени входа имеет значение E или X.
  • Параметр PASSWORD нельзя использовать для пользователей Azure AD.
  • Во всех случаях миграции роли и разрешения пользователей или групп Windows будут автоматически переданы новым пользователям или группам Azure AD.
  • Новое расширение синтаксиса, FROM EXTERNAL PROVIDER, доступно для изменения пользователей и групп Windows из локальной среды SQL на пользователей и группы Azure AD. Домен Windows должен быть объединен с Azure AD, а при использовании этого расширения все члены домена Windows должны существовать в Azure AD. Синтаксис FROM EXTERNAL PROVIDER применяется к Управляемому экземпляру SQL Azure и должен использоваться в случае, если пользователи Windows не имеют имен входа в исходном экземпляре SQL и их следует сопоставлять с автономными пользователями базы данных Azure AD.
  • В этом случае допустимое userName может быть следующим:
  • Пользователь Widows (домен\пользователь).
  • Группа Windows (MyWidnowsGroups).
  • Псевдоним Windows (MyWindowsAlias).
  • Результат команды ALTER заменяет старое userName соответствующим именем, которое найдено в Azure AD на основе исходного идентификатора безопасности старого userName. Измененное имя заменяется и сохраняется в метаданных базы данных:
  • (домен\пользователь) будет заменено на Azure AD user@domain.com.
  • (домен\MyWidnowsGroup) будет заменено на группу Azure AD.
  • (MyWindowsAlias) останется без изменений, но идентификатор безопасности этого пользователя будет проверен в Azure AD.

Примечание

Если идентификатор безопасности исходного пользователя, преобразованный в objectID, не удается найти в Azure AD, команда ALTER USER завершится ошибкой.

  • Чтобы просмотреть измененных пользователей, используйте следующую команду: select * from sys.database_principals
  • Проверьте указанный тип пользователя E или X.
  • Если для миграции пользователей Windows в пользователи Azure AD используется синтаксис NAME, действуют следующие ограничения.
  • Необходимо указать допустимый LOGIN.
  • Параметр NAME будет проверен Azure AD и может быть только следующим:
  • Имя LOGIN.
  • Псевдоним — имя не может существовать в Azure AD.
  • Во всех остальных случаях синтаксис завершится ошибкой.

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

Примечание

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

Разрешения

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

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

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

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

Примеры

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

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

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

ALTER USER Mary5 WITH NAME = Mary51;
GO

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

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

ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO

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

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

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

Г. После миграции сопоставьте пользователя в базе данных с именем входа Azure AD

В следующем примере показано повторное сопоставление пользователя westus/joe с пользователем Azure AD, joe@westus.com. Этот пример предназначен для имен входа, уже существующих в управляемом экземпляре. Это необходимо сделать после завершения миграции базы данных на Управляемый экземпляр SQL Azure и в том случае, когда есть необходимость использовать имя входа Azure AD для проверки подлинности.

ALTER USER [westus/joe] WITH LOGIN = joe@westus.com

Д. Сопоставление старого пользователя Windows в базе данных без имени входа в Управляемом экземпляре SQL Azure с пользователем Azure AD.

В следующем примере показано повторное сопоставление пользователя, westus/joe без имени входа, с пользователем Azure AD, joe@westus.com. Федеративный пользователь должен существовать в Azure AD.

ALTER USER [westus/joe] FROM EXTERNAL PROVIDER

Е. Сопоставление псевдонима пользователя с существующим именем входа Azure AD.

В следующем примере показано повторное сопоставление имени пользователя, westus\joe с joe_alias. В этом случае соответствующая учетная запись Azure AD — это joe@westus.com.

ALTER USER [westus/joe] WITH LOGIN = joe@westus.com, name= joe_alias

Ж. Сопоставление группы Windows, перенесенной в Управляемый экземпляр SQL Azure, с группой Azure AD

В следующем примере выполняется повторное сопоставление старой локальной группы westus\mygroup с группой Azure AD mygroup в управляемом экземпляре. Эта группа должна существовать в Azure AD.

ALTER USER [westus\mygroup] WITH LOGIN = mygroup

См. также раздел

* Azure Synapse
Analytics *

 

Azure Synapse Analytics

Синтаксис

-- Syntax for Azure Synapse

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

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

Аргументы

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

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

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

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

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

Remarks

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

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

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

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

Важно!

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

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

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

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

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

В противном случае пользователь не будет переименован, если только вызывающий не вызовет дополнительно предложение 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 в базе данных, требуется разрешение CONTROL в базе данных.

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

Примеры

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

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

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

ALTER USER Mary5 WITH NAME = Mary51;
GO

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

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

ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO

См. также раздел

* Analytics
Platform System (PDW) *

 

Система платформы аналитики

Синтаксис

-- Syntax for Analytics Platform System

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

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

Аргументы

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

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

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

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

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

Remarks

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

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

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

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

Важно!

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

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

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

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

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

В противном случае пользователь не будет переименован, если только вызывающий не вызовет дополнительно предложение 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 в базе данных, требуется разрешение CONTROL в базе данных.

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

Примеры

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

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

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

ALTER USER Mary5 WITH NAME = Mary51;
GO

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

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

ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO

См. также раздел