CREATE LOGIN (Transact-SQL)

Crea un inicio de sesión para bases de datos de SQL Server, Azure SQL Database, Azure SQL Instancia administrada, Azure Synapse Analytics o Analytics Platform System. Elija una de las pestañas siguientes para la sintaxis, los argumentos, los comentarios, los permisos y los ejemplos de una versión determinada.

CREATE LOGIN participa en transacciones. Si se ejecuta CREATE LOGIN en una transacción y la transacción se revierte, la creación de inicio de sesión se revierte. Si se ejecuta en una transacción, el inicio de sesión creado no se puede usar hasta que se confirma la transacción.

Nota:

Microsoft Entra ID es el nuevo nombre de Azure Active Directory (Azure AD). Estamos actualizando la documentación en este momento.

Para más información sobre las convenciones de sintaxis, vea Convenciones de sintaxis de Transact-SQL.

Selección de un producto

En la fila siguiente, seleccione el nombre del producto que le interese; de esta manera, solo se mostrará la información de ese producto.

* SQL Server *  

 

SQL Server

Sintaxis

-- Syntax for SQL Server
CREATE LOGIN login_name { WITH <option_list1> | FROM <sources> }

<option_list1> ::=
    PASSWORD = { 'password' | hashed_password HASHED } [ MUST_CHANGE ]
    [ , <option_list2> [ ,... ] ]

<option_list2> ::=
    SID = sid
    | DEFAULT_DATABASE = database
    | DEFAULT_LANGUAGE = language
    | CHECK_EXPIRATION = { ON | OFF}
    | CHECK_POLICY = { ON | OFF}
    | CREDENTIAL = credential_name

<sources> ::=
    WINDOWS [ WITH <windows_options>[ ,... ] ]
    | CERTIFICATE certname
    | ASYMMETRIC KEY asym_key_name

<windows_options> ::=
    DEFAULT_DATABASE = database
    | DEFAULT_LANGUAGE = language

Argumentos

login_name

Especifica el nombre del inicio de sesión que se va a crear. Hay cuatro tipos de inicios de sesión: inicios de sesión de SQL Server, de Windows, asignados a certificados y asignados a claves asimétricas. Al crear inicios de sesión asignados desde una cuenta de dominio de Windows, debe usar el nombre de inicio de sesión de usuario anterior a Windows 2000 con el formato [<domainName>\<login_name>]. No puede utilizar un UPN con el formato nombreDeInicioDeSesión@nombreDeDominio. Vea el ejemplo D más adelante en este artículo. Los inicios de sesión con autenticación son del tipo sysname, deben seguir las reglas de los Identificadores y no pueden contener " \ ". Los inicios de sesión de Windows pueden contener un carácter ' \ ”. Los inicios de sesión basados en usuarios de Active Directory se limitan a nombres de menos de 21 caracteres.

PASSWORD = "contraseña"

Solo se aplica a inicios de sesión de SQL Server. Especifica la contraseña del inicio de sesión que se está creando. Utilice una contraseña segura. Para obtener más información, vea Contraseñas seguras y Directiva de contraseñas. A partir de SQL Server 2012 (11.x), la información de la contraseña almacenada se calcula con las funciones SHA-512 de la contraseña salada.

En las contraseñas se distingue entre mayúsculas y minúsculas. Las contraseñas siempre deben tener al menos ocho caracteres y no pueden superar los 128 caracteres. Las contraseñas pueden incluir a-z, A-Z, 0-9 y la mayoría de los caracteres no alfanuméricos. Las contraseñas no pueden contener comillas simples ni el login_name.

PASSWORD =hashed_password

Solo se aplica a la palabra clave HASHED. Especifica el valor con hash de la contraseña para el inicio de sesión que se está creando.

HASHED

Solo se aplica a inicios de sesión de SQL Server. Especifica que la contraseña especificada después del argumento PASSWORD ya tiene aplicado el algoritmo hash. Si esta opción no está seleccionada, la cadena especificada como contraseña se aplica un hash antes de almacenarla en la base de datos. Esta opción solo se debería utilizar para migrar las bases de datos de un servidor a otro. No use la opción HASHED para crear nuevos inicios de sesión. La opción HASHED no se puede usar con hashes creados por SQL 7 o versiones anteriores.

MUST_CHANGE

Solo se aplica a inicios de sesión de SQL Server. Si se incluye esta opción, SQL Server solicita al usuario una contraseña nueva la primera vez que se use el inicio de sesión nuevo.

CREDENTIAL =credential_name

Nombre de una credencial que se debe asignar al nuevo inicio de sesión de SQL Server. La credencial debe existir en la base de datos. Actualmente esta opción solo vincula la credencial a un inicio de sesión. No se puede asignar una credencial al inicio de sesión de System Administración istrator (sa).

SID = sid

Se usa para volver a crear un inicio de sesión. Solo se aplica a inicios de sesión con autenticación de SQL Server, no a los de Windows. Especifica el SID del nuevo inicio de sesión con autenticación de SQL Server. Si no se usa esta opción, SQL Server asigna un SID de manera automática. La estructura de SID depende de la versión de SQL Server. SID del inicio de sesión de SQL Server: un valor literal (binary(16) ) de 16 bytes basado en un GUID. Por ejemplo, SID = 0x14585E90117152449347750164BA00A7.

DEFAULT_DATABASE =database

Especifica la base de datos predeterminada que debe asignarse al inicio de sesión. Si no se incluye esta opción, la base de datos predeterminada se establece en maestra.

DEFAULT_LANGUAGE =language

Especifica el idioma predeterminado que debe asignarse al inicio de sesión. Si no se incluye esta opción, el idioma predeterminado se establece en el idioma predeterminado actual del servidor. Si el idioma predeterminado del servidor se cambia más tarde, el del inicio de sesión se mantiene igual.

CHECK_EXPIRATION = { ON | OFF }

