CREATE LOGIN (Transact-SQL)
Crea un inicio de sesión del Motor de base de datos para SQL Server y Base de datos SQL de Azure.
Se aplica a: SQL Server (desde SQL Server 2008 hasta la versión actual), Base de datos SQL de Azure. |
Convenciones de sintaxis de Transact-SQL
Sintaxis
-- SQL Server Syntax
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
-- Syntax for Windows Azure SQL Database
CREATE LOGIN login_name
{ WITH <option_list3> }
<option_list3> ::=
PASSWORD = { 'password' }
[ SID = sid ]
Argumentos
login_name
Especifica el nombre del inicio de sesión que se va a crear.Hay cuatro tipos de inicio de sesión: de SQL Server, de Windows, asignado a un certificado y asignado 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.Vea el ejemplo D más adelante en este tema.Los inicios de sesión con autenticación de SQL Server son del tipo sysname, deben seguir las reglas de Identificadores y no pueden 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
Se aplica a: desde SQL Server 2008 hasta SQL Server 2014.
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
Se aplica a: desde SQL Server 2008 hasta SQL Server 2014.
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 utilizar con los valores hash creados con SQL Server 7 o anterior.
MUST_CHANGE
Se aplica a: desde SQL Server 2008 hasta SQL Server 2014.
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
Se aplica a: desde SQL Server 2008 hasta SQL Server 2014.
Nombre de una credencial que debe asignarse 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 sa.
SID = sid
Se usa para volver a crear un inicio de sesión.Se aplica solo a inicios de sesión de autenticación de SQL Server, no a inicios de sesión de autenticación de Windows.Especifica el SID del nuevo inicio de sesión de 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 SQL Server.SID del inicio de sesión de SQL Server: un valor literal de 16 bytes (binario (16)) según un GUID.Por ejemplo, SID = 0x14585E90117152449347750164BA00A7.
SID del inicio de sesión de Base de datos SQL: una estructura de SID válida para Base de datos SQL de Azure.Esto suele ser un literal de 32 bytes (binario(32)) que consta de 0x01060000000000640000000000000000 más 16 bytes que representan un GUID.Por ejemplo, SID = 0x0106000000000064000000000000000014585E90117152449347750164BA00A7.
DEFAULT_DATABASE **=**database
Se aplica a: desde SQL Server 2008 hasta SQL Server 2014.
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
Se aplica a: desde SQL Server 2008 hasta SQL Server 2014.
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 a: desde SQL Server 2008 hasta SQL Server 2014.
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 }
Se aplica a: desde SQL Server 2008 hasta SQL Server 2014.
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).
Uno de los caracteres no alfanuméricos, como un espacio, _, @, *, ^, %, !, $, # o &.
WINDOWS
Se aplica a: desde SQL Server 2008 hasta SQL Server 2014.
Especifica que el inicio de sesión se asigna a un inicio de sesión de Windows.
CERTIFICATE certname
Se aplica a: desde SQL Server 2008 hasta SQL Server 2014.
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
Se aplica a: desde SQL Server 2008 hasta SQL Server 2014.
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 especifican los argumentos HASHED y CHECK_POLICY = ON, la complejidad de la contraseña no se comprobará hasta la próxima vez que se cambie la contraseña.
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 de Windows Azure
En Base de datos SQL, la instrucción CREATE LOGIN debe ser la única de un lote.
En Base de datos SQL debe estar conectado a la base de datos de master para crear un inicio de sesión.
Las reglas de SQL Server permiten crear un inicio de sesión de autenticación de SQL Server con el formato <nombreDeInicioDeSesión>@<nombreDeServidor>.Si el servidor de Base de datos SQL es myazureserver y el inicio de sesión es myemail@live.com, puede proporcionar un inicio de sesión como myemail@live.com@myazureserver.Use esta técnica solo si planea usar esta credencial para la conexión a un servidor único.Algunas versiones anteriores de las bibliotecas de cliente SQL requieren el uso del formato <loginname>@<servername> al conectarse a la Base de datos SQL de Azure.
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 Base de datos SQL de Windows Azure.
Permisos
En SQL Server, 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 o a Base de datos SQL, 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).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 (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
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
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: desde SQL Server 2008 hasta SQL Server 2014. |
CREATE LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>' MUST_CHANGE;
GO
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: desde SQL Server 2008 hasta SQL Server 2014. |
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 de un usuario determinado a partir de un certificado de master.
Se aplica a: desde SQL Server 2008 hasta SQL Server 2014. |
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: desde SQL Server 2008 hasta SQL Server 2014. |
CREATE LOGIN [<domainName>\<login_name>] FROM WINDOWS;
GO
F.Crear un inicio de sesión de un SID
En el ejemplo siguiente se crea primero un inicio de sesión de autenticación SQL Server y 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
Vea también
Entidades de seguridad (motor de base de datos)
Directiva de contraseñas
ALTER LOGIN (Transact-SQL)
DROP LOGIN (Transact-SQL)
EVENTDATA (Transact-SQL)
Crear un inicio de sesión