USER_NAME (Transact-SQL)
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Punto de conexión de análisis SQL en Microsoft Fabric Almacenamiento en Microsoft Fabric
Devuelve un nombre de usuario de base de datos a partir de un número de identificación especificado o bien el nombre del usuario actual.
Convenciones de sintaxis de Transact-SQL
Sintaxis
USER_NAME ( [ ID ] )
Argumentos
ID
Número de identificación asociado a un usuario de base de datos, como se muestra en sys.database_principals. ID es int. Es obligatorio utilizar paréntesis.
Tipos de valores devueltos
nvarchar(128)
Comentarios
Cuando se omite ID, se supone que se trata del usuario actual en el contexto actual. Si el parámetro contiene la palabra NULL
, USER_NAME
devolverá NULL
. Cuando se llama a USER_NAME
sin especificar un ID después de una instrucción EXECUTE AS
, USER_NAME
devuelve el nombre del usuario suplantado. Si una entidad de seguridad de Windows ha tenido acceso a la base de datos en forma de miembro de un grupo, USER_NAME
devuelve el nombre de la entidad de seguridad de Windows en vez del nombre del grupo.
Aunque la función USER_NAME()
se admita en Azure SQL Database, no se admite el uso de EXECUTE AS USER = USER_NAME(n)
en Azure SQL Database.
Ejemplos
A. Usar de USER_NAME() para identificar un Id. de usuario
En el ejemplo siguiente se devuelve el nombre de usuario para el identificador de usuario 13
, como se muestra en sys.database_principals.
SELECT USER_NAME(13);
GO
B. Usar USER_NAME sin un identificador
En el siguiente ejemplo se busca el nombre del usuario actual sin especificar un identificador.
SELECT USER_NAME();
GO
Este es el conjunto de resultados para un usuario que pertenezca al rol fijo de servidor sysadmin.
dbo
C. Usar USER_NAME en la cláusula WHERE
En el siguiente ejemplo se busca la fila en sys.database_principals
en la que el nombre sea igual al resultado de aplicar la función del sistema USER_NAME
al número de identificador de usuario 1
.
SELECT name FROM sys.database_principals WHERE name = USER_NAME(1);
GO
Este es el conjunto de resultados.
name
------------------------------
dbo
(1 row(s) affected)
D. Llamar a USER_NAME durante la suplantación con EXECUTE AS
En el siguiente ejemplo se muestra cómo se comporta USER_NAME
durante la suplantación.
EXECUTE AS
no se admite actualmente en Microsoft Fabric.
Precaución
Al probar con EXECUTE AS
, siempre debe incluir un script REVERT
que se va a seguir.
SELECT USER_NAME();
GO
EXECUTE AS USER = 'Zelig';
GO
SELECT USER_NAME();
GO
REVERT;
GO
SELECT USER_NAME();
GO
Este es el conjunto de resultados.
-------------
dbo
-------------
Zelig
-------------
dbo
Ejemplos: Azure Synapse Analytics y Sistema de la plataforma de análisis (PDW)
E. Usar USER_NAME sin un identificador
En el siguiente ejemplo se busca el nombre del usuario actual sin especificar un identificador.
SELECT USER_NAME();
Este es el conjunto de resultados para un usuario que tiene la sesión iniciada.
User7
F. Usar USER_NAME en la cláusula WHERE
En el siguiente ejemplo se busca la fila en sysusers
en la que el nombre sea igual al resultado de aplicar la función del sistema USER_NAME
al número de identificador de usuario 1
.
SELECT name FROM sysusers WHERE name = USER_NAME(1);
Este es el conjunto de resultados.
name
------------------------------
User7
Contenido relacionado
- SUSER_NAME (Transact-SQL)
- SUSER_SNAME (Transact-SQL)
- ALTER TABLE (Transact-SQL)
- CREATE TABLE (Transact-SQL)
- CURRENT_TIMESTAMP (Transact-SQL)
- CURRENT_USER (Transact-SQL)
- SESSION_USER (Transact-SQL)
- Funciones del sistema (Transact-SQL)
- SYSTEM_USER (Transact-SQL)
- sys.database_principals (Transact-SQL).