sp_addlogin (Transact-SQL)

Crea un nuevo inicio de sesión de SQL Server que permite a un usuario conectar a una instancia de SQL Server con la autenticación de SQL Server.

Nota importanteImportante

Esta característica se quitará en una versión futura de Microsoft SQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan. Utilice CREATE LOGIN en su lugar.

Nota de seguridadNota de seguridad

Siempre que sea posible, utilice la autenticación de Windows.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

sp_addlogin [ @loginame = ] 'login' 
    [ , [ @passwd = ] 'password' ] 
    [ , [ @defdb = ] 'database' ] 
    [ , [ @deflanguage = ] 'language' ] 
    [ , [ @sid = ] sid ] 
    [ , [ @encryptopt = ] 'encryption_option' ] 
[;]

Argumentos

  • [ @loginame = ] 'login'
    Es el nombre del inicio de sesión. login es de tipo sysname y no tiene valor predeterminado.

  • [ @passwd = ] 'password'
    Es la contraseña de inicio de sesión. password es de tipo sysname y su valor predeterminado es NULL.

    Nota de seguridadNota de seguridad

    No utilice una contraseña en blanco. Utilice una contraseña segura.

  • [ @defdb = ] 'database'
    Es la base de datos predeterminada del inicio de sesión (la base de datos a la que primero se conecta el inicio de sesión después de haber iniciado la sesión). database es de tipo sysname y su valor predeterminado es master.

  • [ @deflanguage = ] 'language'
    Es el idioma predeterminado del inicio de sesión. language es de tipo sysname y su valor predeterminado es NULL. Si no se especifica language, el valor predeterminado de language del nuevo inicio de sesión será el idioma predeterminado actual del servidor.

  • [ @sid = ] 'sid'
    Especifica el número de identificación de seguridad (SID). sid es de tipo varbinary(16) y su valor predeterminado es NULL. Si sid es NULL, el sistema genera un SID para el nuevo inicio de sesión. A pesar de la utilización del tipo de datos varbinary, los valores que no sean NULL deben tener exactamente 16 bytes de longitud y no deben ser valores que ya existan. Especificar el parámetro sid es útil, por ejemplo, cuando se generan scripts de inicios de sesión de SQL Server o se mueven dichos inicios de sesión desde un servidor a otro y se desea que los inicios de sesión tengan el mismo SID entre diferentes servidores.

  • [ @encryptopt = ] 'encryption_option'
    Especifica si la contraseña se pasa como texto sin cifrar o como hash de la contraseña de texto sin cifrar. Tenga en cuenta que no se realiza el cifrado. La palabra "cifrar" se utiliza aquí para la compatibilidad con versiones anteriores. Si se pasa una contraseña de texto sin cifrar, está en formato hash. El hash se almacena. encryption_option es de tipo varchar(20) y puede tener uno de los siguientes valores.

    Valor

    Descripción

    NULL

    La contraseña se pasa como texto sin cifrar. Es el valor predeterminado.

    skip_encryption

    La contraseña ya está en formato hash. El Motor de base de datos debe almacenar el valor sin volver a procesar el hash de la contraseña.

    skip_encryption_old

    La contraseña proporcionada estaba en formato hash en una versión anterior de SQL Server. El Motor de base de datos debe almacenar el valor sin volver a procesar el hash de la contraseña. Esta opción sólo se proporciona para permitir la actualización.

Valores de código de retorno

0 (correcto) o 1 (error)

Comentarios

Los inicios de sesión de SQL Server pueden contener entre 1 y 128 caracteres, y pueden incluir letras, símbolos y números. Los inicios de sesión no pueden tener una barra diagonal inversa (\); no pueden ser un nombre de inicio de sesión reservado, por ejemplo sa o public, o bien existir; no pueden ser NULL ni una cadena vacía ''.

Si se proporciona el nombre de una base de datos predeterminada, puede conectarse a la base de datos especificada sin ejecutar la instrucción USE. Sin embargo, no puede usar la base de datos predeterminada hasta que no obtenga acceso a esa base de datos del propietario de ésta (utilizando sp_adduser o sp_addrolemember) o bien sp_addrole.

El número de SID es un GUID que identificará de forma exclusiva el inicio de sesión en el servidor.

Al cambiar el idioma predeterminado del servidor no se cambia el idioma predeterminado de los inicios de sesión existentes. Para cambiar el idioma predeterminado del servidor, use sp_configure.

Utilizar skip_encryption para suprimir el formato hash de contraseñas es útil si ésta ya está en hash cuando el inicio de sesión se agrega a SQL Server. Si la contraseña estaba en formato hash en una versión anterior de SQL Server, use skip_encryption_old.

sp_addlogin no se puede ejecutar desde una transacción definida por el usuario.

En la siguiente tabla se muestran varios procedimientos almacenados que se utilizan con sp_addlogin.

Procedimiento almacenado

Descripción

sp_grantlogin

Agrega un usuario o grupo de Windows.

sp_password

Cambia la contraseña de un usuario.

sp_defaultdb

Cambia la base de datos predeterminada de un usuario.

sp_defaultlanguage

Cambia el idioma predeterminado de un usuario.

Permisos

Requiere el permiso ALTER ANY LOGIN.

Ejemplos

A. Crear un inicio de sesión de SQL Server

En el siguiente ejemplo se crea un inicio de sesión de SQL Server para el usuario Victoria, con una contraseña B1r12-36, sin especificar una base de datos predeterminada.

EXEC sp_addlogin 'Victoria', 'B1r12-36';
GO

B. Crear un inicio de sesión de SQL Server que tiene una base de datos predeterminada

En el siguiente ejemplo se crea un inicio de sesión de SQL Server para el usuario Albert, con una contraseña B5432-3M6 y una base de datos predeterminada corporate.

EXEC sp_addlogin 'Albert', 'B5432-3M6', 'corporate';
GO

B. Crear un inicio de sesión de SQL Server que tiene otro idioma predeterminado

En el siguiente ejemplo se crea un inicio de sesión de SQL Server para el usuario TzTodorov, con una contraseña 709hLKH7chjfwv, una base de datos predeterminada AdventureWorks2008R2 y un idioma predeterminado Bulgarian.

EXEC sp_addlogin 'TzTodorov', '709hLKH7chjfwv', 'AdventureWorks2008R2', N'български'

D. Crear un inicio de sesión de SQL Server que tiene un SID específico

En el siguiente ejemplo se crea un inicio de sesión de SQL Server para el usuario Michael, con una contraseña B548bmM%f6, una base de datos predeterminada AdventureWorks2008R2, un idioma predeterminado us_english y un SID 0x0123456789ABCDEF0123456789ABCDEF.

EXEC sp_addlogin 'Michael', 'B548bmM%f6', 'AdventureWorks2008R2', 'us_english', 0x0123456789ABCDEF0123456789ABCDEF