SETUSER (Transact-SQL)

Se aplica a:SQL ServerAzure SQL Managed Instance

Permite a un miembro del rol fijo de servidor sysadmin o al propietario de una base de datos suplantar a otro usuario.

Importante

SETUSER está incluido solo para compatibilidad hacia atrás. SETUSERpuede que no sea compatible con una futura versión de SQL Server. Se recomienda utilizar EXECUTE AS en su lugar.

Convenciones de sintaxis de Transact-SQL

Sintaxis

  
SETUSER [ 'username' [ WITH NORESET ] ]   

Argumentos

'username'
Es el nombre de un usuario de SQL Server o de Windows en la base de datos actual al que se suplanta. Cuando no se especifica el parámetro username, se restablece la identidad original del administrador del sistema o propietario de la base de datos que suplantaba al usuario.

CON NORESET
Especifica que las sentencias posteriores SETUSER (sin nombre de usuario especificado) no deben restablecer la identidad de usuario a administrador del sistema o propietario de la base de datos.

Comentarios

SETUSER puede ser utilizado por un miembro del rol fijo de servidor administrador del sistema o por el propietario de una base de datos para adoptar la identidad de otro usuario y así probar los permisos del otro usuario. No basta con pertenecer al rol fijo de base de datos db_owner.

Solo úsalo SETUSER con usuarios de SQL Server. SETUSERno es compatible con usuarios de Windows. Cuando SETUSER se ha utilizado para asumir la identidad de otro usuario, cualquier objeto que el usuario que se hace pasar por él pertenece al usuario. Por ejemplo, si el propietario de la base de datos adopta la identidad de la usuaria Margaret y crea una tabla llamada orders, la propietaria de la tabla orders será Margaret, en lugar del administrador del sistema.

SETUSER permanece en vigor hasta que se emita otra SETUSER declaración o hasta que la base de datos actual se cambie con la instrucción USE.

Nota

Si SETUSER se utiliza WITH NORESET, el propietario de la base de datos o el administrador del sistema debe cerrar sesión y luego volver a iniciar sesión para restablecer sus propios derechos.

Permisos

Es necesario pertenecer al rol fijo de servidor sysadmin o ser propietario de la base de datos. No basta con pertenecer al rol fijo de base de datos db_owner.

Ejemplos

El ejemplo siguiente muestra cómo el propietario de la base de datos puede adoptar la identidad de otro usuario. La usuaria mary ha creado una tabla llamada computer_types. Al usar SETUSER, el propietario de la base de datos se mary hace pasar por el usuario para conceder acceso al usuario joe a la computer_types tabla y luego restablece su propia identidad.

SETUSER 'mary';  
GO  
GRANT SELECT ON computer_types TO joe;  
GO  
--To revert to the original user  
SETUSER;  

Consulte también

DENY (Transact-SQL)
GRANT (Transact-SQL)
REVOKE (Transact-SQL)
USAR (Transact-SQL)