Solo se aplica a inicios de sesión de SQL Server. Especifica si debe aplicarse la directiva de caducidad de contraseñas en este inicio de sesión. El valor predeterminado es OFF.

CHECK_POLICY = { ON | OFF }

Solo se aplica a inicios de sesión de SQL Server. Especifica que se deben aplicar las directivas de contraseñas de Windows en el equipo en el que se ejecuta SQL Server para este inicio de sesión. El valor predeterminado es ON.

Si la directiva de Windows requiere contraseñas seguras, las contraseñas deben tener al menos tres de las cuatro siguientes características:

  • Un carácter en mayúscula (A-Z).
  • Un carácter en minúsculas (a-z).
  • Un dígito (0-9).
  • Uno de los caracteres nonalphanumeric, como un espacio, _, @, *, ^, %, !, $, #, o &.

WINDOWS

Especifica que el inicio de sesión se asigna a un inicio de sesión de Windows.

CERTIFICATE certname

Especifica el nombre de un certificado al que asociar este inicio de sesión. Este certificado debe existir en la base de datos maestra.

ASYMMETRIC KEY asym_key_name

Especifica el nombre de una clave asimétrica a la que asociar este inicio de sesión. Esta clave debe existir en la base de datos maestra.

Observaciones

  • En las contraseñas se distingue entre mayúsculas y minúsculas.
  • El uso previo de contraseñas solo se admite cuando se crean inicios de sesión de SQL Server.
  • Si se especifica MUST_CHANGE, CHECK_EXPIRATION y CHECK_POLICY, deben establecerse en ON. Si no es así, la instrucción producirá un error.
  • No se admite una combinación de CHECK_POLICY = OFF y CHECK_EXPIRATION = ON.
  • Cuando CHECK_POLICY se establece en OFF, lockout_time se restablece y CHECK_EXPIRATION se establece en OFF.

Importante

CHECK_EXPIRATION y CHECK_POLICY solo se aplican en Windows Server 2003 y versiones posteriores. Para obtener más información, vea Password Policy.

Permisos

  • Solo los usuarios con el permiso ALTER ANY LOGIN en el servidor o la pertenencia al rol fijo de servidor securityadmin pueden crear inicios de sesión. Para más información, vea Roles de nivel de servidor y ALTER SERVER ROLE.
  • Si se utiliza la opción CREDENTIAL , también será necesario el permiso ALTER ANY CREDENTIAL en el servidor.

Permisos para SQL Server 2022 y versiones posteriores

Requiere el permiso CREATE LOGIN en el servidor o la pertenencia al rol fijo de servidor ##MS_LoginManager### .

Después de crear un inicio de sesión

Después de crear un inicio de sesión, el inicio de sesión se puede conectar a SQL Server, pero solo tiene los permisos concedidos al rol public. Considere la posibilidad de realizar algunas de las actividades siguientes.

  • Para conectarse a una base de datos, cree una para el inicio de sesión. Para más información, consulte CREATE USER.
  • Cree un rol de servidor definido por el usuario mediante CREATE SERVER ROLE. Use ALTER SERVER ROLE... ADD MEMBER para agregar el nuevo inicio de sesión al rol de servidor definido por el usuario. Para obtener más información, vea CREATE SERVER ROLE y ALTER SERVER ROLE.
  • Utilice sp_addsrvrolemember para agregar el inicio de sesión a un rol fijo de servidor. Para obtener más información, vea Roles de nivel de servidor y sp_addsrvrolemember.
  • Use la instrucción de GRANT, para conceder permisos de servidor al nuevo inicio de sesión o un rol que contiene el inicio de sesión. Para obtener más información, vea GRANT.

Ejemplos

A. Crear un inicio de sesión con una contraseña

El ejemplo siguiente crea un inicio de sesión para un usuario determinado y le asigna una contraseña.

CREATE LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>';
GO

B. Crear un inicio de sesión con una contraseña que se debe cambiar

El ejemplo siguiente crea un inicio de sesión para un usuario determinado y le asigna una contraseña. La opción MUST_CHANGE exige a los usuarios que cambien la contraseña la primera vez que se conecten al servidor.

Se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores.

CREATE LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>'
    MUST_CHANGE, CHECK_EXPIRATION = ON;
GO

Nota

La opción MUST_CHANGE no se puede utilizar cuando se ha desactivado CHECK_EXPIRATION.

C. Crear un inicio de sesión asignado a una credencial

El ejemplo siguiente crea el inicio de sesión para un usuario determinado, utilizando el de usuario. Este inicio de sesión se asigna a la credencial.

Se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores.

CREATE LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>',
    CREDENTIAL = <credentialName>;
GO

D. Crear un inicio de sesión desde un certificado

En el ejemplo siguiente se crea el inicio de sesión para un usuario determinado a partir de un certificado de master.

Se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores.

USE MASTER;
CREATE CERTIFICATE <certificateName>
    WITH SUBJECT = '<login_name> certificate in master database',
    EXPIRY_DATE = '12/05/2025';
GO
CREATE LOGIN <login_name> FROM CERTIFICATE <certificateName>;
GO

E. Crear un inicio de sesión desde una cuenta de dominio de Windows

El ejemplo siguiente crea un inicio de sesión a partir de una cuenta de dominio de Windows.

Se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores.

CREATE LOGIN [<domainName>\<login_name>] FROM WINDOWS;
GO

F. Crear un inicio de sesión de un SID

En el ejemplo siguiente primero se crea un inicio de sesión de autenticación de SQL Server y se determina el SID del inicio de sesión.

CREATE LOGIN TestLogin WITH PASSWORD = 'SuperSecret52&&';
SELECT name, sid FROM sys.sql_logins WHERE name = 'TestLogin';
GO

La consulta devuelve 0x241C11948AEEB749B0D22646DB1A19F2 como el SID. La consulta devolverá un valor diferente. Las siguientes instrucciones eliminan el inicio de sesión y luego vuelven a crear el inicio de sesión. Use el SID de la consulta anterior.

