sp_change_users_login (Transact-SQL)sp_change_users_login (Transact-SQL)

SE APLICA A: síSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Asigna un usuario de base de datos existente a un inicio de sesión de SQL ServerSQL Server.Maps an existing database user to a SQL ServerSQL Server login. Esta característica está en modo de mantenimiento y es posible que no se incluya en una versión futura de Microsoft SQL Server.This feature is in maintenance mode and may be removed in a future version of Microsoft SQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan.Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Use ALTER USER en su lugar.Use ALTER USER instead.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax

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

ArgumentosArguments

[ @Action=] 'acción'[ @Action= ] 'action'
Describe la acción que llevará a cabo el procedimiento.Describes the action to be performed by the procedure. acción es varchar (10) .action is varchar(10). acción puede tener uno de los siguientes valores.action can have one of the following values.

ValorValue DescripciónDescription
Auto_FixAuto_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 ServerSQL Server del mismo nombre.Links a user entry in the sys.database_principals system catalog view in the current database to a SQL ServerSQL Server login of the same name. Si no existe un inicio de sesión con el mismo nombre, se creará uno.If a login with the same name does not exist, one will be created. Examine el resultado de la Auto_Fix instrucción para confirmar que ya se ha realizado el vínculo correcto.Examine the result from the Auto_Fix statement to confirm that the correct link is in fact made. Evite el uso de Auto_Fix en situaciones de seguridad.Avoid using Auto_Fix in security-sensitive situations.

Cuando usas Auto_Fix, debe especificar usuario y contraseña si no existe el inicio de sesión, en caso contrario, debe especificar usuariopero contraseña se pasará por alto.When you use Auto_Fix, you must specify user and password if the login does not already exist, otherwise you must specify user but password will be ignored. inicio de sesión debe ser NULL.login must be NULL. usuario debe ser un usuario válido en la base de datos actual.user must be a valid user in the current database. El inicio de sesión no puede tener otro usuario asignado.The login cannot have another user mapped to it.
InformeReport 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.Lists the users and corresponding security identifiers (SID) in the current database that are not linked to any login. usuario, inicio de sesión, y contraseña debe ser NULL o no especificado.user, login, and password must be NULL or not specified.

Para reemplazar la opción de informe con una consulta con las tablas del sistema, comparar las entradas de sys.server_prinicpals con las entradas de sys.database_principals.To replace the report option with a query using the system tables, compare the entries in sys.server_prinicpals with the entries in sys.database_principals.
Update_OneUpdate_One Vincula especificado usuario en la base de datos actual a un existente SQL ServerSQL Server inicio de sesión.Links the specified user in the current database to an existing SQL ServerSQL Server login. usuario y inicio de sesión debe especificarse.user and login must be specified. contraseña debe ser NULL o no especificado.password must be NULL or not specified.

[ @UserNamePattern=] 'usuario'[ @UserNamePattern= ] 'user'
Es el nombre de un usuario en la base de datos actual.Is the name of a user in the current database. usuario es sysname, su valor predeterminado es null.user is sysname, with a default of NULL.

[ @LoginName=] 'inicio de sesión'[ @LoginName= ] 'login'
Es el nombre de un inicio de sesión de SQL ServerSQL Server.Is the name of a SQL ServerSQL Server login. login es de tipo sysname y su valor predeterminado es NULL.login is sysname, with a default of NULL.

[ @Password=] 'contraseña'[ @Password= ] 'password'
Es la contraseña asignada a un nuevo SQL ServerSQL Server inicio de sesión que se crea mediante la especificación de Auto_Fix.Is the password assigned to a new SQL ServerSQL Server login that is created by specifying Auto_Fix. Si ya existe un inicio de sesión coincidente, el usuario y el inicio de sesión se asignan y contraseña se omite.If a matching login already exists, the user and login are mapped and password is ignored. Si no existe un inicio de sesión coincidente, sp_change_users_login crea un nuevo SQL ServerSQL Server inicio de sesión y cesionarios contraseña como la contraseña para el nuevo inicio de sesión.If a matching login does not exist, sp_change_users_login creates a new SQL ServerSQL Server login and assigns password as the password for the new login. contraseña es sysname, y no debe ser NULL.password is sysname, and must not be NULL.

IMPORTANTE:IMPORTANT!! Use siempre un contraseña segura!Always use a strong Password!

Valores de código de retornoReturn Code Values

0 (correcto) o 1 (error)0 (success) or 1 (failure)

Conjuntos de resultadosResult Sets

Nombre de columnaColumn name Tipo de datosData type DescripciónDescription
UserNameUserName sysnamesysname Nombre del usuario de la base de datos.Database user name.
UserSIDUserSID varbinary(85)varbinary(85) Identificador de seguridad del usuario.User's security identifier.

ComentariosRemarks

Use sp_change_users_login para vincular un usuario de la base de datos actual a un inicio de sesión de SQL ServerSQL Server.Use sp_change_users_login to link a database user in the current database with a SQL ServerSQL Server login. 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.If the login for a user has changed, use sp_change_users_login to link the user to the new login without losing user permissions. El nuevo inicio de sesión no puede ser sa y el usuariono puede ser dbo, guest o un usuario INFORMATION_SCHEMA.The new login cannot be sa, and the usercannot be dbo, guest, or an INFORMATION_SCHEMA user.

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 cannot be used to map database users to Windows-level principals, certificates, or asymmetric keys.

sp_change_users_login no se puede utilizar con un inicio de sesión de SQL ServerSQL Server creado desde una entidad de seguridad de Windows ni con un usuario creado mediante CREATE USER WITHOUT LOGIN.sp_change_users_login cannot be used with a SQL ServerSQL Server login created from a Windows principal or with a user created by using CREATE USER WITHOUT LOGIN.

No se puede ejecutar sp_change_users_login dentro de una transacción definida por el usuario.sp_change_users_login cannot be executed within a user-defined transaction.

PermisosPermissions

Requiere pertenencia al rol fijo de base de datos db_owner.Requires membership in the db_owner fixed database role. Solo los miembros del rol fijo de servidor sysadmin pueden especificar el Auto_Fix opción.Only members of the sysadmin fixed server role can specify the Auto_Fix option.

EjemplosExamples

A.A. Mostrar un informe del usuario actual para las asignaciones de inicio de sesiónShowing a report of the current user to login mappings

El ejemplo siguiente produce un informe de los usuarios en la actual base de datos y sus identificadores de seguridad (SID).The following example produces a report of the users in the current database and their security identifiers (SIDs).

EXEC sp_change_users_login 'Report';  

b.B. Asignar un usuario de la base de datos a un nuevo inicio de sesión de SQL ServerMapping a database user to a new SQL Server login

En el siguiente ejemplo se asocia un usuario de la base de datos con un nuevo inicio de sesión de SQL ServerSQL Server.In the following example, a database user is associated with a new SQL ServerSQL Server login. 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.Database user MB-Sales, which at first is mapped to another login, is remapped to login 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.C. Asignar automáticamente un usuario a un inicio de sesión, creando un inicio de sesión nuevo si es necesarioAutomatically mapping a user to a login, creating a new login if it is required

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 ServerSQL Server Mary que tiene la contraseña B3r12-3x$098f6 si no existe el inicio de sesión Mary.The following example shows how to use Auto_Fix to map an existing user to a login of the same name, or to create the SQL ServerSQL Server login Mary that has the password B3r12-3x$098f6 if the login Mary does not exist.

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

Vea tambiénSee Also

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