SUSER_SID (Transact-SQL)SUSER_SID (Transact-SQL)

SE APLICA A: síSQL Server (a partir de 2008) síAzure SQL Database noAzure SQL Data Warehouse noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server (starting with 2008) yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Devuelve el número de identificación de seguridad (SID) que corresponde al nombre de inicio de sesión especificado.Returns the security identification number (SID) for the specified login name.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax

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

ArgumentosArguments

' login '' login '
Se aplica a: de SQL Server 2008SQL Server 2008 a SQL Server 2017SQL Server 2017Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017

Nombre de inicio de sesión del usuario.Is the login name of the user. login es sysname.login is sysname. login, que es opcional, puede ser un inicio de sesión de SQL ServerSQL Server o un usuario o un grupo de MicrosoftMicrosoft Windows.login, which is optional, can be a SQL ServerSQL Server login or MicrosoftMicrosoft Windows user or group. Si no se especifica login, se devuelve información sobre el contexto de seguridad actual.If login is not specified, information about the current security context is returned. Si el parámetro contiene la palabra NULL, se devolverá NULL.If the parameter contains the word NULL will return NULL.

Param2Param2
Se aplica a: de SQL Server 2012 (11.x)SQL Server 2012 (11.x) a SQL Server 2017SQL Server 2017Applies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017

Especifica si se valida el nombre de inicio de sesión.Specifies whether the login name is validated. Param2 es de tipo int y es opcional.Param2 is of type int and is optional. Cuando Param2 es 0, no se valida el nombre de inicio de sesión.When Param2 is 0, the login name is not validated. 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 ServerSQL Server.When Param2 is not specified as 0, the Windows login name is verified to be exactly the same as the login name stored in SQL ServerSQL Server.

Tipos devueltosReturn Types

varbinary(85)varbinary(85)

NotasRemarks

SUSER_SID puede utilizarse como una restricción DEFAULT en ALTER TABLE o CREATE TABLE.SUSER_SID can be used as a DEFAULT constraint in either ALTER TABLE or CREATE TABLE. Se puede utilizar SUSER_SID 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 can be used in a select list, in a WHERE clause, and anywhere an expression is allowed. SUSER_SID siempre debe ir seguido de paréntesis, aunque no se especifique ningún parámetro.SUSER_SID must always be followed by parentheses, even if no parameter is specified.

Cuando se llama sin ningún argumento, SUSER_SID devuelve el SID del contexto de seguridad actual.When called without an argument, SUSER_SID returns the SID of the current security context. 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.When called without an argument within a batch that has switched context by using EXECUTE AS, SUSER_SID returns the SID of the impersonated context. Si se llama desde un contexto suplantado, SUSER_SID(ORIGINAL_LOGIN()) devuelve el SID del contexto original.When called from an impersonated context, SUSER_SID(ORIGINAL_LOGIN()) returns the SID of the original context.

Cuando la intercalación de SQL ServerSQL Server y la intercalación de Windows son diferentes, SUSER_SID puede producir un error cuando SQL ServerSQL Server y Windows almacenan el inicio de sesión en un formato diferente.When the SQL ServerSQL Server collation and the Windows collation are different, SUSER_SID can fail when SQL ServerSQL Server and Windows store the login in a different format. Por ejemplo, si el equipo con Windows TestComputer tiene el inicio de sesión User y SQL ServerSQL 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.For example, if the Windows computer TestComputer has the login User and SQL ServerSQL Server stores the login as TESTCOMPUTER\User, the lookup of the login TestComputer\User might fail to resolve the login name correctly. Para omitir esta validación del nombre de inicio de sesión, use Param2.To skip this validation of the login name, use Param2. Las distintas intercalaciones a menudo son una causa del error 15401 de SQL ServerSQL Server:Differing collations is often a cause of SQL ServerSQL Server error 15401:

Windows NT user or group '%s' not found. Check the name again.

EjemplosExamples

A.A. Usar SUSER_SIDUsing SUSER_SID

En el ejemplo siguiente se devuelve el número de identificación de seguridad (SID) del contexto de seguridad actual.The following example returns the security identification number (SID) for the current security context.

SELECT SUSER_SID();  

B.B. Utilizar SUSER_SID con un inicio de sesión específicoUsing SUSER_SID with a specific login

En el ejemplo siguiente se devuelve el número de identificación de seguridad del inicio de sesión sa de SQL ServerSQL Server.The following example returns the security identification number for the SQL ServerSQL Server sa login.

Se aplica a: de SQL Server 2012 (11.x)SQL Server 2012 (11.x) a SQL Server 2017SQL Server 2017Applies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017

SELECT SUSER_SID('sa');  
GO  

C.C. Usar SUSER_SID con un nombre de usuario de WindowsUsing SUSER_SID with a Windows user name

En el ejemplo siguiente se devuelve el número de identificación de seguridad del usuario de Windows London\Workstation1.The following example returns the security identification number for the Windows user London\Workstation1.

Se aplica a: de SQL Server 2012 (11.x)SQL Server 2012 (11.x) a SQL Server 2017SQL Server 2017Applies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017

SELECT SUSER_SID('London\Workstation1');  
GO  

D.D. Usar SUSER_SID como una restricción DEFAULTUsing SUSER_SID as a DEFAULT constraint

En el ejemplo siguiente se utiliza SUSER_SID como restricción DEFAULT en una instrucción CREATE TABLE.The following example uses SUSER_SID as a DEFAULT constraint in a CREATE TABLE statement.

USE AdventureWorks2012;  
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.E. Comparar el nombre de inicio de sesión de Windows con el nombre de inicio de sesión almacenado en SQL ServerComparing the Windows login name to the login name stored in 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.The following example shows how to use Param2 to obtain the SID from Windows and uses that SID as an input to the SUSER_SNAME function. 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 ServerSQL Server (TESTCOMPUTER\User.The example provides the login in the format in which it is stored in Windows (TestComputer\User), and returns the login in the format in which it is stored in SQL ServerSQL Server (TESTCOMPUTER\User).

Se aplica a: de SQL Server 2012 (11.x)SQL Server 2012 (11.x) a SQL Server 2017SQL Server 2017Applies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017

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

Consulte tambiénSee Also

ORIGINAL_LOGIN (Transact-SQL) ORIGINAL_LOGIN (Transact-SQL)
CREATE TABLE (Transact-SQL) CREATE TABLE (Transact-SQL)
binary y varbinary (Transact-SQL) binary and varbinary (Transact-SQL)
Funciones del sistema (Transact-SQL)System Functions (Transact-SQL)