ALTER USER (Transact-SQL)
Переименовывает пользователя базы данных или изменяет его схему, используемую по умолчанию.
Соглашения о синтаксисе Transact-SQL
Примечание.
Идентификатор Microsoft Entra ранее был известен как Azure Active Directory (Azure AD).
Выбор продукта
В следующей строке выберите название нужного продукта, и отобразится информация только об этом продукте.
* SQL Server *
SQL Server
Синтаксис
-- Syntax for SQL Server
ALTER USER user_name
WITH <set_item> [ ,...n ]
[;]
<set_item> ::=
NAME = new_user_name
| DEFAULT_SCHEMA = { schema_name | NULL }
| LOGIN = login_name
| PASSWORD = 'password' [ OLD_PASSWORD = 'oldpassword' ]
| DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
Аргументы
user_name
Указывает имя, по которому пользователь идентифицируется в этой базе данных.
LOGIN = login_name
Сопоставляет пользователя с другим именем входа, заменив идентификатор безопасности пользователя для соответствия идентификатору безопасности имени входа.
NAME = new_user_name
Задает новое имя для этого пользователя. new_user_name не должно существовать в текущей базе данных.
DEFAULT_SCHEMA = { schema_name | NULL }
Задает первую схему для поиска сервером, когда он разрешает имена объектов для этого пользователя. При установке схемы по умолчанию в значение NULL схема по умолчанию удаляется из группы Windows. Параметр NULL нельзя использовать с пользователем Windows.
PASSWORD = 'пароль'
относится к: SQL Server 2012 (11.x) и более поздним версиям, Базе данных SQL Azure.
Указывает пароль для пользователя, которого необходимо изменить. В паролях учитывается регистр символов.
Примечание.
Данный параметр доступен только для содержащихся пользователей. Дополнительные сведения см. в разделах Автономные базы данных и sp_migrate_user_to_contained (Transact-SQL).
OLD_PASSWORD ="oldpassword"
относится к: SQL Server 2012 (11.x) и более поздним версиям, Базе данных SQL Azure.
Текущий пароль пользователя, который будет заменен на "password". В паролях учитывается регистр символов. Параметр OLD_PASSWORD является обязательным для изменения пароля. Изменить пароль без этого параметра можно только при наличии разрешения ALTER ANY USER. Необходимость указать OLD_PASSWORD не позволит пользователям с разрешением IMPERSONATION изменить пароль.
Примечание.
Данный параметр доступен только для содержащихся пользователей.
DEFAULT_LANGUAGE ={ NONE | <lcid> | <имя языка> | псевдоним языка><}
Применимо: SQL Server 2012 (11.x) и более поздних версий.
Указывает язык по умолчанию, присвоенный пользователю. Если этот параметр установлен в значение NONE, то в качестве языка по умолчанию выбирается текущий язык по умолчанию для базы данных. Если язык базы данных по умолчанию изменен позже, язык по умолчанию пользователя остается неизменным. Аргумент DEFAULT_LANGUAGE может быть идентификатором локали (lcid), названием языка или псевдонимом языка.
Примечание.
Этот параметр можно указать только в автономной базе данных и только для содержащихся пользователей.
ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
применимо к: SQL Server 2016 (13.x) и более поздним версиям, базе данных SQL Azure.
Отключает проверки шифрованных метаданных на сервере в операциях массового копирования. Это позволяет пользователю массово копировать зашифрованные данные между таблицами или базами данных без расшифровки данных. Значение по умолчанию — 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
можно использовать для исправления этой ситуации, заменив идентификатор безопасности пользователя в базе данных идентификатором безопасности входа с сервера.
Имя пользователя будет автоматически изменено на имя входа, если удовлетворяются следующие условия.
Пользователь является пользователем 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
В. Изменение нескольких вариантов одновременно
Применимо: SQL Server 2012 (11.x) и более поздних версий.
В следующем примере несколько параметров пользователя автономной базы данных изменяются одной инструкцией. Замените <new strong password here>
и <old strong password here>
собственными значениями.
ALTER USER Philip
WITH NAME = Philipe
, DEFAULT_SCHEMA = Development
, PASSWORD = '<new strong password here>' OLD_PASSWORD = '<old strong password here>'
, DEFAULT_LANGUAGE= French ;
GO
D. Исправление несоответствия SID
В следующем примере SID пользователя исправляется в базе данных в соответствии с SID на сервере для учетных данных SQL Server, прошедших проверку подлинности.
ALTER USER Mai
WITH LOGIN = Mai;
GO
Связанное содержимое
* База данных SQL Azure и Microsoft Fabric *
База данных SQL Azure и Microsoft Fabric
Синтаксис
Синтаксис для базы данных SQL Azure
-- Syntax for Azure SQL Database
ALTER USER user_name
WITH <set_item> [ ,...n ]
<set_item> ::=
NAME = new_user_name
| DEFAULT_SCHEMA = schema_name
| LOGIN = login_name
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
[;]
-- Azure SQL Database Update Syntax
ALTER USER user_name
WITH <set_item> [ ,...n ]
[;]
<set_item> ::=
NAME = new_user_name
| DEFAULT_SCHEMA = { schema_name | NULL }
| LOGIN = login_name
| PASSWORD = 'password' [ OLD_PASSWORD = 'oldpassword' ]
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
-- SQL Database syntax when connected to a federation member
ALTER USER user_name
WITH <set_item> [ ,... n ]
[;]
<set_item> ::=
NAME = new_user_name
Синтаксис базы данных SQL в Microsoft Fabric
ALTER USER
{
Microsoft_Entra_principal FROM EXTERNAL PROVIDER [WITH OBJECT_ID = 'objectid']
}
[ ; ]
-- Users that cannot authenticate
ALTER USER user_name
{
{ FOR | FROM } CERTIFICATE cert_name
| { FOR | FROM } ASYMMETRIC KEY asym_key_name
}
[ ; ]
<options_list> ::=
DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }
-- SQL Database syntax when connected to a federation member
ALTER USER user_name
[;]
Синтаксис для хранилища Microsoft Fabric
-- Syntax for Fabric Data Warehouse
ALTER USER user_name
WITH <set_item> [ ,...n ]
<set_item> ::=
| DEFAULT_SCHEMA = schema_name
[;]
Аргументы
user_name
Указывает имя, по которому пользователь идентифицируется в этой базе данных.
LOGIN = login_name
Сопоставляет пользователя с другим именем входа, заменив идентификатор безопасности пользователя для соответствия идентификатору безопасности имени входа.
Если инструкция ALTER USER является единственной инструкцией в пакете SQL, база данных SQL Azure поддерживает предложение WITH LOGIN
. Если инструкция ALTER USER не является единственной инструкцией в пакете SQL или выполняется в динамическом SQL, предложение WITH LOGIN
не поддерживается.
NAME = new_user_name
Задает новое имя для этого пользователя. new_user_name не должно существовать в текущей базе данных.
DEFAULT_SCHEMA = { schema_name | NULL }
Задает первую схему для поиска сервером, когда он разрешает имена объектов для этого пользователя.
Установка схемы по умолчанию для NULL
удаляет схему по умолчанию из пользователя, созданного для группы идентификаторов Microsoft Entra. Параметр NULL не может использоваться с любым другим типом пользователя.
PASSWORD = 'пароль'
применяется к: Базе данных SQL Azure.
Указывает пароль для пользователя, которого необходимо изменить. В паролях учитывается регистр символов.
Примечание.
Данный параметр доступен только для содержащихся пользователей. Дополнительные сведения см. в разделах Автономные базы данных и sp_migrate_user_to_contained (Transact-SQL).
OLD_PASSWORD ="oldpassword"
применяется к: Базе данных SQL Azure.
Текущий пароль пользователя, который будет заменен на "password". В паролях учитывается регистр символов. Параметр OLD_PASSWORD является обязательным для изменения пароля. Изменить пароль без этого параметра можно только при наличии разрешения ALTER ANY USER. Необходимость указать OLD_PASSWORD не позволит пользователям с разрешением IMPERSONATION изменить пароль.
Примечание.
Данный параметр доступен только для содержащихся пользователей.
ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
применимо к: SQL Server 2016 (13.x) и более поздним версиям, базе данных SQL Azure.
Отключает проверки шифрованных метаданных на сервере в операциях массового копирования. Это позволяет пользователю массово копировать зашифрованные данные между таблицами или базами данных без расшифровки данных. Значение по умолчанию — OFF.
Предупреждение
Неправильное использование этого параметра может привести к повреждению данных. Дополнительные сведения см. в разделе массовой загрузке зашифрованных данных в столбцы с помощью always Encrypted.
Замечания
Схемой по умолчанию будет первая схема, которую найдет сервер, после того как получит имена объектов для данного пользователя базы данных. Если не указано иное, схемой по умолчанию будет владелец объектов, создаваемых этим пользователем базы данных.
Если у пользователя есть схема по умолчанию, используется эта схема по умолчанию. Если у пользователя нет схемы по умолчанию, но он является членом группы, которая имеет схему по умолчанию, используется схема по умолчанию группы. Если пользователь не имеет схему по умолчанию и является членом нескольких групп, схема по умолчанию для пользователя будет иметь самую низкую principal_id
и явно заданную схему по умолчанию. Если для пользователя не может быть определена схема по умолчанию, используется dbo
схема.
В качестве значения DEFAULT_SCHEMA можно задать схему, которая в настоящий момент не существует в базе данных. Поэтому значение DEFAULT_SCHEMA можно определить для пользователя еще до создания схемы.
Значение DEFAULT_SCHEMA не может быть указано для пользователя, сопоставленного с сертификатом или асимметричным ключом.
Внимание
Значение параметра DEFAULT_SCHEMA не учитывается, если пользователь является членом предопределенной роли сервера sysadmin. Для всех членов роли сервера sysadmin по умолчанию установлена схема dbo
.
Предложение WITH LOGIN
позволяет переназначать пользователя другому имени входа. Пользователи, не имеющие имени входа, а также пользователи, сопоставленные с сертификатом или с асимметричным ключом, не могут быть повторно сопоставлены с помощью этого предложения. Можно переназначить только пользователей SQL. Предложение WITH LOGIN
нельзя использовать для изменения типа пользователя.
Имя пользователя будет автоматически изменено на имя входа, если удовлетворяются следующие условия.
Новое имя не было указано.
Текущее имя отличается от имени входа.
В противном случае пользователь не будет переименован, если вызывающий объект дополнительно не вызывает предложение 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).
База данных SQL Fabric
Дополнительные сведения см. в следующем разделе:
- проверка подлинности в базе данных SQL Microsoft Fabric
- авторизация в базе данных SQL Microsoft Fabric
Хранилище Fabric
В хранилище Microsoft Fabric ALTER USER ограничено настройкой только схемы по умолчанию. Любые другие аргументы, часто связанные с ALTER USER в SQL или других продуктах, не поддерживаются и возвращают ошибку.
В хранилище Microsoft Fabric имя сортировки учитывает регистр.
Схемой по умолчанию будет первая схема, которую найдет сервер, после того как получит имена объектов для данного пользователя базы данных. Если не указано иное, схемой по умолчанию будет владелец объектов, создаваемых этим пользователем базы данных.
Если у пользователя есть схема по умолчанию, будет использоваться эта схема. Если схема по умолчанию не указана, будет применена схема dbo. Ядро СУБД сначала попытается разрешить объекты в схеме пользователя по умолчанию. Если соответствующий объект не найден, он будет проверять схему dbo.
DEFAULT_SCHEMA можно задать схему, которая в настоящее время не существует в базе данных. Поэтому значение DEFAULT_SCHEMA можно определить для пользователя еще до создания схемы.
Дополнительные сведения см. в следующем разделе:
Безопасность
Примечание.
Пользователь с разрешением ALTER ANY USER может изменить схему по умолчанию для любого пользователя. Пользователь с измененной схемой может производить выборку данных неизвестным образом из неправильной таблицы или выполнять код из неправильной схемы.
Разрешения
Чтобы изменить имя пользователя, необходимо разрешение ALTER ANY USER для базы данных.
Чтобы изменить целевое имя входа пользователя, необходимо разрешение CONTROL в базе данных.
Чтобы изменить имя пользователя с разрешением CONTROL в базе данных, требуется разрешение CONTROL в базе данных.
Чтобы изменить схему или язык по умолчанию, требуется разрешение ALTER на пользователя. Пользователь может изменить свою собственную схему или язык по умолчанию.
Разрешения роли хранилища Fabric
Пользователи с минимальным членством в роли УЧАСТНИКА в рабочей области могут изменить схему DEFAULT любого пользователя в хранилище данных Fabric.
Пользователи с членством в роли VIEWER в рабочей области не могут изменять собственную схему по умолчанию, если пользователь с повышенным доступом не предоставляет это разрешение.
Пользователям, включенным в роль VIEWER на уровне рабочей области, требуется разрешение ALTER ANY USER изменить схему по умолчанию для других пользователей.
Примеры
Все примеры выполняются в базе данных пользователя.
А. Изменение имени пользователя базы данных
В следующем примере показано изменение имени пользователя базы данных с Mary5
на Mary51
.
ALTER USER Mary5 WITH NAME = Mary51;
GO
B. Изменение схемы пользователя по умолчанию
В данном примере показано изменение схемы пользователя, используемой по умолчанию, с Mary51
на Purchasing
.
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO
В. Изменение нескольких вариантов одновременно
В следующем примере несколько параметров пользователя автономной базы данных изменяются одной инструкцией. Замените <new strong password here>
и <old strong password here>
собственными значениями.
ALTER USER Philip
WITH NAME = Philipe
, DEFAULT_SCHEMA = Development
, PASSWORD = '<new strong password here>' OLD_PASSWORD = '<old strong password here>';
GO
D. Изменение схемы пользователя по умолчанию
В данном примере показано изменение схемы пользователя, используемой по умолчанию, с Mary51
на Purchasing
.
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO
Связанное содержимое
* Управляемый экземпляр SQL *
Управляемый экземпляр SQL Azure
Синтаксис
Внимание
Только следующие параметры поддерживаются для Управляемый экземпляр SQL Azure при применении к пользователям с именами входа Microsoft Entra: DEFAULT_SCHEMA = { schema_name | NULL }
и DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }
добавлено новое расширение синтаксиса, которое поможет перенастроить пользователей в базе данных, перенесенной в Управляемый экземпляр SQL Azure. Синтаксис ALTER USER помогает сопоставить пользователей базы данных в федеративном и синхронизированном домене с идентификатором Microsoft Entra с именами входа Microsoft Entra.
-- Syntax for SQL Managed Instance
ALTER USER user_name
{ WITH <set_item> [ ,...n ] | FROM EXTERNAL PROVIDER }
[;]
<set_item> ::=
NAME = new_user_name
| DEFAULT_SCHEMA = { schema_name | NULL }
| LOGIN = login_name
| 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 user_name
{ WITH <set_item> [ ,...n ] | FROM EXTERNAL PROVIDER }
[;]
<set_item> ::=
NAME = new_user_name
| DEFAULT_SCHEMA = { schema_name | NULL }
| LOGIN = login_name
| DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }
Аргументы
user_name
Указывает имя, по которому пользователь идентифицируется в этой базе данных.
LOGIN = login_name
Сопоставляет пользователя с другим именем входа, заменив идентификатор безопасности пользователя для соответствия идентификатору безопасности имени входа.
Если инструкция ALTER USER является единственной инструкцией в пакете SQL, база данных SQL Azure поддерживает предложение WITH LOGIN
. Если инструкция ALTER USER не является единственной инструкцией в пакете SQL или выполняется в динамическом SQL, предложение WITH LOGIN
не поддерживается.
NAME = new_user_name
Задает новое имя для этого пользователя. new_user_name не должно существовать в текущей базе данных.
DEFAULT_SCHEMA = { schema_name | NULL }
Задает первую схему для поиска сервером, когда он разрешает имена объектов для этого пользователя. При установке схемы по умолчанию в значение NULL схема по умолчанию удаляется из группы Windows. Параметр NULL нельзя использовать с пользователем Windows.
PASSWORD = 'пароль'
Указывает пароль для пользователя, которого необходимо изменить. В паролях учитывается регистр символов.
Примечание.
Данный параметр доступен только для содержащихся пользователей. Дополнительные сведения см. в разделах Автономные базы данных и sp_migrate_user_to_contained (Transact-SQL).
OLD_PASSWORD = "oldpassword"
Текущий пароль пользователя, который будет заменен на "password". В паролях учитывается регистр символов. Параметр OLD_PASSWORD является обязательным для изменения пароля. Изменить пароль без этого параметра можно только при наличии разрешения ALTER ANY USER. Необходимость указать OLD_PASSWORD не позволит пользователям с разрешением IMPERSONATION изменить пароль.
Примечание.
Данный параметр доступен только для содержащихся пользователей.
DEFAULT_LANGUAGE ={ NONE | <lcid> | <имя языка> | псевдоним языка><}
Указывает язык по умолчанию, присвоенный пользователю. Если этот параметр установлен в значение 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. - В этом случае допустимые
user_name
могут быть: - Пользователь Windows (
domain\user
). - Группа Windows (
MyWindowsGroup
). - Псевдоним Windows (
MyWindowsAlias
). - Результат команды ALTER заменяет старый
user_name
соответствующим именем, найденным в идентификаторе Microsoft Entra на основе исходного идентификатора безопасности старогоuser_name
. Измененное имя заменяется и сохраняется в метаданных базы данных: - (
domain\user
) будет заменен на Microsoft Entrauser@domain.com
. - (
domain\MyWindowsGroup
) будет заменен группой Microsoft Entra. - (
MyWindowsAlias
) останется неизменным, но идентификатор безопасности этого пользователя будет установлен в идентификаторе Microsoft Entra.
Примечание.
Если идентификатор безопасности исходного пользователя, преобразованного в object_ID
, не найден в клиенте Идентификатора Microsoft Entra, команда ALTER USER
завершится ошибкой.
- Чтобы просмотреть измененных пользователей, используйте следующую команду:
SELECT * FROM sys.database_principals;
- Проверьте указанный тип пользователя
E
илиX
. - Если имя используется для переноса пользователей Windows на пользователей Microsoft Entra, применяются следующие ограничения:
- Необходимо указать допустимый LOGIN.
- Имя будет проверено в клиенте идентификатора Microsoft Entra ID и может быть только следующим:
- Имя 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
В. Изменение нескольких вариантов одновременно
В следующем примере несколько параметров пользователя автономной базы данных изменяются одной инструкцией. Замените <new strong password here>
и <old strong password here>
собственными значениями.
ALTER USER Philip
WITH NAME = Philipe
, DEFAULT_SCHEMA = Development
, PASSWORD = '<new strong password here>' OLD_PASSWORD = '<old strong password here>'
, DEFAULT_LANGUAGE= French ;
GO
D. Сопоставление пользователя в базе данных с именем входа Microsoft Entra после миграции
В следующем примере пользователь переназначает пользователя с westus/joe
пользователем joe@westus.com
Microsoft Entra. Этот пример предназначен для имен входа, уже существующих в управляемом экземпляре. Это необходимо выполнить после завершения миграции базы данных на Управляемый экземпляр SQL Azure и использовать имя входа Microsoft Entra для проверки подлинности.
ALTER USER [westus/joe] WITH LOGIN = [joe@westus.com]
Е. Сопоставление старого пользователя Windows в базе данных без входа в Управляемый экземпляр SQL Azure пользователю Microsoft Entra
В следующем примере пользователь без входа переназначает пользователя westus/joe
на пользователя joe@westus.com
Microsoft 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 user_name
WITH <set_item> [ ,...n ]
<set_item> ::=
NAME = new_user_name
| LOGIN = login_name
| DEFAULT_SCHEMA = schema_name
[;]
Аргументы
user_name
Указывает имя, по которому пользователь идентифицируется в этой базе данных.
LOGIN = login_name
Сопоставляет пользователя с другим именем входа, заменив идентификатор безопасности пользователя для соответствия идентификатору безопасности имени входа.
Если инструкция ALTER USER является единственной инструкцией в пакете SQL, база данных SQL Azure поддерживает предложение WITH LOGIN
. Если инструкция ALTER USER не является единственной инструкцией в пакете SQL или выполняется в динамическом SQL, предложение WITH LOGIN
не поддерживается.
NAME = new_user_name
Задает новое имя для этого пользователя. new_user_name не должно существовать в текущей базе данных.
DEFAULT_SCHEMA = { schema_name | 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 user_name
WITH <set_item> [ ,...n ]
<set_item> ::=
NAME = new_user_name
| LOGIN = login_name
| DEFAULT_SCHEMA = schema_name
[;]
Аргументы
user_name
Указывает имя, по которому пользователь идентифицируется в этой базе данных.
LOGIN = login_name
Сопоставляет пользователя с другим именем входа, заменив идентификатор безопасности пользователя для соответствия идентификатору безопасности имени входа.
Если инструкция ALTER USER является единственной инструкцией в пакете SQL, база данных SQL Azure поддерживает предложение WITH LOGIN
. Если инструкция ALTER USER не является единственной инструкцией в пакете SQL или выполняется в динамическом SQL, предложение WITH LOGIN
не поддерживается.
NAME = new_user_name
Задает новое имя для этого пользователя. new_user_name не должно существовать в текущей базе данных.
DEFAULT_SCHEMA = { schema_name | 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