CREATE USER (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsBase de datos de Azure SQL en Microsoft Fabric

Agrega un usuario a la base de datos actual. La siguiente lista muestra los 13 tipos de usuarios junto con una muestra de la sintaxis más básica:

Note

Aunque Microsoft Entra ID es el nuevo nombre de Azure Active Directory (Azure AD), para evitar interrumpir los entornos existentes, Azure AD sigue estando en algunos elementos codificados de forma rígida como campos de interfaz de usuario, proveedores de conexiones, códigos de error y cmdlets. En este artículo, los dos nombres son intercambiables.

Usuarios basados en inicios de sesión en master

  • Usuario basado en un inicio de sesión basado en un grupo de Windows Active Directory. CREATE USER [Contoso\test];

  • Usuario basado en un inicio de sesión basado en un grupo de Windows. CREATE USER [Contoso\Sales];

  • Usuario basado en un inicio de sesión que utiliza autenticación de SQL Server. CREATE USER Mary;

  • Usuario basado en un inicio de sesión de Microsoft Entra. CREATE USER [test@contoso.com] FROM LOGIN [test@contoso.com]

    Note

    Las entidades de seguridad (inicios de sesión) de Microsoft Entra server se encuentran actualmente en versión preliminar pública para Azure SQL Database.

    Note

    La base de datos SQL en Microsoft Fabric no soporta inicios de sesión ni usuarios basados en ellos.

Usuarios que se autentican en la base de datos - Utiliza usuarios contenidos para ayudar a que tu base de datos sea más portátil.
Siempre permitido en Azure SQL Database. Solo se admite en una base de datos independiente en SQL Server.

  • Usuario basado en un usuario de Windows sin inicio de sesión. CREATE USER [Contoso\test];

  • Usuario basado en un grupo de Windows sin inicio de sesión. CREATE USER [Contoso\Sales];

  • Usuario de SQL Database o Azure Synapse Analytics basado en un usuario de Microsoft Entra. CREATE USER [test@contoso.com] FROM EXTERNAL PROVIDER;

  • Usuario de base de datos independiente con contraseña. (No está disponible en Azure Synapse Analytics). CREATE USER Mary WITH PASSWORD = '********';

Usuarios basados en entidades de seguridad de Windows que conectan a través de inicios de sesión de grupo de Windows

  • Usuario basado en un usuario de Windows sin inicio de sesión, pero que se puede conectar a Motor de base de datos mediante la pertenencia a un grupo de Windows. CREATE USER [Contoso\test];

  • Usuario basado en un grupo de Windows sin inicio de sesión, pero que se puede conectar a Motor de base de datos mediante la pertenencia a un grupo distinto de Windows. CREATE USER [Contoso\test];

Usuarios que no se pueden autenticar : estos usuarios no pueden iniciar sesión en SQL Server o SQL Database.

  • Usuario sin inicio de sesión. No se puede iniciar sesión, pero se pueden conceder permisos. CREATE USER CustomApp WITHOUT LOGIN;
  • Usuario basado en un certificado. No se puede iniciar sesión, pero se pueden conceder permisos y puede firmar módulos. CREATE USER TestProcess FOR CERTIFICATE Contoso50;
  • Usuario basado en una clave asimétrica. No se puede iniciar sesión, pero se pueden conceder permisos y puede firmar módulos. CREATE User TestProcess FROM ASYMMETRIC KEY Contoso09;

Convenciones de sintaxis de Transact-SQL

Syntax

Sintaxis para SQL Server, Azure SQL Database e Instancia administrada de Azure SQL

-- 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> [ , ... ]
    | Microsoft_Entra_principal FROM EXTERNAL PROVIDER [ WITH OBJECT_ID = 'objectid' ]
    }

 [ ; ]

-- 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 Microsoft Entra logins for Azure SQL 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 ] ]

Sintaxis de Azure Synapse Analytics