DROP LOGIN TestLogin;
GO

CREATE LOGIN TestLogin
WITH PASSWORD = 'SuperSecret52&&', SID = 0x241C11948AEEB749B0D22646DB1A19F2;

SELECT * FROM sys.sql_logins WHERE name = 'TestLogin';
GO

G. Creación de un inicio de sesión con varios argumentos

En el ejemplo siguiente se muestra cómo encadenar varios argumentos entre sí mediante el uso de comas entre cada argumento.

CREATE LOGIN [MyUser]
WITH PASSWORD = 'MyPassword',
DEFAULT_DATABASE = MyDatabase,
CHECK_POLICY = OFF,
CHECK_EXPIRATION = OFF ;

H. Creación de un inicio de sesión de SQL con contraseña con hash

En el ejemplo siguiente se muestra cómo crear inicios de sesión de SQL con la misma contraseña que los inicios de sesión existentes, como se hace en un escenario de migración. El primer paso es recuperar el hash de contraseña de los inicios de sesión existentes en el servidor de base de datos de origen. A continuación, se usará el mismo hash para crear el inicio de sesión en un nuevo servidor de bases de datos. Al hacerlo, el nuevo inicio de sesión tendrá la misma contraseña que en el servidor anterior.

-- run this to retrieve the password hash for an individual Login:
SELECT LOGINPROPERTY('Andreas','PASSWORDHASH') AS password_hash;
-- as an alternative, the catalog view sys.sql_logins can be used to retrieve the password hashes for multiple accounts at once. (This could be used to create a dynamic sql statemnt from the result set)
SELECT name, password_hash
FROM sys.sql_logins
  WHERE
    principal_id > 1    -- excluding sa
    AND
    name NOT LIKE '##MS_%##' -- excluding special MS system accounts
-- create the new SQL Login on the new database server using the hash of the source server
CREATE LOGIN Andreas
  WITH PASSWORD = 0x02000A1A89CD6C6E4C8B30A282354C8EA0860719D5D3AD05E0CAE1952A1C6107A4ED26BEBA2A13B12FAB5093B3CC2A1055910CC0F4B9686A358604E99BB9933C75B4EA48FDEA HASHED;

* Azure SQL Database *

 

SQL Database

Sintaxis

-- Syntax for Azure SQL Database
CREATE LOGIN login_name
  { 
    FROM EXTERNAL PROVIDER [WITH OBJECT_ID = 'objectid'] 
    | WITH <option_list> [,..] 
  }

<option_list> ::=
    PASSWORD = { 'password' }
    [ , SID = sid ]

Argumentos

login_name

Nota:

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.

Cuando se usa con la cláusula FROM EXTERNAL PROVIDER, el inicio de sesión especifica la entidad de seguridad de Microsoft Entra, que es un usuario, un grupo o una aplicación de Microsoft Entra. En caso contrario, el inicio de sesión representa el nombre del inicio de sesión SQL que se ha creado.

Los usuarios y entidades de servicio de Microsoft Entra que son miembros de más de 2048 grupos de seguridad de Microsoft Entra no se admiten para iniciar sesión en la base de datos en SQL Database, SQL Instancia administrada o Azure Synapse.

FROM EXTERNAL PROVIDER

Especifica que el inicio de sesión es para la autenticación de Microsoft Entra.

WITH OBJECT_ID = 'objectid'

Especifica el identificador de objeto entra de Microsoft. OBJECT_ID Si se especifica , no es necesario que el login_name coincida con el nombre para mostrar de Microsoft Entra. El login_name debe ser un nombre único en la sys.server_principals vista y cumplir todas las demás sysname limitaciones. Para obtener más información sobre el uso de la WITH OBJECT_ID opción, consulte Inicios de sesión y usuarios de Microsoft Entra con nombres para mostrar no únicos.

Nota:

Si el nombre para mostrar de la entidad de servicio no es un duplicado, se debe usar la instrucción CREATE LOGIN o CREATE USER. La extensión WITH OBJECT_ID está en versión preliminar pública y es un elemento de reparación de solución de problemas implementado para su uso con entidades de servicio que no son únicas. No se recomienda usarlo con una entidad de servicio única. El uso de la extensión WITH OBJECT_ID para una entidad de servicio sin agregar un sufijo se ejecutará correctamente, pero no será evidente para qué entidad de servicio se creó el inicio de sesión o el usuario. Se recomienda crear un alias mediante un sufijo para identificar de forma única la entidad de servicio. La extensión WITH OBJECT_ID no se admite para SQL Server.

PASSWORD *="contraseña"

Especifica la contraseña del inicio de sesión SQL que se está creando. Utilice una contraseña segura. Para obtener más información, vea Contraseñas seguras y Directiva de contraseñas. A partir de SQL Server 2012 (11.x), la información de la contraseña almacenada se calcula con las funciones SHA-512 de la contraseña salada.

En las contraseñas se distingue entre mayúsculas y minúsculas. Las contraseñas siempre deben tener al menos ocho caracteres y no pueden superar los 128 caracteres. Las contraseñas pueden incluir a-z, A-Z, 0-9 y la mayoría de los caracteres no alfanuméricos. Las contraseñas no pueden contener comillas simples ni el login_name.

SID = sid

Se usa para volver a crear un inicio de sesión. Solo se aplica a inicios de sesión con autenticación de SQL Server, no a los de Windows. Especifica el SID del nuevo inicio de sesión con autenticación de SQL Server. Si no se usa esta opción, SQL Server asigna automáticamente un SID. La estructura de SID depende de la versión de SQL Server. Para SQL Database, esto es un literal (binary(32) ) de 32 bytes que consta de 0x01060000000000640000000000000000 más 16 bytes que representan un GUID. Por ejemplo, SID = 0x0106000000000064000000000000000014585E90117152449347750164BA00A7.

