CREATE LOGIN (Transact-SQL)

Crea un inicio de sesión de Motor de base de datos para SQL Server, Base de datos SQL de Windows Azure y SQL Server PDW.

[!NOTA]

Las opciones de CREATE LOGIN varían para SQL Server, Base de datos SQL y SQL Server PDW.

Icono de vínculo a temas Convenciones de sintaxis de Transact-SQL

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

Sintaxis

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

<option_list3> ::= 
    PASSWORD = { 'password' }

Sintaxis

-- Syntax for SQL Server PDW
CREATE LOGIN login_name { WITH <option_list4> }

< option_list4> ::= 
    PASSWORD = { 'password' } [ MUST_CHANGE ]
    [ , <option_list5> [ ,... ] ]

<option_list5> ::=  
      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, inicios de sesión Windows, inicios de sesión asignado a un certificado e inicios de sesión asignados a una clave asimétrica. 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 [<nombreDeDominio>\<nombreDeInicioDeSesión>]. No puede utilizar un UPN con el formato nombreDeInicioDeSesión@nombreDeDominio. Para obtener un ejemplo, consulte el ejemplo D más adelante en este tema. Los inicios de sesión de autenticación de SQL Serverson de tipo sysname y deben cumplir las reglas de Identificadores y no puede contener "\". Los inicios de sesión de Windows pueden contener un carácter '\'.

  • PASSWORD ='password'
    Solo se aplica a inicios de sesión de SQL Server. Especifica la contraseña del inicio de sesión que se está creando. Debe utilizar siempre una contraseña segura. Para obtener más información, vea Contraseñas seguras y Directiva de contraseñas.

    En las contraseñas se distingue entre mayúsculas y minúsculas. Las contraseñas siempre deben ser de al menos 8 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 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 ya se ha aplicado un algoritmo hash a la contraseña especificada tras el argumento PASSWORD. Si esta opción no está seleccionada, el algoritmo hash se aplica a la cadena especificada como contraseña antes de almacenarse 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 utilizar con los valores hash creados con SQL Server 7 o anterior.

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

  • CREDENTIAL **=**credential_name
    Nombre de una credencial que debe asignarse al nuevo inicio de sesión de SQL Server. La credencial ya debe existir en el servidor. Actualmente esta opción solo vincula la credencial a un inicio de sesión. Los credenciales no se pueden asignar al inicio de sesión sa.

  • SID = sid
    Solo se aplica a inicios de sesión de SQL Server. Especifica el GUID del inicio de sesión de SQL Server nuevo. Si esta opción no se selecciona, SQL Server asigna automáticamente un GUID.

  • DEFAULT_DATABASE **=**database
    Especifica la base de datos predeterminada que debe asignarse al inicio de sesión. Si no se incluye esta opción, el valor predeterminado se establece en 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 }
    Solo se aplica a inicios de sesión de SQL Server. Especifica si debe aplicarse la directiva de expiración 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 que 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).

    • En 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 master.

  • 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 master.

Comentarios

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.

Nota importanteImportante

CHECK_EXPIRATION y CHECK_POLICY solo se aplican en Windows Server 2003 y versiones posteriores. Para obtener más información, vea Directiva de contraseñas.

Los inicios de sesión creados con certificados o claves asimétricas solo se usan para la firma del código. No se pueden utilizar para conectarse a SQL Server. Solo puede crear un inicio de sesión desde un certificado o clave asimétrica cuando este certificado o clave asimétrica ya exista en la base de datos master.

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.

Inicios de sesión en base de datos SQL

En Base de datos SQL, la instrucción CREATE LOGIN debe ser la única de un lote.

En algunos métodos de conexión con Base de datos SQL, como sqlcmd, debe agregar el nombre del servidor de Base de datos SQL 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 Base de datos SQL es servername.database.windows.net, el parámetro de username de la cadena de conexión debe ser login1@servername. Dado que la longitud total del parámetro de 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 Base de datos SQL debe estar conectado a la base de datos de master para crear un inicio de sesión.

Para obtener más información sobre los inicios de sesión de Base de datos SQL, vea Administrar bases de datos e inicios de sesión en Windows Azure SQL Database.

Permisos

En SQL Server y SQL Server PWD, requiere el permiso ALTER ANY LOGIN en el servidor o la pertenencia al rol fijo de servidor securityadmin.

En Base de datos SQL, solo pueden crear nuevos inicios de sesión el inicio de sesión principal de nivel servidor (creado por el proceso de aprovisionamiento) o los miembros del rol de base de datos de loginmanager en la base de datos maestra.

Si se utiliza la opción CREDENTIAL, también será necesario el permiso ALTER ANY CREDENTIAL en el servidor.

Pasos siguientes

Después de crear un inicio de sesión, el inicio de sesión puede conectarse a Motor de base de datos, a Base de datos SQL o al dispositivo de SQL Server PDW, pero solo tiene los permisos concedidos al rol public. Considere realizar algunas de las actividades siguientes.

Ejemplos

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

Se aplica a todos.

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

Se aplica a SQL Server y SQL Server PDW.

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.

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

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

Se aplica a SQL Server.

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.

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

D. Crear un inicio de sesión a partir de un certificado

Se aplica a SQL Server.

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

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

Se aplica a SQL Server.

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

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

Vea también

Referencia

ALTER LOGIN (Transact-SQL)

DROP LOGIN (Transact-SQL)

EVENTDATA (Transact-SQL)

Conceptos

Entidades de seguridad (motor de base de datos)

Directiva de contraseñas

Crear un inicio de sesión