CREATE USER user_name
    [ { { FOR | FROM } { LOGIN login_name }
      | WITHOUT LOGIN
    ]
    [ WITH DEFAULT_SCHEMA = schema_name ]
[;]

CREATE USER Microsoft_Entra_principal FROM EXTERNAL PROVIDER
    [ WITH DEFAULT_SCHEMA = schema_name ]
[;]

Sintaxis para bases de datos SQL en Microsoft Fabric y Azure SQL Database

CREATE USER
    {
    Microsoft_Entra_principal FROM EXTERNAL PROVIDER [ WITH <limited_options_list> [ , ... ] ]
    | Microsoft_Entra_principal WITH <options_list> [ , ... ]
    }
 [ ; ]

-- Users that cannot authenticate
CREATE USER user_name
    {    WITHOUT LOGIN [ WITH DEFAULT_SCHEMA = schema_name ]
       | { FOR | FROM } CERTIFICATE cert_name
       | { FOR | FROM } ASYMMETRIC KEY asym_key_name
    }
 [ ; ]

<limited_options_list> ::=
      DEFAULT_SCHEMA = schema_name
    | OBJECT_ID = 'objectid'

<options_list> ::=
      DEFAULT_SCHEMA = schema_name
    | SID = sid
    | TYPE = { X | E }

Arguments

user_name

Especifica el nombre por el que se identifica al usuario en esta base de datos. user_name es sysname. Puede tener una longitud máxima de 128 caracteres. Cuando se crea un usuario basado en una entidad de seguridad de Windows, el nombre de esta entidad se convierte en el nombre de usuario a menos que se especifique otro nombre de usuario.

LOGIN login_name

Especifica el inicio de sesión para el que se crea el usuario de base de datos. login_name debe ser un inicio de sesión válido en el servidor. Puede ser un inicio de sesión basado en una entidad de seguridad de Windows (usuario o grupo), un inicio de sesión mediante la autenticación de SQL Server o un inicio de sesión mediante una entidad de seguridad de Microsoft Entra (usuario, grupo o aplicación). Cuando este inicio de sesión de SQL Server accede a la base de datos, adquiere el nombre y el identificador del usuario de la base de datos que se está creando. Cuando cree un inicio de sesión asignado a una entidad de seguridad de Windows, use el formato [<domainName>\<loginName>]. Para obtener ejemplos, vea Resumen de la sintaxis.

Si la CREATE USER sentencia es la única en un lote SQL, Azure SQL Database soporta la cláusula WITHLOGIN. Si la CREATE USER sentencia no es la única en un lote SQL o se ejecuta en SQL dinámico, la cláusula WITH LOGIN no está soportada.

CON DEFAULT_SCHEMA = schema_name

Especifica el primer esquema buscado por el servidor cuando resuelve los nombres de los objetos de este usuario de base de datos.

'windows_principal'

Especifica la entidad de seguridad de Windows para la que se crea el usuario de base de datos. windows_principal puede ser un usuario de Windows o un grupo de Windows. El usuario se creará aunque el parámetro windows_principal no disponga de inicio de sesión. Cuando se conecte a SQL Server, si el parámetro windows_principal no dispone de inicio de sesión, la entidad de seguridad de Windows se debe autenticar en el Motor de base de datos mediante la pertenencia a un grupo de Windows que disponga de inicio de sesión o la cadena de conexión debe especificar la base de datos independiente como el catálogo inicial. Al crear un usuario desde una entidad de seguridad de Windows, use el formato [<domainName>\<loginName>]. Para obtener ejemplos, vea Resumen de la sintaxis. Los usuarios basados en usuarios de Active Directory se limitan a nombres de menos de 21 caracteres.

'Microsoft_Entra_principal'

Aplica a: SQL Server 2022 (16.x) y versiones posteriores, SQL Database, SQL Managed Instance, Azure Synapse Analytics, base de datos SQL en Microsoft Fabric

Especifica la entidad de seguridad de Microsoft Entra para la que se va a crear el usuario de la base de datos. El Microsoft_Entra_principal puede ser un usuario de Microsoft Entra, un grupo de Microsoft Entra o una aplicación de Microsoft Entra. (Los usuarios de Microsoft Entra no pueden tener inicios de sesión de autenticación de Windows en SQL Database; solo los usuarios de la base de datos). El cadena de conexión debe especificar la base de datos independiente como catálogo inicial.

Para los principios de Microsoft Entra, la CREATE USER sintaxis requiere:

  • UserPrincipalName del objeto Microsoft Entra para usuarios de Microsoft Entra.

    • CREATE USER [test@contoso.com] FROM EXTERNAL PROVIDER;
    • CREATE USER [alice@fabrikam.onmicrosoft.com] FROM EXTERNAL PROVIDER;
  • Las entidades de seguridad (inicios de sesión) de Microsoft Entra server presentan la creación de usuarios asignados a los inicios de sesión de Microsoft Entra en la master base de datos. Por ejemplo: CREATE USER [test@contoso.com] FROM LOGIN [test@contoso.com];

  • No se admiten usuarios y entidades de servicio (aplicaciones) de Microsoft Entra que sean miembros de más de 2048 grupos de seguridad de Microsoft Entra para iniciar sesión en bases de datos en Azure SQL Database, Azure SQL Instancia administrada o Azure Synapse.

  • DisplayName del objeto Microsoft Entra para grupos de Microsoft Entra y Aplicaciones de Microsoft Entra. Si tuviera el grupo de seguridad Enfermeras, utilizaría:

    • CREATE USER [Nurses] FROM EXTERNAL PROVIDER;

Para obtener más información, consulte Conexión a SQL Database mediante la autenticación de Microsoft Entra.

Para obtener más información sobre la autenticación de Microsoft Entra en SQL Server, consulte Tutorial: Configuración de la autenticación de Microsoft Entra para SQL Server habilitado por Azure Arc.

CON CONTRASEÑA = 'contraseña'

Aplica a: SQL Server 2012 (11.x) y versiones posteriores, base de datos SQL.

Solo se puede usar en una base de datos independiente. Especifica la contraseña del usuario que se está creando.

A partir de SQL Server 2012 (11.x), SQL Server y Azure SQL Database usaron un hash SHA-512 combinado con una sal aleatoria y única de 32 bits. Este método lo hizo estadísticamente inviable para que los atacantes deducen contraseñas.

SQL Server 2025 (17.x) presenta un algoritmo hash iterado, RFC2898, también conocido como función de derivación de claves basada en contraseña (PBKDF). Este algoritmo sigue usando SHA-512, pero aplica hash a la contraseña varias veces (100 000 iteraciones), lo que ralentiza significativamente los ataques por fuerza bruta. Este cambio mejora la protección con contraseña en respuesta a las amenazas de seguridad en evolución y ayuda a los clientes a cumplir las directrices de NIST SP 800-63b. Esta mejora de seguridad usa un algoritmo hash más seguro, que puede aumentar ligeramente el tiempo de inicio de sesión para los inicios de sesión de autenticación de SQL. Por lo general, el impacto es menor en entornos con agrupación de conexiones, pero puede ser más notable en escenarios sin agrupación o donde se supervisa estrechamente la latencia de inicio de sesión.

SIN LOGIN

Especifica que el usuario no se debe asignar a ningún inicio de sesión existente.

CERTIFICATE cert_name

Aplica a: SQL Server 2008 (10.0.x) y versiones posteriores, base de datos SQL, base de datos SQL en Microsoft Fabric

Especifica el certificado del usuario de la base de datos que se crea.

ASYMMETRIC KEY asym_key_name

Aplica a: SQL Server 2008 (10.0.x) y versiones posteriores, base de datos SQL, base de datos SQL en Microsoft Fabric

Especifica la clave asimétrica del usuario de la base de datos que se crea.

DEFAULT_LANGUAGE = { NONE | <lcid> | <nombre de idioma> | <alias de idioma> }

Aplica a: SQL Server 2012 (11.x) y versiones posteriores, SQL Database

Especifica el idioma predeterminado del nuevo usuario. Si especificas un idioma predeterminado para el usuario y luego cambias el idioma predeterminado de la base de datos, el idioma predeterminado del usuario permanece tal como se especificó. Si no especificas un idioma por defecto, el usuario obtiene el idioma predeterminado de la base de datos. Si no especificas un idioma predeterminado para el usuario y luego cambias el idioma predeterminado de la base de datos, el idioma predeterminado del usuario cambia al nuevo idioma predeterminado para la base de datos.

Important

DEFAULT_LANGUAGE solo se usa para un usuario de base de datos independiente.

SID = sid

Aplica a: SQL Server 2012 (11.x) y versiones posteriores, y a bases de datos SQL en Microsoft Fabric.

En SQL Server 2012 (11.x) y versiones posteriores, solo se aplica a usuarios con contraseñas (autenticación SQL Server) dentro de una base de datos contenida. Especifica el SID de la base de datos. Si no seleccionas esta opción, SQL Server asigna automáticamente un SID. Utilice el parámetro SID para crear usuarios en varias bases de datos que tienen la misma identidad (SID). Esta función es útil al crear usuarios en múltiples bases de datos para prepararse para el failover Always On. Para determinar el SID de un usuario, consulta sys.database_principals.

En la base de datos SQL de Microsoft Fabric, sid debe ser un identificador válido de la entidad de seguridad de Microsoft Entra especificada. Si el principal es un usuario o un grupo, el ID debe ser un ID de objeto Microsoft Entra del usuario o grupo. Si el principal de Microsoft Entra es un principal de servicio (una aplicación o una identidad gestionada), el ID debe ser un ID de aplicación o un ID de cliente. El identificador especificado debe ser un binary(16) valor. El Motor de base de datos no valida el identificador especificado en Microsoft Entra. Si usas el SID argumento, debes incluir TYPE.

TYPE = [ E | X ]

Se aplica a: SQL Database en Microsoft Fabric y Azure SQL Database.

Especifica el tipo de una entidad de seguridad de Microsoft Entra. E indica que la entidad de seguridad es un usuario o una entidad de servicio (una aplicación o una identidad administrada). X indica que la entidad de seguridad es un grupo.

ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ENCENDIDO | APAGADO ]

