SUSER_SID (Transact-SQL)

Renvoie le numéro d'identification de sécurité (SID) correspondant au nom de connexion spécifié.

Icône Lien de rubriqueConventions de syntaxe Transact-SQL

Syntaxe

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

Arguments

  • 'login'
    Nom de connexion de l'utilisateur. login est du type sysname. Cet argument facultatif login peut correspondre à une connexion SQL Server ou à un groupe ou utilisateur Microsoft Windows. Si login n'est pas spécifié, des informations sur le contexte de sécurité actuel sont retournées. S'il contient le mot NULL, la valeur NULL est retournée.

  • Param2
    Spécifie si le nom de connexion est validé. Param2 est de type int et est facultatif. Lorsque Param2 a la valeur 0, le nom de connexion n'est pas validé. Lorsque Param2 n'est pas spécifié avec la valeur 0, une vérification est effectuée pour s'assurer que le nom de connexion Windows est exactement le même que le nom de connexion stocké dans SQL Server.

Types de retour

varbinary(85)

Notes

La fonction SUSER_SID peut être utilisée comme une contrainte DEFAULT dans les fonctions ALTER TABLE ou CREATE TABLE. SUSER_SID peut être utilisé dans la liste SELECT, dans une clause WHERE, et partout où une expression est autorisée. SUSER_SID doit toujours être suivi de parenthèses, même si aucun paramètre n'est spécifié.

Lorsque la procédure SUSER_SID est appelée sans argument, elle renvoie l'ID de sécurité (SID) du contexte de sécurité actuel. Lorsqu'elle est appelée sans argument dans un lot qui a changé le contexte à l'aide de l'instruction EXECUTE AS, elle retourne le SID du contexte dont l'identité a été empruntée. Lorsqu'elle est appelée à partir d'un contexte faisant l'objet d'un emprunt d'identité, SUSER_SID(ORIGINAL_LOGIN()) retourne le SID du contexte d'origine.

Lorsque le classement SQL Server et le classement Windows sont différents, SUSER_SID peut échouer lorsque SQL Server et Windows stockent la connexion dans un format différent. Par exemple, si l'ordinateur Windows TestComputer a la connexion User et que SQL Server stocke la connexion sous la forme TESTCOMPUTER\User, la recherche de la connexion TestComputer\User peut ne pas réussir à résoudre correctement le nom de connexion. Pour ignorer cette validation du nom de connexion, utilisez Param2. Des classements différents sont souvent à l'origine de l'erreur SQL Server 15401 :

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

Exemples

A. Utilisation de SUSER_SID

L'exemple suivant retourne le numéro d'identification de sécurité de la connexion SQL Serversa.

SELECT SUSER_SID('sa');
GO

B. Utilisation de SUSER_SID avec un nom d'utilisateur Windows

L'exemple suivant renvoie le numéro d'identification de sécurité du London\Workstation1 de l'utilisateur Windows.

SELECT SUSER_SID('London\Workstation1');
GO

C. Utilisation de SUSER_SID comme contrainte DEFAULT

L'exemple suivant utilise SUSER_SID comme contrainte DEFAULT dans une instruction CREATE TABLE.

USE AdventureWorks2008R2;
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. Comparaison du nom de connexion Windows et du nom de connexion stocké dans SQL Server

L'exemple suivant montre comment utiliser Param2 pour obtenir le SID de Windows et utilise ce SID comme entrée de la fonction SUSER_SNAME. Il indique la connexion au format dans lequel elle est stockée dans Windows (TestComputer\User), et retourne la connexion au format dans lequel elle est stockée dans SQL Server (TESTCOMPUTER\User).

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