CREATE USER (Transact-SQL)CREATE USER (Transact-SQL)

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server даБаза данных SQL Azure даAzure Synapse Analytics (хранилище данных SQL) даParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse

Добавляет нового пользователя в текущую базу данных.Adds a user to the current database. Ниже перечислены 12 типов пользователей с примером базового синтаксиса.The 12 types of users are listed below with a sample of the most basic syntax:

Пользователи с именем входа в базе данных master. Это самый распространенный тип пользователей.Users based on logins in master - This is the most common type of user.

  • Пользователь с именем входа, задаваемым по учетной записи Windows Active Directory.User based on a login based on a Windows Active Directory account. CREATE USER [Contoso\Fritz];
  • Пользователь с именем входа, задаваемым по группе Windows.User based on a login based on a Windows group. CREATE USER [Contoso\Sales];
  • Пользователь с именем входа для проверки подлинности SQL ServerSQL Server.User based on a login using SQL ServerSQL Server authentication. CREATE USER Mary;

Пользователи, проходящие проверку подлинности в базе данных. Рекомендуется для повышения переносимости базы данных.Users that authenticate at the database - Recommended to help make your database more portable.
Всегда разрешается в База данных SQLSQL Database.Always allowed in База данных SQLSQL Database. Разрешается только в автономной базе данных в SQL ServerSQL Server.Only allowed in a contained database in SQL ServerSQL Server.

  • Пользователь, соответствующий пользователю Windows без имени входа.User based on a Windows user that has no login. CREATE USER [Contoso\Fritz];

  • Пользователь, соответствующий группе Windows без имени входа.User based on a Windows group that has no login. CREATE USER [Contoso\Sales];

  • Пользователь в База данных SQLSQL Database или Хранилище данных SQLSQL Data Warehouse на основе пользователя Azure Active Directory.User in База данных SQLSQL Database or Хранилище данных SQLSQL Data Warehouse based on an Azure Active Directory user. CREATE USER [Fritz@contoso.com] FROM EXTERNAL PROVIDER;

  • Пользователь автономной базы данных с паролем.Contained database user with password. (Недоступно в Хранилище данных SQLSQL Data Warehouse.) CREATE USER Mary WITH PASSWORD = '********';(Not available in Хранилище данных SQLSQL Data Warehouse.) CREATE USER Mary WITH PASSWORD = '********';

Пользователи, соответствующие субъектам Windows, которые подключаются с помощью имени входа группы WindowsUsers based on Windows principals that connect through Windows group logins

  • Пользователь, соответствующий пользователю Windows, который не имеет имени входа, но может подключаться к компоненту Компонент Database EngineDatabase Engine за счет членства в роли Windows.User based on a Windows user that has no login, but can connect to the Компонент Database EngineDatabase Engine through membership in a Windows group. CREATE USER [Contoso\Fritz];

  • Пользователь, соответствующий группе Windows, которая не имеет имени входа, но может подключаться к компоненту Компонент Database EngineDatabase Engine за счет членства в другой роли Windows.User based on a Windows group that has no login, but can connect to the Компонент Database EngineDatabase Engine through membership in a different Windows group. CREATE USER [Contoso\Fritz];

Пользователи, которые не могут проходить проверку подлинности. Такие пользователи не могут входить в SQL ServerSQL Server или База данных SQLSQL Database.Users that cannot authenticate - These users cannot login to SQL ServerSQL Server or База данных SQLSQL Database.

  • Пользователь без имени входа.User without a login. Не может выполнить вход, но ему можно предоставлять разрешения.Cannot login but can be granted permissions. CREATE USER CustomApp WITHOUT LOGIN;
  • Пользователь, связанный с сертификатом.User based on a certificate. Не может выполнить вход, но может предоставлять разрешения и подписывать модули.Cannot login but can be granted permissions and can sign modules. CREATE USER TestProcess FOR CERTIFICATE CarnationProduction50;
  • Пользователь, связанный с асимметричным ключом.User based on an asymmetric key. Не может выполнить вход, но может предоставлять разрешения и подписывать модули.Cannot login but can be granted permissions and can sign modules. CREATE User TestProcess FROM ASYMMETRIC KEY PacificSales09;

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

СинтаксисSyntax

-- Syntax for SQL Server, Azure SQL Database, and Azure SQL Database managed instance
  
-- Syntax Users based on logins in master  
CREATE USER user_name   
    [   
        { FOR | FROM } LOGIN login_name   
    ]  
    [ WITH <limited_options_list> [ ,... ] ]   
[ ; ]  
  
-- Users that authenticate at the database  
CREATE USER   
    {  
      windows_principal [ WITH <options_list> [ ,... ] ]  
  
    | user_name WITH PASSWORD = 'password' [ , <options_list> [ ,... ]   
    | Azure_Active_Directory_principal FROM EXTERNAL PROVIDER   
    }  
  
 [ ; ]  
  
-- Users based on Windows principals that connect through Windows group logins  
CREATE USER   
    {   
          windows_principal [ { FOR | FROM } LOGIN windows_principal ]  
        | user_name { FOR | FROM } LOGIN windows_principal  
}  
    [ WITH <limited_options_list> [ ,... ] ]   
[ ; ]  
  
-- Users that cannot authenticate   
CREATE USER user_name   
    {  
         WITHOUT LOGIN [ WITH <limited_options_list> [ ,... ] ]  
       | { FOR | FROM } CERTIFICATE cert_name   
       | { FOR | FROM } ASYMMETRIC KEY asym_key_name   
    }  
 [ ; ]  
  
<options_list> ::=  
      DEFAULT_SCHEMA = schema_name  
    | DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }  
    | SID = sid   
    | ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ]  
  
