CREATE LOGIN (Transact-SQL)

Crea un inicio de sesión para SQL Server, SQL Database, Azure Synapse Analytics o bases de datos de Analytics Platform System. Haga clic en una de las pestañas siguientes para obtener la sintaxis, argumentos, comentarios, permisos y ejemplos para una versión concreta.

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.

Para obtener 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. Cuando crea inicios de sesión que se asignan desde una cuenta de dominio de Windows, debe utilizar 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 login_name@DomainName. 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 los 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 contraseña almacenada se calcula con SHA-512 de la contraseña cifrada con sal.

En las contraseñas se distingue entre mayúsculas y minúsculas. Las contraseñas siempre deben ser de al menos 8 caracteres de longitud 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 login_name.

PASSWORD = hashed_password Se aplica solo 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 no se selecciona esta opción, se aplicará el algoritmo hash a la cadena especificada como contraseña 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 utilice la opción HASHED para crear nuevos inicios de sesión. La opción HASHED no se puede usar con los valores hash creados con SQL 7 o una versión anterior.

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. Las credenciales no se pueden asignar al inicio de sesión del administrador del sistema (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 una base de datos predeterminada que debe asignarse al inicio de sesión. Si no se incluye esta opción, el valor predeterminado es master.

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 es el 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 } Se aplica solo 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 no alfanuméricos, 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.
  • La aplicación previa del algoritmo hash a las contraseñas solo se admite en la creación de inicios 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 la 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.

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.

Válido para : SQL Server 2008 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.

Válido para : SQL Server 2008 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.

Válido para : SQL Server 2008 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.

Válido para : SQL Server 2008 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;

Consulte también

* Azure SQL Database *

 

SQL Database

Sintaxis

-- Syntax for Azure SQL Database
CREATE LOGIN login_name
 { WITH <option_list> }

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

Argumentos

login_name Especifica el nombre del inicio de sesión que se va a crear. Las bases de datos únicas y agrupadas de Azure SQL Database y las bases de datos de Azure Synapse Analytics solo admiten inicios de sesión de SQL. Para crear cuentas para usuarios de Azure Active Directory o para crear cuentas de usuario que no estén asociadas a un inicio de sesión, use la instrucción CREATE USER. Para obtener más información, vea Administración de inicios de sesión en Azure SQL Database.

PASSWORD =' password* ' 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 ser de al menos 8 caracteres de longitud 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 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 un SID de manera automática. 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 <login> @ <server> . 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 <loginname>@<servername>. 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 como 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

Consulte también

* Instancia administrada
de Azure SQL*

 

Azure SQL Managed Instance

Sintaxis

