Compartir a través de


SUSER_SID (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseInstancia administrada de Azure SQLBase de datos SQL en Microsoft Fabric

Devuelve el número de identificación de seguridad (SID) que corresponde al nombre de inicio de sesión especificado.

Convenciones de sintaxis de Transact-SQL

Sintaxis

SUSER_SID ( [ 'login' ] [ , Param2 ] )

Argumentos

'* iniciar sesión *'

Se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores

Nombre de inicio de sesión del usuario. login es sysname. login, que es opcional, puede ser un inicio de sesión de SQL Server o un usuario o un grupo de Microsoft Windows. Si no se especifica login, se devuelve información sobre el contexto de seguridad actual. Si el parámetro contiene NULL, SUSER_SID devuelve NULL.

Param2

Se aplica a: SQL Server 2012 (11.x) y versiones posteriores

Especifica si se valida el nombre de inicio de sesión. Param2 es de tipo int y es opcional. Cuando Param2 es 0, no se valida el nombre de inicio de sesión. Cuando Param2 no se especifica como 0, se comprueba el nombre de inicio de sesión de Windows para ver si coincide exactamente con el nombre de inicio de sesión almacenado en SQL Server.

Tipos de retorno

varbinary(85)

Observaciones

SUSER_SID se puede usar como restricción DEFAULT en ALTER TABLE o CREATE TABLE. SUSER_SID se puede usar en una lista de selección, en una WHERE cláusula y en cualquier lugar donde se permita una expresión. SUSER_SID siempre debe ir seguido de paréntesis, incluso si no se especifica ningún parámetro.

Cuando se llama sin un argumento, SUSER_SID devuelve el SID del contexto de seguridad actual. Cuando se llama sin un argumento dentro de un lote que ha cambiado de contexto mediante EXECUTE AS, SUSER_SID devuelve el SID del contexto suplantado. Cuando se llama desde un contexto suplantado, SUSER_SID(ORIGINAL_LOGIN()) devuelve el SID del contexto original.

Cuando la intercalación de SQL Server y la intercalación de Windows son diferentes, SUSER_SID se puede producir un error cuando SQL Server y Windows almacenan el inicio de sesión en un formato diferente. Por ejemplo, si el equipo TestComputer Windows tiene el inicio de sesión User y SQL Server almacena el inicio de sesión como TESTCOMPUTER\User, la búsqueda del inicio de sesión TestComputer\User podría no resolver el nombre de inicio de sesión correctamente. Para omitir esta validación del nombre de inicio de sesión, use Param2. Las intercalaciones diferentes suelen ser una causa del error 15401 de SQL Server: Windows NT user or group '%s' not found. Check the name again.

Comentarios de Azure SQL Database, SQL Database en Fabric

SUSER_SID siempre devuelve el SID de inicio de sesión para el contexto de seguridad actual. Use sys.database_principals para obtener el SID de otro inicio de sesión.

La SUSER_SID instrucción no admite la ejecución mediante un contexto de seguridad suplantado a través de EXECUTE AS.

Ejemplos

A. Uso de SUSER_SID

En el ejemplo siguiente se devuelve el número de identificación de seguridad (SID) del contexto de seguridad actual.

SELECT SUSER_SID();

B. Uso de SUSER_SID con un inicio de sesión específico

Se aplica a: SQL Server 2012 (11.x) y versiones posteriores

En el ejemplo siguiente se devuelve el número de identificación de seguridad del inicio de sesión sa de SQL Server.

SELECT SUSER_SID('sa');
GO

C. Usar SUSER_SID con un nombre de usuario de Windows

Se aplica a: SQL Server 2012 (11.x) y versiones posteriores

En el ejemplo siguiente se devuelve el número de identificación de seguridad del usuario de Windows London\Workstation1.

SELECT SUSER_SID('London\Workstation1');
GO

D. Uso de SUSER_SID como restricción DEFAULT

En el ejemplo siguiente se utiliza SUSER_SID como restricción DEFAULT en una instrucción CREATE TABLE.

USE AdventureWorks2022;
GO
CREATE TABLE sid_example
(
login_sid   VARBINARY(85) DEFAULT SUSER_SID(),
login_name  VARCHAR(30) DEFAULT SYSTEM_USER,
login_dept  VARCHAR(10) DEFAULT 'SALES',
login_date  DATETIME DEFAULT GETDATE()
);  
GO
INSERT sid_example DEFAULT VALUES;
GO

E. Comparar el nombre de inicio de sesión de Windows con el nombre de inicio de sesión almacenado en SQL Server

Se aplica a: SQL Server 2012 (11.x) y versiones posteriores

En el ejemplo siguiente se muestra cómo se usa Param2 para obtener el SID de Windows y se utiliza ese SID como entrada para la función SUSER_SNAME. En el ejemplo se proporciona el inicio de sesión en el formato en que se almacena en Windows (TestComputer\User) y se devuelve en el formato en que se almacena en SQL Server (TESTCOMPUTER\User.

SELECT SUSER_SNAME(SUSER_SID('TestComputer\User', 0));