Compartir a través de


sp_change_users_login (Transact-SQL)

Actualizado: 12 de diciembre de 2006

Asigna un usuario de la base de datos existente a un inicio de sesión de SQL Server.

[!NOTA] sp_change_users_login no se puede utilizar con un inicio de sesión de SQL Server creado desde una entidad de seguridad de Windows ni con un usuario creado mediante CREATE USER WITHOUT LOGIN.

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

Sintaxis

sp_change_users_login [ @Action = ] 'action' 
    [ , [ @UserNamePattern = ] 'user' ] 
    [ , [ @LoginName = ] 'login' ] 
        [ , [ @Password = ] 'password' ]

Argumentos

  • [ @Action= ] 'action'
    Describe la acción que debe realizar el procedimiento. action es de tipo varchar(10). action puede tener uno de los valores siguientes.

    Valor Descripción

    Auto_Fix

    Vincula una entrada de usuario de la vista de catálogo del sistema sys.database_principals de la base de datos actual con el inicio de sesión de SQL Server del mismo nombre. Si no existe un inicio de sesión con el mismo nombre, se creará uno. Examine el resultado de la instrucción Auto_Fix para confirmar que se ha realizado el vínculo correcto. Evite la utilización de Auto_Fix en situaciones que puedan afectar a la seguridad de los datos.

    Al usar Auto_Fix, debe especificar user y password si el inicio de sesión no existe; en caso contrario, debe especificar user pero password se ignorará. login debe ser NULL. user debe ser un usuario válido en la base de datos actual. El inicio de sesión no puede tener otro usuario asignado.

    Informe

    Enumera los usuarios y sus identificadores de seguridad (SID) correspondientes, que se encuentran en la base de datos actual y no están vinculados con ningún inicio de sesión. user, login y password deben ser NULL o no especificarse.

    Update_One

    Vincula el user especificado en la base de datos actual a un SQL Server login existente. user y login deben especificarse. password debe ser NULL o no especificarse.

  • [ @UserNamePattern= ] 'user'
    Es el nombre de un usuario en la base de datos actual. user es de tipo sysname y su valor predeterminado es NULL.
  • [ @LoginName= ] 'login'
    Es el nombre de un inicio de sesión de SQL Server. login es de tipo sysname y su valor predeterminado es NULL.
  • [ @Password= ] 'password'
    Es la contraseña asignada a un nuevo inicio de sesión de SQL Server que se ha creado especificando Auto_Fix. Si ya existe un inicio de sesión coincidente, se asignan el usuario y el inicio de sesión y password se ignora. Si no existe un inicio de sesión coincidente, sp_change_users_login crea un nuevo inicio de sesión de SQL Server y asigna password como la contraseña para el nuevo inicio de sesión. password es de tipo sysname y su valor predeterminado no debe ser NULL.

    ms174378.security(es-es,SQL.90).gifNota de seguridad:
    Utilice una contraseña segura. Para obtener más información, vea Contraseñas seguras.

Conjuntos de resultados

Nombre de columna Tipo de datos Descripción

UserName

sysname

Nombre del usuario de la base de datos.

UserSID

varbinary(85)

Identificador de seguridad del usuario.

Notas

[!NOTA] sp_change_users_login no se puede utilizar para asignar usuarios de la base de datos a entidades de seguridad de Windows, certificados o claves asimétricas.

Use sp_change_users_login para vincular un usuario de la base de datos actual a un inicio de sesión de SQL Server. Si ha cambiado el inicio de sesión para el usuario, utilice sp_change_users_login para vincular el usuario al nuevo inicio de sesión sin que se pierdan los permisos del usuario. El nuevo login no puede ser sa y el usuario user no puede ser dbo, guest o un usuario INFORMATION_SCHEMA.

No se puede ejecutar sp_change_users_login dentro de una transacción definida por el usuario.

Permisos

Debe pertenecer a la función fija de base de datos db_owner. Sólo los miembros de la función fija de servidor sysadmin pueden especificar la opción Auto_Fix.

Valores de código de retorno

0 (correcto) o 1 (error)

Ejemplos

A. Mostrar un informe del usuario actual para las asignaciones de inicio de sesión

En el siguiente ejemplo se crea un informe de los usuarios de la base de datos actual que no están vinculados a ningún inicio de sesión y de sus identificadores de seguridad (SID).

EXEC sp_change_users_login 'Report';

B. Asignar un usuario de la base de datos a un nuevo inicio de sesión de SQL Server

En el siguiente ejemplo se asocia un usuario de la base de datos con un nuevo inicio de sesión de SQL Server. El usuario de la base de datos MB-Sales, que primero se asigna a otro inicio de sesión, se vuelve a asignar al inicio de sesión MaryB.

--Create the new login.
CREATE LOGIN MaryB WITH PASSWORD = '982734snfdHHkjj3';
GO
--Map database user MB-Sales to login MaryB.
USE AdventureWorks;
GO
EXEC sp_change_users_login 'Update_One', 'MB-Sales', 'MaryB';
GO

C. Asignar automáticamente un usuario a un inicio de sesión, creando un inicio de sesión nuevo si es necesario

En el siguiente ejemplo se muestra cómo utilizar Auto_Fix para asignar una usuario existente a un inicio de sesión con el mismo nombre, o crear el inicio de sesión de SQL Server Mary que tiene la contraseña B3r12-3x$098f6 si no existe el inicio de sesión Mary.

USE AdventureWorks;
GO
EXEC sp_change_users_login 'Auto_Fix', 'Mary', NULL, 'B3r12-3x$098f6';
GO

Vea también

Referencia

Procedimientos almacenados de seguridad (Transact-SQL)
CREATE LOGIN (Transact-SQL)
sp_adduser (Transact-SQL)
sp_helplogins (Transact-SQL)
Procedimientos almacenados del sistema (Transact-SQL)
sys.database_principals (Transact-SQL)

Ayuda e información

Obtener ayuda sobre SQL Server 2005

Historial de cambios

Versión Historial

12 de diciembre de 2006

Contenido modificado:
  • Se ha agregado una nota aclaratoria que hay que tener en cuenta acerca del uso de sp_change_users_login.