Observaciones

  • En las contraseñas se distingue entre mayúsculas y minúsculas.
  • Al crear un inicio de sesión automáticamente se habilita el nuevo inicio de sesión y se concede al mismo el permiso de CONNECT SQL de nivel servidor.

Importante

Vea Administración de inicios de sesión en Azure SQL Database para obtener información sobre cómo trabajar con inicios de sesión y usuarios en Azure SQL Database.

Inicio de sesión

Inicios de sesión en SQL Database

La instrucción CREATE LOGIN debe ser la única de un lote.

En algunos métodos de conexión con SQL Database, como sqlcmd, debe anexar el nombre del servidor de SQL Database al nombre de inicio de sesión en la cadena de conexión mediante la notación <inicio_de_sesión>@<servidor>. Por ejemplo, si el inicio de sesión es login1 y el nombre completo del servidor de SQL Database es servername.database.windows.net, el parámetro nombre_de_usuario de la cadena de conexión debe ser login1@servername. Dado que la longitud total del parámetro username es de 128 caracteres, login_name se limita a 127 caracteres menos la longitud del nombre del servidor. En el ejemplo, login_name solo puede tener 117 caracteres porque servername es de 10 caracteres.

En SQL Database, debe estar conectado a la base de datos maestra con los permisos correctos para crear un inicio de sesión. Para obtener más información, vea Creación de inicios de sesión y usuarios adicionales con permisos administrativos.

Las reglas de SQL Server permiten crear un inicio de sesión con autenticación de SQL Server con el formato <nombreDeInicioDeSesión>@<nombreDeServidor>. Si el servidor de SQL Database es myazureserver y el inicio de sesión es myemail@live.com, debe proporcionar un inicio de sesión com myemail@live.com@myazureserver.

En SQL Database, los datos de inicio de sesión necesarios para autenticar una conexión y las reglas de firewall de nivel de servidor se almacenan temporalmente en caché en cada base de datos. Esta caché se actualiza regularmente. Para forzar una actualización de la caché de autenticación y garantizar que una base de datos tenga la versión más reciente de la tabla de inicios de sesión, ejecute DBCC FLUSHAUTHCACHE.

Permisos

Solo pueden crear inicios de sesión el inicio de sesión de entidad de seguridad a nivel de servidor (creado por el proceso de aprovisionamiento) o los miembros del rol de base de datos loginmanager en la base de datos maestra. Para obtener más información, vea Creación de inicios de sesión y usuarios adicionales con permisos administrativos.

Ejemplos

A. Crear un inicio de sesión con una contraseña

El ejemplo siguiente crea un inicio de sesión para un usuario determinado y le asigna una contraseña.

CREATE LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>';
GO

B. Crear un inicio de sesión de un SID

En el ejemplo siguiente primero se crea un inicio de sesión de autenticación de SQL Server y se determina el SID del inicio de sesión.

CREATE LOGIN TestLogin WITH PASSWORD = 'SuperSecret52&&';

SELECT name, sid FROM sys.sql_logins WHERE name = 'TestLogin';
GO

La consulta devuelve 0x241C11948AEEB749B0D22646DB1A19F2 como el SID. La consulta devolverá un valor diferente. Las siguientes instrucciones eliminan el inicio de sesión y luego vuelven a crear el inicio de sesión. Use el SID de la consulta anterior.

DROP LOGIN TestLogin;
GO

CREATE LOGIN TestLogin
WITH PASSWORD = 'SuperSecret52&&', SID = 0x241C11948AEEB749B0D22646DB1A19F2;

SELECT * FROM sys.sql_logins WHERE name = 'TestLogin';
GO

C. Creación de un inicio de sesión con una cuenta de Microsoft Entra

En este ejemplo se crea un inicio de sesión en el servidor lógico de Azure SQL mediante las credenciales de un usuario bob@contoso.com que existe en el dominio de Microsoft Entra denominado contoso.

Use master
CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER
GO

D. Creación de un inicio de sesión con un alias mediante el identificador de objeto

Puede crear un alias para la login_name especificando el identificador de objeto de la entidad de servicio o grupo de Microsoft Entra.

CREATE LOGIN [myapp4466e] FROM EXTERNAL PROVIDER 
  WITH OBJECT_ID='4466e2f8-0fea-4c61-a470-xxxxxxxxxxxx' 

Para obtener más información sobre cómo obtener el identificador de objeto de una entidad de servicio, consulte Objeto de entidad de servicio.

* Azure SQL
de SQL Database *

 

Azure SQL Managed Instance

Sintaxis

-- Syntax for Azure SQL Managed Instance
CREATE LOGIN login_name [FROM EXTERNAL PROVIDER [WITH OBJECT_ID = 'objectid'] ] { WITH <option_list> [,..]}

<option_list> ::=
    PASSWORD = {'password'}
    | SID = sid
    | DEFAULT_DATABASE = database
    | DEFAULT_LANGUAGE = language

Argumentos

login_name

Cuando se usa con la cláusula FROM EXTERNAL PROVIDER, el inicio de sesión especifica la entidad de seguridad de Microsoft Entra, que es un usuario, un grupo o una aplicación de Microsoft Entra. En caso contrario, el inicio de sesión representa el nombre del inicio de sesión SQL que se ha creado.

Los usuarios y entidades de servicio de Microsoft Entra que son miembros de más de 2048 grupos de seguridad de Microsoft Entra no se admiten para iniciar sesión en bases de datos en Azure SQL Database, Azure SQL Instancia administrada o Azure Synapse.

FROM EXTERNAL PROVIDER

Especifica que el inicio de sesión es para la autenticación de Microsoft Entra.

WITH OBJECT_ID = 'objectid'

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

Nota:

