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 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 [<nombreDeDominio>\<nombreDeInicioDeSesión>]. 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 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
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 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 la 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 }
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 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.
- Los inicios de sesión creados con certificados o claves asimétricas solo se usan para la firma del código. No se pueden usar 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 maestra.
- 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.
- El modo de autenticación del servidor debe coincidir con el tipo de inicio de sesión para permitir el acceso.
- Para más información acerca de cómo diseñar un sistema de permisos, consulte Getting Started with Database Engine Permissions.
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.
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;
Consulte también
* Azure SQL Database *
SQL Database
Sintaxis
-- Syntax for Azure SQL Database
CREATE LOGIN login_name
{
FROM EXTERNAL PROVIDER
| WITH <option_list> [,..]
}
<option_list> ::=
PASSWORD = { 'password' }
[ , SID = sid ]
Argumentos
login_name
Nota
Las entidades de seguridad del servidor (inicios de sesión) de Azure Active Directory (Azure AD) están 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 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.
No se admite que los usuarios y las entidades de servicio de Azure AD (aplicaciones de Azure AD) que forman parte de más de 2048 grupos de seguridad de Azure AD inicien sesión en la base de datos en SQL Database, SQL Managed Instance o Azure Synapse.
FROM EXTERNAL PROVIDER
Especifica que el inicio de sesión es para la autenticación de Azure AD.
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 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 <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 mediante una cuenta de Azure AD
En el ejemplo siguiente se crea un inicio de sesión en el servidor lógico de SQL Database,bob@contoso.com
que existe en el dominio de Azure AD denominado contoso
.
Use master
CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER
GO
Consulte también
* Azure SQL
de SQL Database *
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.
No se admite que los usuarios y las entidades de servicio de Azure AD (aplicaciones de Azure AD) que forman parte de más de 2048 grupos de seguridad de Azure AD inicien sesión en la base de datos en SQL Database, SQL Managed Instance o Azure Synapse.
FROM EXTERNAL PROVIDER
Especifica que el inicio de sesión es para la autenticación de Azure AD.
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 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.
- 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:
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
osysadmin
. 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 de Azures 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 el comando siguiente para agregar el rol
- 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 *="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 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
- En las contraseñas se distingue entre mayúsculas y minúsculas.
- 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.
- El modo de autenticación del servidor debe coincidir con el tipo de inicio de sesión para permitir el acceso.
- Para más información acerca de cómo diseñar un sistema de permisos, consulte Getting Started with Database Engine Permissions.
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
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 [<nombreDeDominio>\<nombreDeInicioDeSesión>]. 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 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 }
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 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.
- 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.
- Para más información acerca de cómo diseñar un sistema de permisos, consulte Getting Started with Database Engine Permissions.
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
- Introducción a los permisos de los motores de bases de datos
- Entidades de seguridad
- Directiva de contraseñas
- ALTER LOGIN
- DROP LOGIN
- EVENTDATA
- Crear un inicio de sesión