Aplica a: SQL Server 2016 (13.x) y versiones posteriores, base de datos SQL.

Suprime las comprobaciones de metadatos criptográficos en el servidor en operaciones de copia masiva. De esta manera, el usuario puede copiar los datos de forma masiva entre tablas o bases de datos, sin descifrar los datos. El valor predeterminado es OFF.

Warning

Si esta opción no se utiliza adecuadamente, pueden dañarse los datos. Para obtener más información, vea Migración de datos confidenciales protegidos mediante Always Encrypted.

DE PROVEEDOR EXTERNO

Aplica a: SQL Server 2022 (16.x) y versiones posteriores, base de datos SQL, Azure SQL Managed Instance, base de datos SQL en Microsoft Fabric

Especifica que la entidad de seguridad es para la autenticación de Microsoft Entra. SQL Server valida automáticamente el nombre principal proporcionado en Microsoft Entra.

Si el principal que emite la CREATE USER declaración es un usuario principal de Microsoft Entra, el principal o el grupo del principal deben estar en el rol de Directory Readers en Microsoft Entra.

En SQL Database y Azure SQL Instancia administrada, si la entidad de seguridad que emite la CREATE USER instrucción es una entidad de servicio, la identidad del servidor de base de datos o la instancia administrada debe estar en el rol Lectores de directorio de Microsoft Entra.

