Partilhar via


SUSER_SID (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure

Retorna o SID (número de identificação de segurança) para o nome de logon especificado.

Convenções de sintaxe de Transact-SQL

Sintaxe

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

Argumentos

' login '
Aplica-se a: SQL Server 2008 (10.0.x) e posterior

É o nome de logon do usuário. login é sysname. login, que é opcional, pode ser um logon do SQL Server ou um usuário ou grupo do Microsoft Windows. Se login não for especificado, serão retornadas informações sobre o contexto de segurança atual. Se o parâmetro contiver a palavra NULL, retornará NULL.

Param2
Aplica-se a: SQL Server 2012 (11.x) e posterior

Especifica se o nome de logon é validado. Param2 é do tipo int e é opcional. Quando Param2 for 0, o nome de logon não será validado. QuandoParam2 não estiver especificado como 0, será verificado se o nome de logon do Windows é exatamente igual ao nome de logon armazenado no SQL Server.

Tipos de retorno

varbinary(85)

Comentários

SUSER_SID pode ser usado como uma restrição DEFAULT em ALTER TABLE ou CREATE TABLE. SUSER_ID pode ser usado em uma lista de seleção, em uma cláusula WHERE ou em qualquer local em que uma expressão seja permitida. SUSER_SID deve sempre ser seguido de parênteses, mesmo que nenhum parâmetro seja especificado.

Quando chamado sem um argumento, SUSER_SID retorna o SID do contexto de segurança atual. Quando chamado sem um argumento em um lote que alternou o contexto usando EXECUTE AS, SUSER_SID retorna o SID do contexto representado. Quando chamado de um contexto representado, SUSER_SID(ORIGINAL_LOGIN()) retorna o SID contexto original.

No caso de a ordenação do SQL Server e a ordenação do Windows serem diferentes, SUSER_SID poderá falhar quando o SQL Server e o Windows armazenarem o logon em um formato diferente. Por exemplo, se o computador do Windows TestComputer tiver o logon User e o SQL Server armazenar o logon como TESTCOMPUTER\User, a pesquisa do logon TestComputer\User poderá não resolver o nome de logon corretamente. Para ignorar essa validação do nome de logon, use Param2. Ordenações diferentes são geralmente uma causa do erro 15401 do SQL Server:

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

Banco de Dados SQL do Azure Comentários

SUSER_SID sempre retorna o SID de logon para o contexto de segurança atual. Use sys.database_principals para obter o SID de um logon diferente.

A instrução SUSER_SID não oferece suporte à execução usando um contexto de segurança representado por meio de EXECUTE AS.

Exemplos

a. Usando SUSER_SID

O exemplo a seguir retorna o SID (número de identificação de segurança) para o contexto de segurança atual.

SELECT SUSER_SID();  

B. Usando SUSER_SID com um logon específico

O exemplo a seguir retorna o número de identificação de segurança para o logon SQL Server sa.

Aplica-se a: SQL Server 2012 (11.x) e posterior

SELECT SUSER_SID('sa');  
GO  

C. Usando SUSER_SID com um nome de usuário do Windows

O exemplo a seguir retorna o número de identificação de segurança para o usuário do Windows London\Workstation1.

Aplica-se a: SQL Server 2012 (11.x) e posterior

SELECT SUSER_SID('London\Workstation1');  
GO  

D. Usando SUSER_SID como uma restrição DEFAULT

O exemplo a seguir usa SUSER_SID como uma restrição DEFAULT em uma instrução 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. Comparando o nome de logon do Windows ao nome de logon armazenado no SQL Server

O exemplo a seguir mostra como usar Param2 para obter o SID do Windows e usa esse SID como uma entrada para a função SUSER_SNAME. O exemplo fornece o logon no formato em que está armazenado no Windows (TestComputer\User) e o retorna no formato em que está armazenado no SQL Server (TESTCOMPUTER\User).

Aplica-se a: SQL Server 2012 (11.x) e posterior

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

Consulte Também

ORIGINAL_LOGIN (Transact-SQL)
CREATE TABLE (Transact-SQL)
binary e varbinary (Transact-SQL)
Funções de sistema (Transact-SQL)