Si el nombre para mostrar de la entidad de servicio no es un duplicado, se debe usar la instrucción CREATE LOGIN o CREATE USER. La extensión WITH OBJECT_ID está en versión preliminar pública y es un elemento de reparación de solución de problemas implementado para su uso con entidades de servicio que no son únicas. No es necesario usarla con una entidad de servicio única. El uso de la extensión WITH OBJECT_ID para una entidad de servicio sin agregar un sufijo se ejecutará correctamente, pero no será evidente para qué entidad de servicio se creó el inicio de sesión o el usuario. Se recomienda crear un alias mediante un sufijo para identificar de forma única la entidad de servicio. La extensión WITH OBJECT_ID no se admite para SQL Server.

PASSWORD = "contraseña"

Especifica la contraseña del inicio de sesión SQL que se está creando. Utilice una contraseña segura. Para obtener más información, vea Contraseñas seguras y Directiva de contraseñas. A partir de SQL Server 2012 (11.x), la información de la contraseña almacenada se calcula con las funciones SHA-512 de la contraseña salada.

En las contraseñas se distingue entre mayúsculas y minúsculas. Las contraseñas siempre deben tener al menos 10 caracteres y no pueden superar los 128 caracteres. Las contraseñas pueden incluir a-z, A-Z, 0-9 y la mayoría de los caracteres no alfanuméricos. Las contraseñas no pueden contener comillas simples ni el login_name.

SID =SID

Se usa para volver a crear un inicio de sesión. Solo se aplica a los inicios de sesión con autenticación de SQL Server. Especifica el SID del nuevo inicio de sesión con autenticación de SQL Server. Si no se usa esta opción, SQL Server asigna automáticamente un SID. La estructura de SID depende de la versión de SQL Server. Para SQL Database, esto es un literal (binary(32) ) de 32 bytes que consta de 0x01060000000000640000000000000000 más 16 bytes que representan un GUID. Por ejemplo, SID = 0x0106000000000064000000000000000014585E90117152449347750164BA00A7.

Comentarios

  • La FROM EXTERNAL PROVIDER sintaxis crea entidades de seguridad de nivel de servidor asignadas a cuentas de Microsoft Entra.

  • Cuando FROM EXTERNAL PROVIDER se especifica:

    • El login_name debe representar una cuenta de Microsoft Entra existente (usuario, grupo o aplicación) que sea accesible en el identificador de Microsoft Entra mediante el Instancia administrada actual de Azure SQL. Para las entidades de seguridad de Microsoft Entra, la sintaxis CREATE LOGIN requiere:

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

      • DisplayName del objeto Microsoft Entra para aplicaciones y grupos de Microsoft Entra.

    • No se puede usar la opción PASSWORD .

  • De forma predeterminada, cuando se omite la FROM EXTERNAL PROVIDER cláusula , se crea un inicio de sesión de SQL normal.

  • Los inicios de sesión de Microsoft Entra están visibles en sys.server_principals, con el valor de columna de tipo establecido en E y type_desc establecido en EXTERNAL_LOGIN para los inicios de sesión asignados a usuarios de Microsoft Entra, o escriba el valor de columna establecido en X y type_desc valor establecido en EXTERNAL_GROUP para los inicios de sesión asignados a grupos de Microsoft Entra.

  • Para obtener un script para transferir inicios de sesión, vea Cómo transferir los inicios de sesión y las contraseñas entre instancias de SQL Server 2005 y SQL Server 2008.

  • Al crear un inicio de sesión automáticamente se habilita el nuevo inicio de sesión y se concede al mismo el permiso de CONNECT SQL de nivel servidor.

Importante

Vea Administración de inicios de sesión en Azure SQL Database para obtener información sobre cómo trabajar con inicios de sesión y usuarios en Azure SQL Database.

Inicios de sesión y permisos

Solo pueden crear inicios de sesión el inicio de sesión de entidad de seguridad de nivel de servidor (creado por el proceso de aprovisionamiento) o los miembros de los roles de base de datos securityadmin o sysadmin en la base de datos principal. Para más información, vea Roles de nivel de servidor y ALTER SERVER ROLE.

De forma predeterminada, el permiso estándar concedido a un inicio de sesión de Microsoft Entra recién creado en el patrón es: CONNECT SQL y VIEW ANY DATABASE.

Inicios de sesión de SQL Instancia administrada

  • Debe tener el permiso ALTER ANY LOGIN en el servidor o la pertenencia a uno de los roles fijos de servidor securityadmin o sysadmin. Solo una cuenta de Microsoft Entra con el permiso ALTER ANY LOGIN en el servidor o la pertenencia a uno de esos roles puede ejecutar el comando create.

  • Si el inicio de sesión es una entidad de seguridad de SQL, solo los inicios de sesión que forman parte del sysadmin rol pueden usar el comando create para crear inicios de sesión para una cuenta de Microsoft Entra.

  • Debe ser miembro del mismo inquilino de Microsoft Entra que el Instancia administrada de Azure SQL.

Después de crear un inicio de sesión

Después de crear un inicio de sesión, se puede conectar a una instancia administrada, pero solo tiene los permisos concedidos al rol public. Considere la posibilidad de realizar algunas de las actividades siguientes.

  • Para crear un usuario a partir de un inicio de sesión de Microsoft Entra, consulte CREATE USER.

  • Para conceder permisos a un usuario en una base de datos, use la instrucción ALTER SERVER ROLE... ADD MEMBER para agregar al usuario a uno de los roles de base de datos integrados o a un rol personalizado, o bien conceda los permisos al usuario directamente mediante la instrucción GRANT. Para más información, consulte Roles no administradores, Roles administrativos de nivel de servidor adicional y las instrucciones ALTER SERVER ROLE y GRANT.

  • Para conceder permisos de todo el servidor, cree un usuario de base de datos en la base de datos maestra y use la instrucción ALTER SERVER ROLE... ADD MEMBER para agregar al usuario a uno de los roles de servidor de administración. Para obtener más información, vea Roles de nivel de servidor, ALTER SERVER ROLE y Roles de servidor.

    • Use el siguiente comando para agregar el sysadmin rol a un inicio de sesión de Microsoft Entra: ALTER SERVER ROLE sysadmin ADD MEMBER [MS_Entra_login]
  • Use la instrucción de GRANT, para conceder permisos de servidor al nuevo inicio de sesión o un rol que contiene el inicio de sesión. Para obtener más información, vea GRANT.