En la base de datos SQL en Microsoft Fabric, no puedes usar FROM EXTERNAL PROVIDER si un principal que emite CREATE USER es un principal de servicio en Microsoft Entra. Las entidades de servicio deben usar TYPE y SID argumentos para crear usuarios para entidades de seguridad de Microsoft Entra.

CON OBJECT_ID = 'objetido'

Aplica a: SQL Server 2025 (17.x) y versiones posteriores, SQL Database, Azure SQL Managed Instance, base de datos SQL en Microsoft Fabric

Especifica el identificador de objeto entra de Microsoft. Si especificas el OBJECT_ID, puede user_name ser un alias definido por el usuario formado a partir del nombre principal original con un sufijo añadido. El user_name debe ser un nombre único en la sys.database_principals vista y cumplir todas las demás sysname limitaciones. Para más información sobre el uso de esta WITH OBJECT_ID opción, consulte Inicios de sesión de Microsoft Entra y usuarios con nombres de visualización no únicos.

Note

A partir de SQL Server 2025 (17.x), la WITH OBJECT_ID opción es compatible con inicios de sesión de Microsoft Entra y usuarios con nombres de visualización únicos.

Si el nombre de visualización del principal del servicio no es duplicado, usa el predeterminado CREATE LOGIN o CREATE USER la sentencia. La WITH OBJECT_ID extensión es un elemento de reparación de solución de problemas implementado para su uso con entidades de servicio nounique. No se recomienda usarlo con un principal de servicio único. El uso de la WITH OBJECT_ID extensión para una entidad de servicio sin agregar un sufijo se ejecuta correctamente, pero no es obvio para qué entidad de servicio se creó el inicio de sesión o el usuario. Se recomienda crear un alias usando un sufijo para identificar de forma única el principal del servicio.