-- Syntax for Azure SQL Managed Instance
CREATE LOGIN login_name [FROM EXTERNAL PROVIDER] { 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 Azure Active Directory (AD), que es un usuario, un grupo o una aplicación de Azure AD. En caso contrario, el inicio de sesión representa el nombre del inicio de sesión SQL que se ha creado.

FROM EXTERNAL PROVIDER
Especifica que el inicio de sesión es para la autenticación de Azure AD.

PASSWORD = 'password' 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 de longitud 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 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 un SID de manera automática. 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.

  • La nueva sintaxis se presentó para la creación de entidades de seguridad de nivel de servidor asignadas a cuentas de Azure AD (FROM EXTERNAL PROVIDER)

  • Cuando se especifica FROM EXTERNAL PROVIDER:

    • login_name debe representar una cuenta de Azure AD (usuario, grupo o aplicación) existente que sea accesible en Azure AD mediante la Instancia administrada de Azure SQL actual. En las entidades de seguridad de Azure AD, la sintaxis de CREATE LOGIN requiere:
      • UserPrincipalName del objeto Azure AD para los usuarios de Azure AD.
      • DisplayName del objeto Azure AD para los grupos de Azure AD y las aplicaciones de Azure AD.
    • No se puede usar la opción PASSWORD.
  • De forma predeterminada, cuando se omite la cláusula FROM EXTERNAL PROVIDER, se crea un inicio de sesión SQL convencional.

  • Los inicios de sesión de Azure AD son 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 Azure AD, o bien con el valor de tipo de columna establecido en X y el valor type_desc establecido en EXTERNAL_GROUP para los inicios de sesión asignados a grupos de Azure AD.

  • 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 que se concede a un inicio de sesión de Azure AD recién creado en la base de datos principal es el siguiente: CONNECT SQL y VIEW ANY DATABASE.

Inicios de sesión de SQL Managed Instance

  • 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 la cuenta de Azure Active Directory (Azure AD) con el permiso ALTER ANY LOGIN en el servidor o la pertenencia a uno de estos roles puede ejecutar el comando de creación.
  • Si el inicio de sesión es una entidad de seguridad de SQL, solo los inicios de sesión que forman parte del rol sysadmin pueden utilizar el comando create para crear inicios de sesión para una cuenta de Azure AD.
  • Debe ser un miembro de Azure AD en el mismo directorio que se use para Instancia administrada de Azure SQL.

Después de crear un inicio de sesión

Nota

La funcionalidad de administrador de Azure AD para Azure SQL Managed Instance después de la creación ha cambiado. Para obtener más información, consulte Nueva funcionalidad de administrador de Azure AD para MI.

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 de Azure AD a partir de un inicio de sesión de Azure AD, vea 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 comando siguiente para agregar el rol sysadmin a un inicio de sesión de Azure AD: ALTER SERVER ROLE sysadmin ADD MEMBER [AzureAD_Login_name]
  • 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 Azure AD asignado a un grupo de Azure AD como el propietario de la base de datos.
  • Se admite la suplantación de las entidades de seguridad a nivel de servidor de Azure AD mediante otras entidades de seguridad de Azure AD, como la cláusula EXECUTE AS.
  • Solo las entidades de seguridad de nivel de servidor de SQL (inicios de sesión) que formen parte del rol sysadmin pueden ejecutar las operaciones siguientes destinadas a entidades de seguridad de Azure AD:
    • EXECUTE AS USER
    • EXECUTE AS LOGIN
  • Los usuarios externos (invitados) que se han importado desde otro directorio de Azure AD no se pueden configurar directamente como administradores de Azure AD para SQL Managed Instance mediante Azure Portal. En su lugar, debe unir a los usuarios externos a un grupo de Azure AD con seguridad habilitada y configurar este grupo como administrador de la instancia. Puede usar PowerShell o la CLI de Azure para establecer usuarios invitados individuales como administrador de la instancia.
  • El inicio de sesión no se replica 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 solucionarlo, el usuario debe crear el inicio de sesión con el mismo identificador de seguridad 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 una cuenta de Azure AD local

En el ejemplo siguiente se crea un inicio de sesión para la cuenta de Azure AD joe@myaad.onmicrosoft.com que existe en la instancia myaad de Azure AD.

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

D. Creación de un inicio de sesión para una cuenta de Azure AD federada

En el ejemplo siguiente se crea un inicio de sesión para una cuenta de Azure AD federada bob@contoso.com que existe en la instancia contoso de Azure AD. 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 Azure AD

En el ejemplo siguiente se crea un inicio de sesión para el grupo de Azure AD mygroup que existe en la instancia myaad de Azure AD.

CREATE LOGIN [mygroup] FROM EXTERNAL PROVIDER
GO

F. Creación de un inicio de sesión para una aplicación de Azure AD

En el ejemplo siguiente se crea un inicio de sesión para la aplicación de Azure AD myapp que existe en la instancia myaad de Azure AD.

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

Consulte también

* Azure Synapse
Analytics *

 

Azure Synapse Analytics

Sintaxis

-- Syntax for Azure Synapse Analytics
CREATE LOGIN login_name
 { WITH <option_list> }

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

Argumentos

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 usuarios de Azure Active Directory, use la instrucción CREATE USER.

PASSWORD =' password* ' 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 ser de al menos 8 caracteres de longitud 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 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 un SID de manera automática. 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 <login> @ <server> . 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 <loginname>@<servername>. 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 como 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

Consulte también

* 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. Cuando crea inicios de sesión que se asignan desde una cuenta de dominio de Windows, debe utilizar 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 login_name@DomainName. 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 contraseña almacenada se calcula con SHA-512 de la contraseña cifrada con sal.

En las contraseñas se distingue entre mayúsculas y minúsculas. Las contraseñas siempre deben ser de al menos 8 caracteres de longitud 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 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 } Se aplica solo 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 no alfanuméricos, 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 la 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

Consulte también