<limited_options_list> ::=  
      DEFAULT_SCHEMA = schema_name ]   
    | ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ]  
  
-- SQL Database syntax when connected to a federation member  
CREATE USER user_name  
[;]

-- Syntax for users based on Azure AD logins for Azure SQL Database managed instance
CREATE USER user_name   
    [   { FOR | FROM } LOGIN login_name  ]  
    | FROM EXTERNAL PROVIDER
    [ WITH <limited_options_list> [ ,... ] ]   
[ ; ]  

<limited_options_list> ::=  
      DEFAULT_SCHEMA = schema_name 
    | DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }   
    | ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ] 

Примечание

Функция администратора Azure AD для управляемого экземпляра после создания изменилась.The Azure AD admin for managed instance functionality after creation has changed. Дополнительные сведения см. в статье Новые возможности администратора Azure AD для управляемого экземпляра.For more information, see New Azure AD admin functionality for MI.

-- Syntax for Azure SQL Data Warehouse  
  
CREATE USER user_name   
    [ { { FOR | FROM } { LOGIN login_name }   
      | WITHOUT LOGIN  
    ]   
    [ WITH DEFAULT_SCHEMA = schema_name ]  
[;]

CREATE USER Azure_Active_Directory_principal FROM EXTERNAL PROVIDER  
    [ WITH DEFAULT_SCHEMA = schema_name ]  
[;]
-- Syntax for Parallel Data Warehouse  
  
CREATE USER user_name   
    [ { { FOR | FROM }  
      {   
        LOGIN login_name   
      }   
      | WITHOUT LOGIN  
    ]   
    [ WITH DEFAULT_SCHEMA = schema_name ]  
[;]  

АргументыArguments

user_nameuser_name
Указывает имя, по которому пользователь идентифицируется в этой базе данных.Specifies the name by which the user is identified inside this database. user_name — это sysname.user_name is a sysname. Он может иметь длину до 128 символов.It can be up to 128 characters long. Когда создается пользователь, соответствующий участнику Windows, именем пользователя становится имя участника Windows, если не указано другое имя.When creating a user based on a Windows principal, the Windows principal name becomes the user name unless another user name is specified.

LOGIN login_nameLOGIN login_name
Указывает имя входа, для которого создается пользователь базы данных.Specifies the login for which the database user is being created. login_name должен быть допустимым именем входа на сервере.login_name must be a valid login in the server. Может быть именем входа, соответствующим участнику Windows (пользователю или группе) или именем входа для проверки подлинности SQL ServerSQL Server.Can be a login based on a Windows principal (user or group), or a login using SQL ServerSQL Server authentication. Когда это имя входа SQL Server входит в базу данных, оно получает имя и идентификатор создаваемого пользователя базы данных.When this SQL Server login enters the database, it acquires the name and ID of the database user that is being created. При создании имени входа, сопоставленного с субъектом Windows, используйте формат [ <domainName> \ <loginName> ] .When creating a login mapped from a Windows principal, use the format [<domainName>\<loginName>]. Примеры см. в разделе Сводка синтаксиса.For examples, see Syntax Summary.

Если CREATE USER является единственной инструкцией в пакете SQL, предложение WITH LOGIN поддерживается в Базе данных SQL Azure.If the CREATE USER statement is the only statement in a SQL batch, Azure SQL Database supports the WITH LOGIN clause. Если инструкция CREATE USER не единственная в пакете SQL или выполняется в динамическом коде SQL, предложение WITH LOGIN не поддерживается.If the CREATE USER statement is not the only statement in a SQL batch or is executed in dynamic SQL, the WITH LOGIN clause is not supported.

WITH DEFAULT_SCHEMA = schema_nameWITH DEFAULT_SCHEMA = schema_name
Указывает первую схему, которую найдет сервер, после того, как он получит имена объектов для пользователя данной базы данных.Specifies the first schema that will be searched by the server when it resolves the names of objects for this database user.

'windows_principal''windows_principal'
Указывает участника Windows, для которого создается пользователь базы данных.Specifies the Windows principal for which the database user is being created. windows_principal может быть пользователем Windows или группой Windows.The windows_principal can be a Windows user, or a Windows group. Пользователь будет создаваться даже в случае, если для windows_principal отсутствует имя входа.The user will be created even if the windows_principal does not have a login. Если при подключении к SQL ServerSQL Server для windows_principal отсутствует имя входа,то субъект Windows должен пройти проверку подлинности в компоненте Компонент Database EngineDatabase Engine за счет членства в группе Windows, имеющей имя входа, либо в строке подключения в качестве исходного каталога должна указываться автономная база данных.When connecting to SQL ServerSQL Server, if the windows_principal does not have a login, the Windows principal must authenticate at the Компонент Database EngineDatabase Engine through membership in a Windows group that has a login, or the connection string must specify the contained database as the initial catalog. При создании пользователя из субъекта Windows используйте формат [ <domainName> \ <loginName> ] .When creating a user from a Windows principal, use the format [<domainName>\<loginName>]. Примеры см. в разделе Сводка синтаксиса.For examples, see Syntax Summary. Имена пользователей, основанные на пользователях Active Directory, могут иметь не более 21 символа в длину.Users based on Active Directory users, are limited to names of fewer than 21 characters.

'Azure_Active_Directory_principal''Azure_Active_Directory_principal'
Применимо к: База данных SQLSQL Database, Хранилище данных SQLSQL Data Warehouse.Applies to: База данных SQLSQL Database, Хранилище данных SQLSQL Data Warehouse.

Указывает субъект Azure Active Directory, для которого создается пользователь базы данных.Specifies the Azure Active Directory principal for which the database user is being created. Azure_Active_Directory_principal может быть пользователем Azure Active Directory, группой Azure Active Directory или приложением Azure Active Directory.The Azure_Active_Directory_principal can be an Azure Active Directory user, an Azure Active Directory group, or an Azure Active Directory application. (Пользователи Azure Active Directory не могут иметь имена входа для проверки подлинности Windows База данных SQLSQL Database; только пользователи базы данных.) В строке подключения необходимо указать автономную базу данных в качестве исходного каталога.(Azure Active Directory users cannot have Windows Authentication logins in База данных SQLSQL Database; only database users.) The connection string must specify the contained database as the initial catalog.

Для субъектов Azure AD действуют такие требования синтаксиса CREATE USER:For Azure AD principals, the CREATE USER syntax requires:

  • имя участника-пользователя (UserPrincipalName) объекта Azure AD для пользователей Azure AD;UserPrincipalName of the Azure AD object for Azure AD Users.

    • CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
    • CREATE USER [alice@fabrikam.onmicrosoft.com] FROM EXTERNAL PROVIDER;
  • отображаемое имя (DisplayName) объекта Azure AD для групп и приложений Azure AD.DisplayName of Azure AD object for Azure AD Groups and Azure AD Applications. Для группы безопасности Nurses будет отображаться следующее:If you had the Nurses security group, you would use:

    • CREATE USER [Nurses] FROM EXTERNAL PROVIDER;

Дополнительные сведения см. в статье Подключение к базе данных SQL с использованием проверки подлинности Azure Active Directory.For more information, see Connecting to SQL Database By Using Azure Active Directory Authentication.

WITH PASSWORD = 'password'WITH PASSWORD = 'password'
Применимо к: SQL Server 2012 (11.x)SQL Server 2012 (11.x) и выше, База данных SQLSQL Database.Applies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) and later, База данных SQLSQL Database.

Может использоваться только в автономной базе данных.Can only be used in a contained database. Задает пароль для создаваемого пользователя.Specifies the password for the user that is being created. Начиная с версии SQL Server 2012 (11.x)SQL Server 2012 (11.x) сохраненные сведения о пароле вычисляются с помощью SHA-512 соленого пароля.Beginning with SQL Server 2012 (11.x)SQL Server 2012 (11.x), stored password information is calculated using SHA-512 of the salted password.

WITHOUT LOGINWITHOUT LOGIN
Указывает, что пользователь не должен сопоставляться с существующим именем входа.Specifies that the user should not be mapped to an existing login.

CERTIFICATE cert_nameCERTIFICATE cert_name
Применимо к: SQL Server 2008SQL Server 2008 и выше, База данных SQLSQL Database.Applies to: SQL Server 2008SQL Server 2008 and later, База данных SQLSQL Database.

Указывает сертификат, для которого создается пользователь базы данных.Specifies the certificate for which the database user is being created.

ASYMMETRIC KEY asym_key_nameASYMMETRIC KEY asym_key_name
Применимо к: SQL Server 2008SQL Server 2008 и выше, База данных SQLSQL Database.Applies to: SQL Server 2008SQL Server 2008 and later, База данных SQLSQL Database.

Указывает асимметричный ключ, для которого создается пользователь базы данных.Specifies the asymmetric key for which the database user is being created.

DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }
Применимо к: SQL Server 2012 (11.x)SQL Server 2012 (11.x) и выше, База данных SQLSQL Database.Applies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) and later, База данных SQLSQL Database.

