sp_change_users_login (Transact-SQL)

Se aplica a: síSQL Server (todas las versiones admitidas)

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

Importante

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. Use ALTER USER en su lugar.

Icono de vínculo de tema Convenciones 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 llevará a cabo el procedimiento. action es varchar(10). la acción puede tener uno de los siguientes valores.

Value 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 usar Auto_Fix en situaciones sensibles a la seguridad.

Cuando se usa Auto_Fix, debe especificar el usuario y la contraseña si el inicio de sesión aún no existe; de lo contrario, debe especificar el usuario, pero la contraseña se omitirá. login debe ser NULL. el usuario debe ser un usuario válido en la base de datos actual. El inicio de sesión no puede tener otro usuario asignado.
Report 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.

Para reemplazar la opción de informe por una consulta mediante las tablas del sistema, compare las entradas de sys.server_prinicpals con las entradas de sys.database_principals.
Update_One Vincula el usuario especificado de la base de datos actual a un inicio de SQL Server sesión existente. se deben especificar el usuario y el inicio de sesión. password debe ser NULL o no especificarse.

[ @UserNamePattern = ] 'user'
Es el nombre de un usuario en la base de datos actual. user es sysname, con un valor predeterminado de 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 SQL Server de sesión que se crea especificando Auto_Fix. Si ya existe un inicio de sesión correspondiente, se asignan el usuario y el inicio de sesión y se omite la contraseña. Si no existe un inicio de sesión correspondiente, sp_change_users_login crea un nuevo inicio de sesión y asigna la contraseña como contraseña SQL Server para el nuevo inicio de sesión. password es sysname y no debe ser NULL.

IMPORTANTE: Use siempre una contraseña segura.

Valores de código de retorno

0 (correcto) o 1 (error)

Conjuntos de resultados

Nombre de la columna Tipo de datos Descripción
UserName sysname Nombre del usuario de la base de datos.
UserSID varbinary(85) Identificador de seguridad del usuario.

Observaciones

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 inicio de sesión no puede ser sa y el usuario no puede ser dbo, invitado ni INFORMATION_SCHEMA usuario.

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.

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.

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

Permisos

Requiere pertenencia al rol fijo de base de datos db_owner. Solo los miembros del rol fijo de servidor sysadmin pueden especificar Auto_Fix opción.

Ejemplos

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

El ejemplo siguiente produce un informe de los usuarios en la actual base de datos y 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 AdventureWorks2012;  
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 ServerMary que tiene la contraseña B3r12-3x$098f6 si no existe el inicio de sesión Mary.

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

Vea también

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)