Remarks

Si omites FOR LOGIN, el nuevo usuario de base de datos se asigna al inicio de sesión de SQL Server con el mismo nombre.

El esquema por defecto es el primer esquema que el servidor busca cuando resuelve los nombres de objetos para este usuario de la base de datos. A menos que se especifique lo contrario, el esquema predeterminado es el propietario de los objetos creados por este usuario de base de datos.

Si el usuario tiene un esquema por defecto, el servidor utiliza ese esquema por defecto. Si el usuario no tiene un esquema por defecto pero es miembro de un grupo que tiene un esquema por defecto, el servidor utiliza el esquema por defecto del grupo. Si el usuario no tiene un esquema predeterminado y pertenece a varios grupos, el servidor utiliza el esquema predeterminado configurado del grupo de Windows con el más bajo principal_id entre los grupos que tienen un esquema predeterminado explícitamente establecido. No puedes seleccionar explícitamente uno de los esquemas predeterminados disponibles como el esquema preferido. Si el servidor no puede determinar un esquema predeterminado para un usuario, utiliza ese dbo esquema.

Puedes configurarlo DEFAULT_SCHEMA antes de crear el esquema al que apunta.

No puedes especificar DEFAULT_SCHEMA cuándo crear un usuario asignado a un certificado o a una clave asimétrica.

El servidor ignora el valor de DEFAULT_SCHEMA si el usuario es miembro del sysadmin rol fijo del servidor. Todos los miembros del sysadmin rol fijo del servidor tienen un esquema por defecto de dbo.

La WITHOUT LOGIN cláusula crea un usuario que no está asignado a un inicio de sesión autenticado por SQL. Este usuario puede conectarse a otras bases de datos como guest. Puedes asignar permisos a este usuario sin iniciar sesión. Cuando el contexto de seguridad cambia a un usuario sin inicio de sesión, el usuario original recibe los permisos del usuario sin iniciar sesión. Para un ejemplo, véase D. Crear y usar un usuario sin inicio de sesión.

Solo los usuarios asignados a entidades de seguridad de Windows pueden contener el carácter de barra diagonal inversa ( \ ).

No puedes usar CREATE USER para crear un usuario invitado porque el usuario invitado ya existe dentro de todas las bases de datos. Puedes habilitar el usuario invitado concediéndole CONNECT permiso, como se muestra:

GRANT CONNECT TO guest; 
GO  

Puedes ver información sobre los usuarios de bases de datos en la vista de catálogo de sys.database_principals .

Use la extensión FROM EXTERNAL PROVIDER de sintaxis para crear inicios de sesión de Microsoft Entra de nivel de servidor en Azure SQL Database y Azure SQL Instancia administrada. Utilizando los inicios de sesión de Microsoft Entra, puedes asignar los principios de Microsoft Entra a nivel de base de datos a los inicios de sesión de Microsoft Entra a nivel de servidor. Para crear un usuario de Microsoft Entra a partir de un inicio de sesión de Microsoft Entra, utiliza la siguiente sintaxis:

CREATE USER [Microsoft_Entra_principal] FROM LOGIN [Microsoft Entra login];

Cuando creas al usuario en la base de datos Azure SQL, el login_name debe corresponder a un inicio de sesión de Microsoft Entra existente. De lo contrario, usar la FROM EXTERNAL PROVIDER cláusula solo crea un usuario de Microsoft Entra sin acceso a la master base de datos. Por ejemplo, el siguiente comando crea un usuario contenido:

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

Resumen de la sintaxis

Usuarios basados en inicios de sesión en master

En la siguiente lista se muestra la posible sintaxis de los usuarios basados en inicios de sesión. No se citan las opciones de esquema predeterminadas.

  • CREATE USER [Domain1\WindowsUserTest]
  • CREATE USER [Domain1\WindowsUserTest] FOR LOGIN Domain1\WindowsUserTest
  • CREATE USER [Domain1\WindowsUserTest] FROM LOGIN Domain1\WindowsUserTest
  • 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

Usuarios que se autentican en la base de datos

En la siguiente lista se muestra la posible sintaxis de los usuarios que solo se puede usar en una base de datos independiente. Los usuarios creados no se podrán relacionar con los inicios de sesión en la base de datos maestra. No se muestran las opciones predeterminadas de esquema ni de idioma.