Задает язык по умолчанию для нового пользователя.Specifies the default language for the new user. Если для пользователя задается язык по умолчанию, а затем язык базы данных по умолчанию изменяется, то язык по умолчанию для пользователя сохраняет указанное значение.If a default language is specified for the user and the default language of the database is later changed, the users default language remains as specified. Если язык по умолчанию не указывается, то языком по умолчанию для пользователя становится язык по умолчанию для базы данных.If no default language is specified, the default language for the user will be the default language of the database. Если язык по умолчанию для пользователя не указывается, а язык по умолчанию для базы данных изменяется после создания пользователя, то язык по умолчанию для пользователя меняется на новый язык по умолчанию для базы данных.If the default language for the user is not specified and the default language of the database is later changed, the default language of the user will change to the new default language for the database.

Важно!

Аргумент DEFAULT_LANGUAGE используется только для пользователя автономной базы данных.DEFAULT_LANGUAGE is used only for a contained database user.

SID = sidSID = sid
Область применения: SQL Server 2012 (11.x)SQL Server 2012 (11.x) и более поздних версий.Applies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) and later.

Применимо только для пользователей с паролями (проверка подлинности SQL ServerSQL Server) в автономной базе данных.Applies only to users with passwords ( SQL ServerSQL Server authentication) in a contained database. Указывает идентификатор SID нового пользователя базы данных.Specifies the SID of the new database user. Если этот параметр не выбран, SQL ServerSQL Server назначает идентификатор SID автоматически.If this option is not selected, SQL ServerSQL Server automatically assigns a SID. Используйте параметр идентификатора SID для создания пользователей в нескольких базах данных с одинаковыми идентификаторами SID.Use the SID parameter to create users in multiple databases that have the same identity (SID). Это удобно при создании пользователей в нескольких базах данных для подготовки обработки отказа AlwaysOn.This is useful when creating users in multiple databases to prepare for Always On failover. Чтобы определить идентификатор SID пользователя, выполните запрос sys.database_principals.To determine the SID of a user, query sys.database_principals.

ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
Применимо к: SQL Server 2016 (13.x)SQL Server 2016 (13.x) и выше, База данных SQLSQL Database.Applies to: SQL Server 2016 (13.x)SQL Server 2016 (13.x) and later, База данных SQLSQL Database.