Limitaciones

  • No se admite establecer un inicio de sesión de Microsoft Entra asignado a un grupo de Microsoft Entra, ya que no se admite el propietario de la base de datos.

  • Se admite la suplantación de inicios de sesión de Microsoft Entra mediante otras entidades de seguridad de Microsoft Entra, como la cláusula EXECUTE AS .

  • Solo las entidades de seguridad de servidor (inicios de sesión) que forman parte del sysadmin rol pueden ejecutar las siguientes operaciones destinadas a entidades de seguridad de Microsoft Entra:

    • EXECUTE AS USER
    • EXECUTE AS LOGIN
  • Los usuarios externos (invitados) importados desde otro directorio de Microsoft Entra no se pueden configurar directamente como administrador de Microsoft Entra para SQL Instancia administrada mediante Azure Portal. En su lugar, una un usuario externo a un grupo asignable de roles y configure el grupo como administrador de instancias. Puede usar PowerShell o la CLI de Azure para establecer usuarios invitados individuales como administrador de la instancia.

  • Los inicios de sesión no se replican en la instancia secundaria de un grupo de conmutación por error. El inicio de sesión se guarda en la base de datos maestra, que es una base de datos del sistema y, como tal, no se replica geográficamente. Para resolver esto, los inicios de sesión se deben crear con el mismo SID en la instancia secundaria.

-- Code to create login on the secondary instance
CREATE LOGIN foo WITH PASSWORD = '<enterStrongPasswordHere>', SID = <login_sid>;

Ejemplos

A. Crear un inicio de sesión con una contraseña

El ejemplo siguiente crea un inicio de sesión para un usuario determinado y le asigna una contraseña.

CREATE LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>';
GO

B. Crear un inicio de sesión de un SID

En el ejemplo siguiente primero se crea un inicio de sesión de autenticación de SQL Server y se determina el SID del inicio de sesión.

CREATE LOGIN TestLogin WITH PASSWORD = 'SuperSecret52&&';

SELECT name, sid FROM sys.sql_logins WHERE name = 'TestLogin';
GO

La consulta devuelve 0x241C11948AEEB749B0D22646DB1A19F2 como el SID. La consulta devolverá un valor diferente. Las siguientes instrucciones eliminan el inicio de sesión y luego vuelven a crear el inicio de sesión. Use el SID de la consulta anterior.

DROP LOGIN TestLogin;
GO

CREATE LOGIN TestLogin
WITH PASSWORD = 'SuperSecret52&&', SID = 0x241C11948AEEB749B0D22646DB1A19F2;

SELECT * FROM sys.sql_logins WHERE name = 'TestLogin';
GO

C. Creación de un inicio de sesión para un usuario de Microsoft Entra

En el ejemplo siguiente se crea un inicio de sesión para la cuenta joe@contoso.onmicrosoft.com de Microsoft Entra que existe en el inquilino de Microsoft Entra denominado contoso.

CREATE LOGIN [joe@contoso.onmicrosoft.com] FROM EXTERNAL PROVIDER

GO

D. Creación de un inicio de sesión para una cuenta federada de Microsoft Entra

En el ejemplo siguiente se crea un inicio de sesión para una cuenta bob@contoso.com federada de Microsoft Entra que existe en un inquilino de Microsoft Entra denominado contoso. El usuario bob también puede ser un usuario invitado.

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

E. Creación de un inicio de sesión para un grupo de Microsoft Entra

En el ejemplo siguiente se crea un inicio de sesión para el grupo mygroup de Microsoft Entra que existe en el inquilino de Microsoft Entra de contoso.

CREATE LOGIN [mygroup] FROM EXTERNAL PROVIDER
GO

F. Creación de un inicio de sesión para una aplicación de Microsoft Entra

En el ejemplo siguiente se crea un inicio de sesión para la aplicación Microsoft Entra myapp que existe en el inquilino de Microsoft Entra de contoso.

CREATE LOGIN [myapp] FROM EXTERNAL PROVIDER

G. Comprobación de los inicios de sesión recién agregados

Para comprobar el inicio de sesión recién agregado, ejecute el siguiente comando de T-SQL:

SELECT *
FROM sys.server_principals;
GO

* Azure Synapse
Analytics *

 

Azure Synapse Analytics

Sintaxis

-- Syntax for Azure Synapse Analytics
CREATE LOGIN login_name
  { 
    FROM EXTERNAL PROVIDER
    | WITH <option_list> [,..] 
  }

<option_list> ::=
    PASSWORD = { 'password' }
    [ , SID = sid ]

Argumentos

Nota:

Las entidades de seguridad (inicios de sesión) del servidor de Microsoft Entra se encuentran actualmente en versión preliminar pública. Cuando se usa con la cláusula FROM EXTERNAL PROVIDER, el inicio de sesión especifica la entidad de seguridad de Microsoft Entra, que es un usuario, un grupo o una aplicación de Microsoft Entra. En caso contrario, el inicio de sesión representa el nombre del inicio de sesión SQL que se ha creado.

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

FROM EXTERNAL PROVIDER

Especifica que el inicio de sesión es para la autenticación de Microsoft Entra.

login_name

Especifica el nombre del inicio de sesión que se va a crear. SQL Analytics en Azure Synapse solo admite inicios de sesión de SQL. Para crear cuentas para los usuarios de Microsoft Entra, use la instrucción CREATE USER .

PASSWORD *="contraseña"