Important

Esta sintaxis concede acceso a los usuarios a la base de datos, así como nuevo acceso a Motor de base de datos.

  • CREATE USER [Domain1\WindowsUserTest]
  • CREATE USER [Domain1\WindowsGroupManagers]
  • CREATE USER Test WITH PASSWORD = '<strong password>'

Usuarios basados en entidades de seguridad de Windows sin inicios de sesión en la base de datos del master sistema

En la lista siguiente se muestra la sintaxis posible para los usuarios que tienen acceso al Motor de base de datos a través de un grupo de Windows, pero no tienen un inicio de sesión en la base de datos del master sistema. Esta sintaxis se puede usar en todos los tipos de bases de datos. No se muestran las opciones predeterminadas de esquema ni de idioma.

Esta sintaxis es similar a los usuarios en función de los inicios de sesión de master, pero esta categoría de usuario no tiene un inicio de sesión en master. El usuario debe tener acceso a Motor de base de datos mediante un inicio de sesión de grupo de Windows.

Esta sintaxis es similar a la de los usuarios de bases de datos independientes basados en las entidades de seguridad de Windows, pero esta categoría de usuario no obtiene nuevo acceso a Motor de base de datos.

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

Usuarios que no se pueden autenticar

En la lista siguiente se muestra la sintaxis posible para los usuarios que no pueden iniciar sesión en SQL 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

Si se crea un usuario, se le concede acceso a una base de datos, pero no se le concede ningún acceso automáticamente a los objetos de una base de datos. Después de crear un usuario, las acciones habituales son agregar usuarios a los roles de base de datos que tienen permiso para acceder a los objetos de base de datos, o bien conceder permisos de objeto al usuario. Para más información acerca de cómo diseñar un sistema de permisos, consulte Getting Started with Motor de base de datos Permissions.

Consideraciones especiales para bases de datos contenidas

Al conectarse a una base de datos independiente, si el usuario no tiene un inicio de sesión en la master base de datos, el cadena de conexión debe incluir el nombre de la base de datos independiente como catálogo inicial. El parámetro de catálogo inicial siempre es necesario para un usuario de base de datos independiente con contraseña.

En una base de datos independiente, la creación de usuarios ayuda a separar la base de datos de la instancia de Motor de base de datos para que la base de datos se pueda mover fácilmente a otra instancia de SQL Server. Para obtener más información, vea Bases de datos independientes y Usuarios de base de datos independiente: hacer que la base de datos sea portátil. Para cambiar un usuario de base de datos de un usuario basado en un inicio de sesión autenticado por SQL a un usuario de base de datos contenida con contraseña, véase sp_migrate_user_to_contained (Transact-SQL).

En una base de datos independiente, los usuarios no tienen que tener inicios de sesión en la master base de datos. Los administradores del Motor de base de datos deben comprender que el acceso a una base de datos independiente se puede conceder en el nivel de base de datos, en vez de en el nivel de Motor de base de datos. Para más información, vea Security Best Practices with Contained Databases.

Al usar los usuarios de la base de datos independiente de Azure SQL Database, configure el acceso con una regla de firewall de nivel de base de datos en lugar de una regla de firewall de nivel de servidor. Para obtener más información, vea sp_set_database_firewall_rule (Azure SQL Database).

Para usuarios de bases de datos contenidas SQL Server 2022 (16.x), Azure SQL Database, Azure SQL Managed Instance y Azure Synapse Analytics, SSMS soporta autenticación multifactor. Para más información, consulte Uso de la autenticación multifactor de Microsoft Entra.

Permissions

Requiere ALTERAR CUALQUIER USER permiso en la base de datos.

Permisos para SQL Server 2022 y versiones posteriores

Requiere permiso CREATE USER en la base de datos.

Examples

A. Crea un usuario de base de datos basado en un inicio de sesión de SQL Server

El siguiente ejemplo crea primero un inicio de sesión de SQL Server nombrado test en la master base de datos, y luego crea un usuario test correspondiente en AdventureWorks2025la base de datos .

--Connect to the master database
CREATE LOGIN test   
    WITH PASSWORD = '<strong password>';  