Отключает проверки шифрованных метаданных на сервере в операциях массового копирования.Suppresses cryptographic metadata checks on the server in bulk copy operations. Это позволяет пользователю массово копировать зашифрованные данные между таблицами или базами данных без расшифровки данных.This enables the user to bulk copy encrypted data between tables or databases, without decrypting the data. Значение по умолчанию — OFF.The default is OFF.

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

Неправильное использование этого параметра может привести к повреждению данных.Improper use of this option can lead to data corruption. Дополнительные сведения см. в разделе Перенос конфиденциальных данных с помощью функции Always Encrypted.For more information, see Migrate Sensitive Data Protected by Always Encrypted.

RemarksRemarks

Если предложение FOR LOGIN не указано, новый пользователь базы данных будет сопоставлен с именем входа SQL ServerSQL Server, имеющим такое же имя.If FOR LOGIN is omitted, the new database user will be mapped to the SQL ServerSQL Server login with the same name.

Схемой по умолчанию будет первая схема, которую найдет сервер, после того как получит имена объектов для данного пользователя базы данных.The default schema will be the first schema that will be searched by the server when it resolves the names of objects for this database user. Если не указано иное, схемой по умолчанию будет владелец объектов, создаваемых этим пользователем базы данных.Unless otherwise specified, the default schema will be the owner of objects created by this database user.

Если пользователь имеет схему по умолчанию, будет использоваться эта схема.If the user has a default schema, that default schema will used. Если у пользователя нет схемы по умолчанию, но он является членом группы, которая имеет схему по умолчанию, используется схема по умолчанию группы.If the user does not have a default schema, but the user is a member of a group that has a default schema, the default schema of the group will be used. Если пользователь не имеет схемы по умолчанию и является членом нескольких групп, схемой по умолчанию для этого пользователя будет схема по умолчанию группы Windows с минимальным значением principal_id и явно заданной схемой по умолчанию.If the user does not have a default schema, and is a member of more than one group, the default schema for the user will be that of the Windows group with the lowest principal_id and an explicitly set default schema. (Невозможно явно выбрать одну из доступных схем по умолчанию как предпочтительную.) Если для пользователя нельзя определить схему по умолчанию, будет использоваться схема dbo.(It is not possible to explicitly select one of the available default schemas as the preferred schema.) If no default schema can be determined for a user, the dbo schema will be used.

Значение DEFAULT_SCHEMA может быть установлено до создания схемы, на которую оно указывает.DEFAULT_SCHEMA can be set before the schema that it points to is created.

Значение DEFAULT_SCHEMA не может указываться при создании пользователя, сопоставленного с сертификатом или асимметричным ключом.DEFAULT_SCHEMA cannot be specified when you are creating a user mapped to a certificate, or an asymmetric key.

Значение параметра DEFAULT_SCHEMA не учитывается, если пользователь является членом предопределенной роли сервера sysadmin.The value of DEFAULT_SCHEMA is ignored if the user is a member of the sysadmin fixed server role. Для всех членов предопределенной роли сервера sysadmin по умолчанию установлена схема dbo.All members of the sysadmin fixed server role have a default schema of dbo.

Предложение WITHOUT LOGIN создает пользователя, который не сопоставляется с именем входа SQL Server.The WITHOUT LOGIN clause creates a user that is not mapped to a SQL Server login. Такой пользователь может подключиться к базе данных как guest.It can connect to other databases as guest. Этому пользователю без имени входа можно назначать разрешения, и когда контекст безопасности меняется на пользователя без имени входа, то исходные пользователи получают его разрешения.Permissions can be assigned to this user without login and when the security context is changed to a user without login, the original users receives the permissions of the user without login. См. пример Г. Создание и использование пользователя без имени входа.See example D. Creating and using a user without a login.

