sp_addlogin (Transact-SQL)

Se aplica a:SQL Server

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

Importante

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

Importante

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

Convenciones de sintaxis de Transact-SQL

Sintaxis

sp_addlogin
    [ @loginame = ] N'loginame'
    [ , [ @passwd = ] N'passwd' ]
    [ , [ @defdb = ] N'defdb' ]
    [ , [ @deflanguage = ] N'deflanguage' ]
    [ , [ @sid = ] sid ]
    [ , [ @encryptopt = ] 'encryptopt' ]
[ ; ]

Argumentos

[ @loginame = ] N'loginame'

Nombre del inicio de sesión. @loginame es sysname, sin ningún valor predeterminado.

[ @passwd = ] N'passwd'

La contraseña de inicio de sesión. @passwd es sysname, con un valor predeterminado de NULL.

Importante

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

[ @defdb = ] N'defdb'

La base de datos predeterminada del inicio de sesión (la base de datos a la que el inicio de sesión se conecta por primera vez después de iniciar sesión). @defdb es sysname, con un valor predeterminado de master.

[ @deflanguage = ] N'deflanguage'

Idioma predeterminado del inicio de sesión. @deflanguage es sysname, con un valor predeterminado de NULL. Si no se especifica @deflanguage, el @deflanguage predeterminado del nuevo inicio de sesión se establece en el idioma predeterminado actual del servidor.

[ @sid = ] sid

Número de identificación de seguridad (SID). @sid es varbinary(16), con un valor predeterminado de NULL. Si @sid es NULL, el sistema genera un SID para el nuevo inicio de sesión. A pesar del uso de un tipo de datos varbinary , los valores distintos NULL de deben tener exactamente 16 bytes de longitud y aún no pueden existir. Especificar @sid es útil, por ejemplo, al crear scripts o mover inicios de sesión de SQL Server de un servidor a otro y desea que los inicios de sesión tengan el mismo SID en servidores diferentes.

[ @encryptopt = ] 'encryptopt'

Especifica si la contraseña se pasa como texto sin cifrar o como hash de la contraseña de texto sin cifrar. No se realiza ningún cifrado. La palabra "cifrar" se utiliza aquí para la compatibilidad con versiones anteriores. Si se pasa una contraseña de texto no cifrado, se aplica un hash. El hash se almacena. @encryptopt es varchar(20) y puede ser uno de los siguientes valores.

Valor Descripción
NULL (valor predeterminado) La contraseña se pasa como texto sin cifrar.
skip_encryption La contraseña ya está en formato hash. El Motor de base de datos debe almacenar el valor sin volver a guardarlo.
skip_encryption_old La contraseña proporcionada se ha hashizado mediante una versión anterior de SQL Server. El Motor de base de datos debe almacenar el valor sin volver a guardarlo. Esta opción solo se proporciona para permitir la actualización.

Valores de código de retorno

0 (correcto) o 1 (erróneo).

Comentarios

Los inicios de sesión de SQL Server pueden contener de 1 a 128 caracteres, incluidas letras, símbolos y números. Los inicios de sesión no pueden contener una barra diagonal inversa (\); ser un nombre de inicio de sesión reservado, por ejemplo sa o público, o ya existen; o ser o una NULL 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 USE instrucción . Sin embargo, no puede usar la base de datos predeterminada hasta que el propietario de la base de datos tenga acceso a esa base de datos (mediante sp_adduser, sp_addrolemember) o sp_addrole.

El número de SID es un GUID que identifica de forma única el inicio de sesión en el servidor.

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

El uso skip_encryption de para suprimir el hash de contraseña es útil si la contraseña ya está hash cuando se agrega el inicio de sesión a SQL Server. Si la contraseña se ha hashizado mediante una versión anterior de SQL Server, use skip_encryption_old.

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

En la tabla siguiente se muestran varios procedimientos almacenados que se usan 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 Creación de un inicio de sesión de SQL Server

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

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

B. Creación de un inicio de sesión de SQL Server que tenga una base de datos predeterminada

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

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

C. Creación de un inicio de sesión de SQL Server que tenga un idioma predeterminado diferente

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

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

D. Creación de un inicio de sesión de SQL Server que tenga un SID específico

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

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