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


ALTER USER (Transact-SQL)

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

Соглашения о синтаксисе Transact-SQL

Примечание.

Идентификатор Microsoft Entra ранее был известен как Azure Active Directory (Azure AD).

Выбор продукта

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

* 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 ='oldpassword'Область применения: SQL Server 2012 (11.x) и более поздних версий, База данных SQL.

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

Примечание.

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

DEFAULT_LANGUAGE =<>{ NONE | <код языка> | >имя языка> | <псевдоним языка> } Область применения: SQL Server 2012 (11.x) и более поздних версий.

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

Примечание.

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

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

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

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

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

Замечания

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

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

Примеры

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

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

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

ALTER USER Mary5 WITH NAME = Mary51;
GO

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

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

ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO

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

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

Область применения: 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

D. Исправление несоответствия 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 ='oldpassword'Область применения: 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.

Замечания

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

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

Примеры

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

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

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

ALTER USER Mary5 WITH NAME = Mary51;
GO

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

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

ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO

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

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

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

См. также

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

 

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

Синтаксис

Внимание

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

добавлено новое расширение синтаксиса, которое поможет перенастроить пользователей в базе данных, перенесенной в Управляемый экземпляр SQL Azure. Синтаксис ALTER USER помогает сопоставить пользователей базы данных в федеративном и синхронизированном домене с идентификатором Microsoft Entra с именами входа Microsoft Entra.

-- 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.

Замечания

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

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

Примечание.

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

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

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

  • Проверка пользователей или групп Windows, сопоставленных с идентификатором Microsoft Entra ID, выполняется по умолчанию с помощью API Graph во всех версиях синтаксиса ALTER USER, используемого для миграции.
  • Локальные пользователи, которым были назначены псевдонимы (другое имя, помимо имени исходной учетной записи Windows), будут иметь имя с псевдонимом.
  • Для проверки подлинности Microsoft Entra параметр LOGIN применяется только к Управляемый экземпляр SQL Azure и не может использоваться с База данных SQL.
  • Чтобы просмотреть имена входа для субъектов Microsoft Entra, используйте следующую команду:

select * from sys.server_principals.

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

Примечание.

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

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

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

Примечание.

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

Разрешения

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

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

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

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

Примеры

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

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

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

ALTER USER Mary5 WITH NAME = Mary51;
GO

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

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

ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO

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

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

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

D. Сопоставление пользователя в базе данных с именем входа Microsoft Entra после миграции

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

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

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

В следующем примере пользователь без входа переназначает пользователя westus/joe на пользователя joe@westus.comMicrosoft Entra. Федеративный пользователь должен существовать в идентификаторе Microsoft Entra.

ALTER USER [westus/joe] FROM EXTERNAL PROVIDER

F. Сопоставление псевдонима пользователя с существующим именем входа Microsoft Entra

В следующем примере показано повторное сопоставление имени пользователя, westus\joe с joe_alias. Соответствующее имя входа Microsoft Entra в данном случае joe@westus.com.

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

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

Следующий пример переназначает старую локальную группу westus\mygroup в группу mygroup Microsoft Entra в управляемом экземпляре. Группа должна существовать в идентификаторе Microsoft Entra.

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.

Замечания

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

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

Примеры

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

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

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

ALTER USER Mary5 WITH NAME = Mary51;
GO

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

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

Замечания

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

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

Примеры

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

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

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

ALTER USER Mary5 WITH NAME = Mary51;
GO

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

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

ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO

См. также