Символ обратной косой черты ( \ ) может содержаться только в именах пользователей, сопоставленных с субъектами Windows.Only users that are mapped to Windows principals can contain the backslash character (\).

С помощью инструкции CREATE USER нельзя создать пользователя guest, потому что пользователь guest уже существует в каждой базе данных.CREATE USER cannot be used to create a guest user because the guest user already exists inside every database. Активировать пользователя guest можно, предоставив ему разрешение CONNECT, как показано далее:You can enable the guest user by granting it CONNECT permission, as shown:

GRANT CONNECT TO guest;  
GO  

Данные о пользователях базы данных отображаются в представлении каталога sys.database_principals.Information about database users is visible in the sys.database_principals catalog view.

Для создания имен входа Azure AD на уровне сервера в управляемом экземпляре Базы данных SQL доступно новое расширение синтаксиса FROM EXTERNAL PROVIDER.A new syntax extension, FROM EXTERNAL PROVIDER is available for creating server-level Azure AD logins in SQL Database managed instance. Имена входа Azure AD позволяют сопоставлять субъекты Azure AD на уровне базы данных с именами входа Azure AD на уровне сервера.Azure AD logins allow database-level Azure AD principals to be mapped to server-level Azure AD logins. Чтобы создать пользователя Azure AD по имени входа Azure AD, используйте следующий синтаксис:To create an Azure AD user from an Azure AD login use the following syntax:

CREATE USER [AAD_principal] FROM LOGIN [Azure AD login]

При создании пользователя в управляемом экземпляре Базы данных SQL значение login_name должно соответствовать имеющемуся имени входа Azure AD. В противном случае в результате использования предложения FROM EXTERNAL PROVIDER будет создан только пользователь Azure AD без имени входа в базе данных master.When creating the user in the SQL Database managed instance database, the login_name must correspond to an existing Azure AD login, or else using the FROM EXTERNAL PROVIDER clause will only create an Azure AD user without a login in the master database. Например, следующая команда создает автономного пользователя:For example, this command will create a contained user:

CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER

Сводка синтаксисаSyntax Summary

Пользователи, соответствующие именам входа в базе данных masterUsers based on logins in master

В следующем списке показан возможный синтаксис для пользователей, связанных с именами входа.The following list shows possible syntax for users based on logins. Параметры схемы по умолчанию не указываются.The default schema options are not listed.

  • CREATE USER [Domain1\WindowsUserBarry]
  • CREATE USER [Domain1\WindowsUserBarry] FOR LOGIN Domain1\WindowsUserBarry
  • CREATE USER [Domain1\WindowsUserBarry] FROM LOGIN Domain1\WindowsUserBarry
  • CREATE USER [Domain1\WindowsGroupManagers]
  • CREATE USER [Domain1\WindowsGroupManagers] FOR LOGIN [Domain1\WindowsGroupManagers]
  • CREATE USER [Domain1\WindowsGroupManagers] FROM LOGIN [Domain1\WindowsGroupManagers]
  • CREATE USER SQLAUTHLOGIN
  • CREATE USER SQLAUTHLOGIN FOR LOGIN SQLAUTHLOGIN
  • CREATE USER SQLAUTHLOGIN FROM LOGIN SQLAUTHLOGIN

Пользователи, проходящие проверку подлинности в базе данныхUsers that authenticate at the database

В следующем списке показан возможный синтаксис для пользователей, которые могут использоваться только в автономной базе данных.The following list shows possible syntax for users that can only be used in a contained database. Созданные пользователи не будут связаны с именами входа в базе данных master.The users created will not be related to any logins in the master database. Параметры схемы и языковые параметры, задаваемые по умолчанию, не указываются.The default schema and language options are not listed.

Важно!

Этот синтаксис предоставляет пользователям доступ к базе данных и новый доступ к компоненту Компонент Database EngineDatabase Engine.This syntax grants users access to the database and also grants new access to the Компонент Database EngineDatabase Engine.

  • CREATE USER [Domain1\WindowsUserBarry]
  • CREATE USER [Domain1\WindowsGroupManagers]
  • CREATE USER Barry WITH PASSWORD = 'sdjklalie8rew8337!$d'

Пользователи на основе субъектов Windows без подключения к базе данных masterUsers based on Windows principals without logins in master

В следующем списке показан возможный синтаксис для пользователей, имеющих доступ к компоненту Компонент Database EngineDatabase Engine за счет членства в группе Windows, но не имеющих имени входа в базе данных master.The following list shows possible syntax for users that have access to the Компонент Database EngineDatabase Engine through a Windows group but do not have a login in master. Такой синтаксис можно использовать во всех типах базы данных.This syntax can be used in all types of databases. Параметры схемы и языковые параметры, задаваемые по умолчанию, не указываются.The default schema and language options are not listed.

Этот синтаксис аналогичен пользователям, соответствующим именам входа в базе данных master, однако пользователи данной категории не имеют имени входа в базе данных master.This syntax is similar to users based on logins in master, but this category of user does not have a login in master. Пользователь должен получать доступ к компоненту Компонент Database EngineDatabase Engine с помощью имени входа группы Windows.The user must have access to the Компонент Database EngineDatabase Engine through a Windows group login.