Cambie a una base de datos de usuario. Por ejemplo, en SQL Server, utilice la instrucción USE [AdventureWorks2022]. En Azure SQL Database, la USE declaración no está disponible. En su lugar, conéctate directamente a la base de datos prevista y ejecuta el resto de la muestra de código. Este ejemplo basado en inicio de sesión no se aplica a bases de datos SQL en Microsoft Fabric, que no soporta inicios de sesión ni usuarios basados en ellos.

--Connect to a user database
CREATE USER test FOR LOGIN test;
GO   

B. Crear un usuario de base de datos con un esquema predeterminado

El siguiente ejemplo primero crea un inicio de sesión de servidor con testlogin una contraseña que proporcionas, y luego crea un usuario testuserde base de datos correspondiente , con el esquema Marketingpor defecto .

--Connect to the master database
CREATE LOGIN testlogin
    WITH PASSWORD = '<strong password>';  

Cambie a una base de datos de usuario. Por ejemplo, en SQL Server, utilice la instrucción USE [AdventureWorks2022]. En Azure SQL Database y SQL Database en Microsoft Fabric, la USE declaración no está disponible. En su lugar, conéctate directamente a la base de datos prevista y ejecuta el resto de la muestra de código.

--Connect to a user database
CREATE USER testuser FOR LOGIN testlogin
    WITH DEFAULT_SCHEMA = Marketing;  

C. Crear un usuario de base de datos a partir de un certificado

En el siguiente ejemplo, se crea el usuario de base de datos test desde el certificado Contoso_Cert. Para obtener más información, vea CREATE CERTIFICATE (Transact-SQL).

USE AdventureWorks2022;  
CREATE CERTIFICATE Contoso_Cert  
    ENCRYPTION BY PASSWORD = '<strong password>'  
    WITH SUBJECT = 'Contoso Facility Supervisors',
    EXPIRY_DATE = '11/11/2011';  
GO  
CREATE USER test FOR CERTIFICATE Contoso_Cert;  
GO   

D. Crear y usar un usuario sin inicio de sesión

En el ejemplo siguiente se crea un usuario de base de datos CustomApp que no se asigna a un inicio de sesión de SQL Server. A continuación, se concede a un usuario el permiso adventure-works\test para suplantar al usuario de CustomApp.

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

Para usar las credenciales de CustomApp, el usuario adventure-works\test ejecuta la siguiente instrucción.

EXECUTE AS USER = 'CustomApp' ;  
GO  

Para revertir a las credenciales de adventure-works\test, el usuario ejecuta la siguiente instrucción.

REVERT ;  
GO  

E. Crea un usuario de base de datos contenido con contraseña

En el siguiente ejemplo se crea un usuario de base de datos independiente con contraseña. Solo puedes ejecutar este ejemplo en una base de datos contenida.

Este ejemplo funciona en la base de datos SQL si eliminas DEFAULT_LANGUAGE.

USE AdventureWorks2022;  
GO  
CREATE USER test  
WITH PASSWORD='<password>'
    , DEFAULT_LANGUAGE=[Brazilian]  
    , DEFAULT_SCHEMA=[dbo]  
GO   

F. Crear un usuario de base de datos contenido para un inicio de sesión de dominio

El siguiente ejemplo crea un usuario de base de datos contenido para un inicio de sesión nombrado test en un dominio llamado Contoso. Solo puedes ejecutar este ejemplo en una base de datos contenida.

USE AdventureWorks2022;
GO  
CREATE USER [Contoso\test] ;  
GO   

G. Crear un usuario de base de datos contenida con un SID específico

El siguiente ejemplo crea un usuario de base de datos contenida autenticado por SQL Server llamado TestUser. Solo puedes ejecutar este ejemplo en una base de datos contenida.

USE AdventureWorks2022;  
GO  
CREATE USER TestUser WITH PASSWORD = '<strong password>'  
, SID = 0x01050000000000090300000063FF0451A9E7664BA705B10E37DDC4B7;

H. Crear un usuario para copiar datos cifrados

En el siguiente ejemplo se crea un usuario que puede copiar datos protegidos por la característica Always Encrypted de un conjunto de tablas con las columnas cifradas a otro conjunto de tablas con columnas cifradas (en la misma base de datos o en otra diferente). Para obtener más información, vea Migración de datos confidenciales protegidos mediante Always Encrypted.

Aplica a: SQL Server 2016 (13.x) y versiones posteriores, base de datos SQL.

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

