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.
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.
Importante |
---|
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.
Para conectarse a una base de datos, cree una para el inicio de sesión. Para obtener más información, vea CREATE USER (Transact-SQL).
Cree un rol de servidor definido por el usuario con CREATE SERVER ROLE (Transact-SQL). Utilice 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 (Transact-SQL) y ALTER SERVER ROLE (Transact-SQL).
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 (Transact-SQL).
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 (Transact-SQL).
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