Этот синтаксис аналогичен пользователям автономной базы данных, соответствующим участникам Windows, однако пользователи данной категории не получают новый доступ к компоненту Компонент Database EngineDatabase Engine.This syntax is similar to contained database users based on Windows principals, but this category of user does not get new access to the Компонент Database EngineDatabase Engine.

  • CREATE USER [Domain1\WindowsUserBarry]
  • CREATE USER [Domain1\WindowsUserBarry] FOR LOGIN Domain1\WindowsUserBarry
  • CREATE USER [Domain1\WindowsUserBarry] FROM LOGIN Domain1\WindowsUserBarry
  • CREATE USER [Domain1\WindowsGroupManagers]
  • CREATE USER [Domain1\WindowsGroupManagers] FOR LOGIN [Domain1\WindowsGroupManagers]
  • CREATE USER [Domain1\WindowsGroupManagers] FROM LOGIN [Domain1\WindowsGroupManagers]

Пользователи, которые не могут проходить проверку подлинностиUsers that cannot authenticate

В следующем списке показан возможный синтаксис для пользователей, которые не могут выполнять вход в SQL ServerSQL Server.The following list shows possible syntax for users that cannot login to SQL ServerSQL Server.

  • CREATE USER RIGHTSHOLDER WITHOUT LOGIN
  • CREATE USER CERTUSER FOR CERTIFICATE SpecialCert
  • CREATE USER CERTUSER FROM CERTIFICATE SpecialCert
  • CREATE USER KEYUSER FOR ASYMMETRIC KEY SecureKey
  • CREATE USER KEYUSER FROM ASYMMETRIC KEY SecureKey

безопасностьSecurity

При создании пользователя предоставляется доступ к базе данных, однако доступ к объектам в базе данных не предоставляется автоматически.Creating a user grants access to a database but does not automatically grant any access to the objects in a database. После создания пользователи обычно добавляются в роли базы данных, которые имеют разрешение на доступ к объектам базы данных, либо разрешения на объект предоставляются непосредственно пользователю.After creating a user, common actions are to add users to database roles that have permission to access database objects, or grant object permissions to the user. Сведения о проектировании системы разрешений см. в статье Getting Started with Database Engine Permissions.For information about designing a permissions system, see Getting Started with Database Engine Permissions.

Замечания, относящиеся к автономным базам данныхSpecial Considerations for Contained Databases

Если при подключении к автономной базе данных пользователь не имеет имени входа в базе данных master, то строка подключения должна содержать имя автономной базы данных в качестве исходного каталога.When connecting to a contained database, if the user does not have a login in the master database, the connection string must include the contained database name as the initial catalog. Параметр исходного каталога всегда обязателен для пользователя автономной базы данных с паролем.The initial catalog parameter is always required for a contained database user with password.

Создание пользователей в автономной базе данных позволяет отделить базу данных от экземпляра компонента Компонент Database EngineDatabase Engine, что позволяет легко переместить ее в другой экземпляр SQL ServerSQL Server.In a contained database, creating users helps separate the database from the instance of the Компонент Database EngineDatabase Engine so that the database can easily be moved to another instance of SQL ServerSQL Server. Дополнительные сведения см. в разделах Автономные базы данных и Пользователи автономной базы данных — создание переносимой базы данных.For more information, see Contained Databases and Contained Database Users - Making Your Database Portable. Сведения об изменении пользователя базы данных с пользователя, соответствующего имени входа для проверки подлинности SQL ServerSQL Server, на пользователя автономной базы данных с паролем см. в разделе sp_migrate_user_to_contained (Transact-SQL).To change a database user from a user based on a SQL ServerSQL Server authentication login to a contained database user with password, see sp_migrate_user_to_contained (Transact-SQL).

В автономной базе данных пользователям не обязательно иметь имена входа в базе данных master.In a contained database, users do not have to have logins in the master database. Администраторы Компонент Database EngineDatabase Engine должны учитывать, что доступ к автономной базе данных можно предоставлять на уровне базы данных, а не на уровне компонента Компонент Database EngineDatabase Engine.Компонент Database EngineDatabase Engine administrators should understand that access to a contained database can be granted at the database level, instead of the Компонент Database EngineDatabase Engine level. Дополнительные сведения см. в разделе Security Best Practices with Contained Databases.For more information, see Security Best Practices with Contained Databases.

При использовании пользователей автономной базы данных База данных SQL AzureAzure SQL Database настройте доступ с помощью правила брандмауэра уровня базы данных вместо правила брандмауэра уровня сервера.When using contained database users on База данных SQL AzureAzure SQL Database, configure access using a database-level firewall rule, instead of a server-level firewall rule. Дополнительные сведения см. в разделе sp_set_database_firewall_rule (база данных SQL Azure).For more information, see sp_set_database_firewall_rule (Azure SQL Database).

Для пользователей автономной базы данных База данных SQLSQL Database и Хранилище данных SQLSQL Data Warehouse SSMS может поддерживать многофакторную проверку подлинности.For База данных SQLSQL Database and Хранилище данных SQLSQL Data Warehouse contained database users, SSMS can support Multi-Factor Authentication. Дополнительные сведения см. в разделе Поддержка SSMS для Azure AD MFA с использованием Базы данных SQL и хранилища данных SQL.For more information, see SSMS support for Azure AD MFA with SQL Database and SQL Data Warehouse.