Especifica la contraseña del inicio de sesión SQL que se está creando. Utilice una contraseña segura. Para obtener más información, vea Contraseñas seguras y Directiva de contraseñas. A partir de SQL Server 2012 (11.x), la información de la contraseña almacenada se calcula con las funciones SHA-512 de la contraseña salada.

En las contraseñas se distingue entre mayúsculas y minúsculas. Las contraseñas siempre deben tener al menos ocho caracteres y no pueden superar los 128 caracteres. Las contraseñas pueden incluir a-z, A-Z, 0-9 y la mayoría de los caracteres no alfanuméricos. Las contraseñas no pueden contener comillas simples ni el login_name.

SID = sid

Se usa para volver a crear un inicio de sesión. Solo se aplica a inicios de sesión con autenticación de SQL Server, no a los de Windows. Especifica el SID del nuevo inicio de sesión con autenticación de SQL Server. Si no se usa esta opción, SQL Server asigna automáticamente un SID. La estructura de SID depende de la versión de SQL Server. En SQL Analytics, es un literal (binary(32) ) de 32 bytes que consta de 0x01060000000000640000000000000000 más 16 bytes que representan un GUID. Por ejemplo, SID = 0x0106000000000064000000000000000014585E90117152449347750164BA00A7.

Observaciones

Inicios de sesión

La instrucción CREATE LOGIN debe ser la única de un lote.

Al conectarse a Azure Synapse mediante herramientas como sqlcmd, debe anexar el nombre del servidor de SQL Analytics al nombre de inicio de sesión de la cadena de conexión mediante la notación <inicio_de_sesión>@<servidor>. Por ejemplo, si el inicio de sesión es login1 y el nombre completo del servidor de SQL Analytics es servername.database.windows.net, el parámetro nombre_de_usuario de la cadena de conexión debe ser login1@servername. Dado que la longitud total del parámetro username es de 128 caracteres, login_name se limita a 127 caracteres menos la longitud del nombre del servidor. En el ejemplo, login_name solo puede tener 117 caracteres porque servername es de 10 caracteres.

Para crear un inicio de sesión, debe estar conectado a la base de datos maestra.

Las reglas de SQL Server permiten crear un inicio de sesión con autenticación de SQL Server con el formato <nombreDeInicioDeSesión>@<nombreDeServidor>. Si el servidor de SQL Database es myazureserver y el inicio de sesión es myemail@live.com, debe proporcionar un inicio de sesión com myemail@live.com@myazureserver.

Los datos de inicio de sesión necesarios para autenticar una conexión y las reglas de firewall de nivel de servidor se almacenan temporalmente en caché en cada base de datos. Esta caché se actualiza regularmente. Para forzar una actualización de la caché de autenticación y garantizar que una base de datos tenga la versión más reciente de la tabla de inicios de sesión, ejecute DBCC FLUSHAUTHCACHE.

Para más información sobre los inicios de sesión, consulte cómo administrar bases de datos e inicios de sesión.

Permisos

Solo pueden crear inicios de sesión el inicio de sesión de entidad de seguridad a nivel de servidor (creado por el proceso de aprovisionamiento) o los miembros del rol de base de datos loginmanager en la base de datos maestra. Para más información, vea Roles de nivel de servidor y ALTER SERVER ROLE.

Después de crear un inicio de sesión

Después de crear un inicio de sesión, este se puede conectar a Azure Synapse, pero solo tiene los permisos concedidos al rol public. Considere la posibilidad de realizar algunas de las actividades siguientes.

  • Para conectarse a una base de datos, cree una para el inicio de sesión. Para más información, consulte CREATE USER.

  • Para conceder permisos a un usuario en una base de datos, use la instrucción ALTER SERVER ROLE... ADD MEMBER para agregar al usuario a uno de los roles de base de datos integrados o a un rol personalizado, o bien conceda los permisos al usuario directamente mediante la instrucción GRANT. Para más información, consulte Roles no administradores, Roles administrativos de nivel de servidor adicional y las instrucciones ALTER SERVER ROLE y GRANT.

  • Para conceder permisos de todo el servidor, cree un usuario de base de datos en la base de datos maestra y use la instrucción ALTER SERVER ROLE... ADD MEMBER para agregar al usuario a uno de los roles de servidor de administración. Para obtener más información, vea Roles de nivel de servidor, ALTER SERVER ROLE y Roles de servidor.

  • Use la instrucción de GRANT, para conceder permisos de servidor al nuevo inicio de sesión o un rol que contiene el inicio de sesión. Para obtener más información, vea GRANT.

Ejemplos

A. Crear un inicio de sesión con una contraseña

El ejemplo siguiente crea un inicio de sesión para un usuario determinado y le asigna una contraseña.

CREATE LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>';
GO

B. Crear un inicio de sesión de un SID

En el ejemplo siguiente primero se crea un inicio de sesión de autenticación de SQL Server y se determina el SID del inicio de sesión.

CREATE LOGIN TestLogin WITH PASSWORD = 'SuperSecret52&&';

SELECT name, sid FROM sys.sql_logins WHERE name = 'TestLogin';
GO

La consulta devuelve 0x241C11948AEEB749B0D22646DB1A19F2 como el SID. La consulta devolverá un valor diferente. Las siguientes instrucciones eliminan el inicio de sesión y luego vuelven a crear el inicio de sesión. Use el SID de la consulta anterior.

DROP LOGIN TestLogin;
GO

CREATE LOGIN TestLogin
WITH PASSWORD = 'SuperSecret52&&', SID = 0x241C11948AEEB749B0D22646DB1A19F2;

SELECT * FROM sys.sql_logins WHERE name = 'TestLogin';
GO

* Analytics
Platform System (PDW) *

 

Sistema de la plataforma de análisis

Sintaxis

-- Syntax for Analytics Platform System
CREATE LOGIN loginName { WITH <option_list1> | FROM WINDOWS }

