USER (Transact-SQL)

Aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistema de Plataforma de Analítica (PDW)Base de datos SQL en Microsoft Fabric

Permite insertar en una tabla un valor proporcionado por el sistema para el nombre de usuario actual de la base de datos cuando no se especifica ningún valor predeterminado.

Convenciones de sintaxis de Transact-SQL

Sintaxis

USER  

Tipos de valor devuelto

nvarchar(128)

Comentarios

USER proporciona la misma funcionalidad que la función del sistema USER_NAME.

Úsalo USER con DEFAULT restricciones en las CREATE TABLE sentencias o ALTER TABLE , o úsalo como cualquier función estándar.

USER siempre devuelve el nombre del contexto actual. Cuando se llama después de una EXECUTE AS sentencia, USER devuelve el nombre del contexto suplantado.

Si un principal de Windows accede a la base de datos mediante la pertenencia a un grupo, USER devuelve el nombre del principal de Windows en lugar del nombre del grupo.

Ejemplos

A. Usando USER para devolver el nombre de usuario de la base de datos

El siguiente ejemplo declara una variable como char, le asigna el valor actual de USER y luego imprime la variable con una descripción de texto.

DECLARE @usr CHAR(30)  
SET @usr = user  
SELECT 'The current user''s database username is: '+ @usr  
GO  

Este es el conjunto de resultados.

-----------------------------------------------------------------------  
The current user's database username is: dbo  
 
(1 row(s) affected)

B. Uso USER con DEFAULT restricciones

En el siguiente ejemplo se crea una tabla que usa USER como una restricción DEFAULT para el vendedor de una fila de ventas.

USE AdventureWorks2022;  
GO  
CREATE TABLE inventory22  
(  
 part_id INT IDENTITY(100, 1) NOT NULL,  
 description VARCHAR(30) NOT NULL,  
 entry_person VARCHAR(30) NOT NULL DEFAULT USER   
)  
GO  
INSERT inventory22 (description)  
VALUES ('Red pencil')  
INSERT inventory22 (description)  
VALUES ('Blue pencil')  
INSERT inventory22 (description)  
VALUES ('Green pencil')  
INSERT inventory22 (description)  
VALUES ('Black pencil')  
INSERT inventory22 (description)  
VALUES ('Yellow pencil')  
GO  

Ésta es la consulta para seleccionar toda la información de la tabla inventory22:

SELECT * FROM inventory22 ORDER BY part_id;  
GO  

Este es el conjunto de resultados (observe el valor de entry-person):

part_id     description                    entry_person
----------- ------------------------------ -------------------------
100         Red pencil                     dbo
101         Blue pencil                    dbo
102         Green pencil                   dbo
103         Black pencil                   dbo
104         Yellow pencil                  dbo
 
(5 row(s) affected)

C. Usando USER en combinación con EXECUTE AS

En el siguiente ejemplo se muestra el comportamiento de USER cuando se llama en una sesión representada.

SELECT USER;  
GO  
EXECUTE AS USER = 'Mario';  
GO  
SELECT USER;  
GO  
REVERT;  
GO  
SELECT USER;  
GO  

Este es el conjunto de resultados.

DBO
Mario
DBO

Consulte también

ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
CURRENT_TIMESTAMP (Transact-SQL)
CURRENT_USER (Transact-SQL)
Funciones de seguridad (Transact-SQL)
SESSION_USER (Transact-SQL)
SYSTEM_USER (Transact-SQL)
USER_NAME (Transact-SQL)