SUSER_SID (Transact-SQL)

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

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

  • 'login'
    Es el nombre de inicio del usuario. login es de tipo sysname. login, que es opcional, puede ser un inicio de sesión de SQL Server o un grupo o usuario de Microsoft Windows. Si no se especifica login, se devuelve información acerca del contexto de seguridad actual.

  • Param2
    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 valor devueltos

varbinary(85)

Notas

SUSER_SID puede utilizarse como una restricción DEFAULT en ALTER TABLE o CREATE TABLE. Se puede utilizar USER_ID en una lista de selección, en una cláusula WHERE y en cualquier lugar en el que se permita una expresión. SUSER_SID siempre debe ir seguido de paréntesis, aunque no se especifique ningún parámetro.

Cuando se llama sin ningún argumento, SUSER_SID devuelve el SID del contexto de seguridad actual. Cuando se llama sin ningún argumento en un lote que ha cambiado de contexto mediante EXECUTE AS, SUSER_SID devuelve el SID del contexto suplantado. Si 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 puede producir un error cuando SQL Server y Windows almacenan el inicio de sesión en un formato diferente. Por ejemplo, si el equipo con Windows TestComputer 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 puede que no resuelva el nombre de inicio de sesión correctamente. Para omitir esta validación del nombre de inicio de sesión, use Param2.

Ejemplos

A. Utilizar SUSER_SID

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

B. Utilizar SUSER_SID con un nombre de usuario de Windows

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

C. Utilizar SUSER_SID como una restricción DEFAULT

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

USE AdventureWorks;
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

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

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)) ;

Historial de cambios

Contenido actualizado

Se ha agregado Param2 a las secciones Sintaxis y Argumentos.