РазрешенияPermissions

Необходимо разрешение ALTER ANY USER для базы данных.Requires ALTER ANY USER permission on the database.

ПримерыExamples

A.A. Создание пользователя базы данных, соответствующего имени входа SQL ServerCreating a database user based on a SQL Server login

В следующем примере сначала создается имя входа SQL ServerSQL ServerAbolrousHazem, а затем создается соответствующий пользователь AbolrousHazem в базе данных AdventureWorks2012.The following example first creates a SQL ServerSQL Server login named AbolrousHazem, and then creates a corresponding database user AbolrousHazem in AdventureWorks2012.

CREATE LOGIN AbolrousHazem   
    WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';  

Изменение на пользовательскую базу данных.Change to a user database. Например, в SQL ServerSQL Server используйте инструкцию USE AdventureWorks2012.For example, in SQL ServerSQL Server use the USE AdventureWorks2012 statement. В Azure Synapse Analytics (хранилище данных SQL)Azure Synapse Analytics (SQL DW) и Параллельное хранилище данныхParallel Data Warehouse необходимо создать новое подключение к пользовательской базе данных.In Azure Synapse Analytics (хранилище данных SQL)Azure Synapse Analytics (SQL DW) and Параллельное хранилище данныхParallel Data Warehouse, you must make a new connection to the user database.

CREATE USER AbolrousHazem FOR LOGIN AbolrousHazem;  
GO   

Б.B. Создание пользователя базы данных со схемой по умолчаниюCreating a database user with a default schema

В следующем примере вначале создается имя входа WanidaBenshoof с паролем на сервер, а затем в базе данных создается соответствующий пользователь Wanida со схемой по умолчанию Marketing.The following example first creates a server login named WanidaBenshoof with a password, and then creates a corresponding database user Wanida, with the default schema Marketing.

CREATE LOGIN WanidaBenshoof   
    WITH PASSWORD = '8fdKJl3$nlNv3049jsKK';  
USE AdventureWorks2012;  
CREATE USER Wanida FOR LOGIN WanidaBenshoof   
    WITH DEFAULT_SCHEMA = Marketing;  
GO  

В.C. Создание пользователя базы данных из сертификатаCreating a database user from a certificate

В следующем примере в базе данных создается пользователь JinghaoLiu из сертификата CarnationProduction50.The following example creates a database user JinghaoLiu from certificate CarnationProduction50.

Область применения: SQL Server 2008SQL Server 2008 и более поздних версий.Applies to: SQL Server 2008SQL Server 2008 and later.

USE AdventureWorks2012;  
CREATE CERTIFICATE CarnationProduction50  
    WITH SUBJECT = 'Carnation Production Facility Supervisors',  
    EXPIRY_DATE = '11/11/2011';  
GO  
CREATE USER JinghaoLiu FOR CERTIFICATE CarnationProduction50;  
GO   

Г.D. Создание и использование пользователя без имени входаCreating and using a user without a login

В следующем примере создается пользователь базы данных CustomApp, который не сопоставляется с именем входа SQL ServerSQL Server.The following example creates a database user CustomApp that does not map to a SQL ServerSQL Server login. Затем пример предоставляет пользователю adventure-works\tengiz0 разрешение на олицетворение CustomApp пользователя.The example then grants a user adventure-works\tengiz0 permission to impersonate the CustomApp user.

USE AdventureWorks2012 ;  
CREATE USER CustomApp WITHOUT LOGIN ;  
GRANT IMPERSONATE ON USER::CustomApp TO [adventure-works\tengiz0] ;  
GO   

Для использования учетных данных CustomApp , пользователь adventure-works\tengiz0 выполняет следующее выражение.To use the CustomApp credentials, the user adventure-works\tengiz0 executes the following statement.

EXECUTE AS USER = 'CustomApp' ;  
GO  

Для возврата к учетным данным adventure-works\tengiz0 , пользователь выполняет следующее выражение.To revert back to the adventure-works\tengiz0 credentials, the user executes the following statement.

REVERT ;  
GO  

Д.E. Создание пользователя автономной базы данных с паролемCreating a contained database user with password

В следующем примере создается пользователь автономной базы данных с паролем.The following example creates a contained database user with password. Этот пример можно выполнить только в автономной базе данных.This example can only be executed in a contained database.

Область применения: SQL Server 2012 (11.x)SQL Server 2012 (11.x) и более поздних версий.Applies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) and later. Этот пример работает в База данных SQLSQL Database, если удаляется DEFAULT_LANGUAGE.This example works in База данных SQLSQL Database if DEFAULT_LANGUAGE is removed.

USE AdventureWorks2012 ;  
GO  
CREATE USER Carlo  
WITH PASSWORD='RN92piTCh%$!~3K9844 Bl*'  
    , DEFAULT_LANGUAGE=[Brazilian]  
    , DEFAULT_SCHEMA=[dbo]  
GO   

Е.F. Создание пользователя автономной базы данных для имени входа доменаCreating a contained database user for a domain login