<option_list1> ::=
    PASSWORD = { 'password' } [ MUST_CHANGE ]
    [ , <option_list> [ ,... ] ]

<option_list> ::=
      CHECK_EXPIRATION = { ON | OFF}
    | CHECK_POLICY = { ON | OFF}

Argumentos

login_name

Especifica el nombre del inicio de sesión que se va a crear. Hay cuatro tipos de inicios de sesión: inicios de sesión de SQL Server, de Windows, asignados a certificados y asignados a claves asimétricas. Al crear inicios de sesión asignados desde una cuenta de dominio de Windows, debe usar el nombre de inicio de sesión de usuario anterior a Windows 2000 con el formato [<domainName>\<login_name>]. No puede usar un UPN con el formato login_name@DomainName. Vea el ejemplo D más adelante en este artículo. Los inicios de sesión de autenticación son de tipo sysname y deben cumplir las reglas de identificadores y no pueden contener "\". Los inicios de sesión de Windows pueden contener un carácter ' \ ”. Los inicios de sesión basados en usuarios de Active Directory se limitan a nombres de menos de 21 caracteres.

PASSWORD = "contraseña"

Solo se aplica a inicios de sesión de SQL Server. Especifica la contraseña del inicio de sesión que se está creando. Utilice una contraseña segura. Para obtener más información, vea Contraseñas seguras y Directiva de contraseñas. A partir de SQL Server 2012 (11.x), la información de la contraseña almacenada se calcula con las funciones SHA-512 de la contraseña salada.

En las contraseñas se distingue entre mayúsculas y minúsculas. Las contraseñas siempre deben tener al menos ocho caracteres y no pueden superar los 128 caracteres. Las contraseñas pueden incluir a-z, A-Z, 0-9 y la mayoría de los caracteres no alfanuméricos. Las contraseñas no pueden contener comillas simples ni el login_name.

MUST_CHANGE

Solo se aplica a inicios de sesión de SQL Server. Si se incluye esta opción, SQL Server solicita al usuario una contraseña nueva la primera vez que se use el inicio de sesión nuevo.

CHECK_EXPIRATION = { ON | OFF }

Solo se aplica a inicios de sesión de SQL Server. Especifica si debe aplicarse la directiva de caducidad de contraseñas en este inicio de sesión. El valor predeterminado es OFF.

CHECK_POLICY = { ON | OFF }

Solo se aplica a inicios de sesión de SQL Server. Especifica que se deben aplicar las directivas de contraseñas de Windows en el equipo en el que se ejecuta SQL Server para este inicio de sesión. El valor predeterminado es ON.

Si la directiva de Windows requiere contraseñas seguras, las contraseñas deben tener al menos tres de las cuatro siguientes características:

  • Un carácter en mayúscula (A-Z).
  • Un carácter en minúsculas (a-z).
  • Un dígito (0-9).
  • Uno de los caracteres nonalphanumeric, como un espacio, _, @, *, ^, %, !, $, #, o &.

WINDOWS

Especifica que el inicio de sesión se asigna a un inicio de sesión de Windows.

Observaciones

  • En las contraseñas se distingue entre mayúsculas y minúsculas.
  • Si se especifica MUST_CHANGE, CHECK_EXPIRATION y CHECK_POLICY, deben establecerse en ON. Si no es así, la instrucción producirá un error.
  • No se admite una combinación de CHECK_POLICY = OFF y CHECK_EXPIRATION = ON.
  • Cuando CHECK_POLICY se establece en OFF, lockout_time se restablece y CHECK_EXPIRATION se establece en OFF.

Importante

CHECK_EXPIRATION y CHECK_POLICY solo se aplican en Windows Server 2003 y versiones posteriores. Para obtener más información, vea Password Policy.

Permisos

Solo los usuarios con el permiso ALTER ANY LOGIN en el servidor o la pertenencia al rol fijo de servidor securityadmin pueden crear inicios de sesión. Para más información, vea Roles de nivel de servidor y ALTER SERVER ROLE.

Después de crear un inicio de sesión

Después de crear un inicio de sesión, este se puede conectar a Azure Synapse Analytics, pero solo tiene los permisos concedidos para el rol public. Considere la posibilidad de realizar algunas de las actividades siguientes.

  • Para conectarse a una base de datos, cree una para el inicio de sesión. Para más información, consulte CREATE USER.
  • Cree un rol de servidor definido por el usuario mediante CREATE SERVER ROLE. Use ALTER SERVER ROLE... ADD MEMBER para agregar el nuevo inicio de sesión al rol de servidor definido por el usuario. Para obtener más información, vea CREATE SERVER ROLE y ALTER SERVER ROLE.
  • Utilice sp_addsrvrolemember para agregar el inicio de sesión a un rol fijo de servidor. Para obtener más información, vea Roles de nivel de servidor y sp_addsrvrolemember.
  • Use la instrucción de GRANT, para conceder permisos de servidor al nuevo inicio de sesión o un rol que contiene el inicio de sesión. Para obtener más información, vea GRANT.

Ejemplos

G. Crear un inicio de sesión de autenticación de SQL Server con una contraseña

En el ejemplo siguiente se crea el inicio de sesión Mary7 con la contraseña A2c3456.

CREATE LOGIN Mary7 WITH PASSWORD = 'A2c3456$#' ;

H. Usar Opciones

En el siguiente ejemplo se crea el inicio de sesión Mary8 con contraseña y algunos de los argumentos opcionales.

CREATE LOGIN Mary8 WITH PASSWORD = 'A2c3456$#' MUST_CHANGE,
CHECK_EXPIRATION = ON,
CHECK_POLICY = ON;

I. Crear un inicio de sesión desde una cuenta de dominio de Windows

En el ejemplo siguiente se crea un inicio de sesión a partir de una cuenta de dominio de Windows denominada Mary en el dominio Contoso.

CREATE LOGIN [Contoso\Mary] FROM WINDOWS;
GO