I. Crea un usuario de Microsoft Entra desde un inicio de sesión de Microsoft Entra en Azure SQL Database y Azure SQL Managed Instance

Para crear un usuario de Microsoft Entra a partir del inicio de sesión de Microsoft Entra, use la sintaxis siguiente.

Inicia sesión en tu servidor lógico de Azure SQL Database o SQL Managed Instance usando un inicio de sesión de Microsoft Entra. Utiliza el inicio de sesión de administrador del servidor o un usuario que sea miembro del loginmanager rol en SQL Database, o que se le haya concedido el sysadmin rol en SQL Managed Instance.

El siguiente script de T-SQL crea un usuario test@contoso.comde Microsoft Entra a partir del inicio de sesión test@contoso.com. Este inicio de sesión se creó en el CREATE LOGIN ejemplo.

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

Important

Al crear un USER inicio de sesión desde un Microsoft Entra, especifica el user_name como el mismo login_name de LOGIN.

Se admite la creación de un usuario de Microsoft Entra como grupo a partir de un inicio de sesión de Microsoft Entra que sea un grupo.

CREATE USER [MS Entra group] FROM LOGIN [MS Entra group];

GO

También puede crear un usuario de Microsoft Entra a partir de un inicio de sesión de Microsoft Entra que sea un grupo.

CREATE USER [test@contoso.com] FROM LOGIN [MS Entra group];

GO

J. Creación de un usuario de base de datos independiente a partir de una entidad de seguridad de Microsoft Entra

La sintaxis siguiente crea un usuario test@contoso.comde Microsoft Entra , en una base de datos sin un inicio de sesión asociado en master. El Motor de base de datos valida que el usuario especificado existe en Microsoft Entra.

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

En la base de datos SQL en Microsoft Fabric, no puedes usar FROM EXTERNAL PROVIDER si un principal que emite CREATE USER es un principal de servicio en Microsoft Entra.

K. Creación de un usuario de base de datos independiente desde una entidad de seguridad de Microsoft Entra sin validación

Aplica a: base de datos SQL en Microsoft Fabric y Azure SQL Database

En los ejemplos de esta sección se crean usuarios de base de datos para entidades de seguridad de Microsoft Entra, sin validar nombres principales en Microsoft Entra.

En el siguiente ejemplo de T-SQL se crea un usuario de base de datos para el usuario de Microsoft Entra, denominado test@contoso.com. Reemplace <unique identifier sid> por el SID del nuevo usuario al identificador de objeto del usuario de Microsoft Entra.

DECLARE @principal_name SYSNAME = 'test@contoso.com';
DECLARE @objectId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- user's object ID in Microsoft Entra

-- Convert the guid to the right type
DECLARE @castObjectId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @objectId), 1);

-- Construct command: CREATE USER [@principal_name] WITH SID = @castObjectId, TYPE = E;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castObjectId + ', TYPE = E;'
EXEC (@cmd);

En el ejemplo siguiente se crea un usuario de base de datos para la entidad de servicio de Microsoft Entra, denominada HRApp. Reemplace <unique identifier sid> por el SID del nuevo usuario al identificador de cliente de la entidad de servicio en Microsoft Entra.

Note

Utiliza el ID del cliente, no el ID del objeto, al especificar un principal de servicio Microsoft Entra, User-Assigned Identidad Gestionada (UAMI) o System-Assigned Identidad Gestionada (SAMI).

DECLARE @principal_name SYSNAME = 'HRApp';
DECLARE @clientId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- principal's client ID in Microsoft Entra

-- Convert the guid to the right type
DECLARE @castClientId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @clientId), 1);

-- Construct command: CREATE USER [@principal_name] WITH SID = @castClientId, TYPE = E;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castClientId + ', TYPE = E;'
EXEC (@cmd);

En el ejemplo siguiente se crea un usuario de base de datos para el grupo Microsoft Entra, denominado HR. Reemplace <unique identifier sid> por el SID del nuevo usuario al identificador de objeto del grupo.

DECLARE @principal_name SYSNAME = 'HR';
DECLARE @objectId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- principal's object ID in Microsoft Entra

-- Convert the guid to the right type
DECLARE @castObjectId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @objectId), 1);

-- Construct command: CREATE USER [@principal_name] WITH SID = @castObjectId, TYPE = X;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castObjectId + ', TYPE = X;'
EXEC (@cmd);