В следующем примере создается пользователь автономной базы данных для имени входа Fritz в домене Contoso.The following example creates a contained database user for a login named Fritz in a domain named Contoso. Этот пример можно выполнить только в автономной базе данных.This example can only be executed in a contained database.

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

USE AdventureWorks2012 ;  
GO  
CREATE USER [Contoso\Fritz] ;  
GO   

Ж.G. Создание пользователя автономной базы данных с конкретным идентификатором SIDCreating a contained database user with a specific SID

В следующем примере создается пользователь автономной базы данных с проверкой подлинности SQL Server, имя пользователя — CarmenW.The following example creates a SQL Server authenticated contained database user named CarmenW. Этот пример можно выполнить только в автономной базе данных.This example can only be executed in a contained database.

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

USE AdventureWorks2012 ;  
GO  
CREATE USER CarmenW WITH PASSWORD = 'a8ea v*(Rd##+'  
, SID = 0x01050000000000090300000063FF0451A9E7664BA705B10E37DDC4B7;  
  

З.H. Создание пользователя для копирования зашифрованных данныхCreating a user to copy encrypted data

В следующем примере создается пользователь, который может копировать данные, защищенные компонентом Always Encrypted, из одного набора таблиц, содержащего зашифрованные столбцы, в другой набор таблиц с зашифрованными столбцами (в той же или другой базе данных).The following example creates a user that can copy data that is protected by the Always Encrypted feature from one set of tables, containing encrypted columns, to another set of tables with encrypted columns (in the same or a different database). Дополнительные сведения см. в разделе Перенос конфиденциальных данных с помощью функции Always Encrypted.For more information, see Migrate Sensitive Data Protected by Always Encrypted.

Применимо к: SQL Server 2016 (13.x)SQL Server 2016 (13.x) и выше, База данных SQLSQL Database.Applies to: SQL Server 2016 (13.x)SQL Server 2016 (13.x) and later, База данных SQLSQL Database.

CREATE USER [Chin]   
WITH   
      DEFAULT_SCHEMA = dbo  
    , ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = ON ;  

И.I. Создание пользователя Azure AD по имени входа Azure AD в управляемом экземпляре Базы данных SQLCreate an Azure AD user from an Azure AD login in SQL Database managed instance

Чтобы создать пользователя Azure AD по имени входа Azure AD, используйте приведенный ниже синтаксис.To create an Azure AD user from an Azure AD login, use the following syntax.

Войдите в управляемый экземпляр, используя имя входа Azure AD с ролью sysadmin.Sign into your managed instance with an Azure AD login granted with the sysadmin role. Приведенная ниже инструкция создает пользователя Azure AD bob@contoso.com по имени входа bob@contoso.com.The following creates an Azure AD user bob@contoso.com, from the login bob@contoso.com. Это имя входа было создано в примере CREATE LOGIN.This login was created in the CREATE LOGIN example.

CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com];
GO

Важно!

При создании пользователя по имени входа Azure AD указываемое значение user_name должно совпадать со значением login_name имени входа.When creating a USER from an Azure AD login, specify the user_name as the same login_name from LOGIN.

Создание пользователя Azure AD в качестве группы на основе имени входа Azure AD, являющегося группой, не поддерживается.Creating an Azure AD user as a group from an Azure AD login that is a group is supported.

CREATE USER [AAD group] FROM LOGIN [AAD group];
GO

Вы можете создать пользователя Azure AD по имени входа Azure AD, являющемуся группой.You can also create an Azure AD user from an Azure AD login that is a group.

CREATE USER [bob@contoso.com] FROM LOGIN [AAD group];
GO

К.J. Создание пользователя Azure AD без имени входа AAD для базы данныхCreate an Azure AD user without an AAD login for the database

Чтобы создать пользователя Azure AD bob@contoso.com (автономного) в управляемом экземпляре Базы данных SQL, используйте следующий синтаксис:The following syntax is used to create an Azure AD user bob@contoso.com, in the SQL Database managed instance database (contained user):

CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
GO

Дальнейшие действияNext steps

После создания пользователя вы можете добавить пользователя к роли базы данных с помощью инструкции ALTER ROLE.Once the user is created, consider adding the user to a database role using the ALTER ROLE statement.
Используйте GRANT для предоставления роли разрешений на объект, чтобы она имела доступ к таблицам.You might also want to GRANT Object Permissions to the role so they can access tables. Общие сведения о модели безопасности SQL Server см. в разделе Разрешения.For general information about the SQL Server security model, see Permissions.

См. также:See Also

Создание пользователя базы данных Create a Database User
sys.database_principals (Transact-SQL) sys.database_principals (Transact-SQL)
ALTER USER (Transact-SQL) ALTER USER (Transact-SQL)
DROP USER (Transact-SQL) DROP USER (Transact-SQL)
CREATE LOGIN (Transact-SQL) CREATE LOGIN (Transact-SQL)
EVENTDATA (Transact-SQL) EVENTDATA (Transact-SQL)
Автономные базы данных Contained Databases
Подключение к базе данных SQL с использованием аутентификации Azure Active Directory Connecting to SQL Database By Using Azure Active Directory Authentication
Приступая к работе с разрешениями Database EngineGetting Started with Database Engine Permissions