SUSER_SID (Transact-SQL)
Renvoie le numéro d'identification de sécurité (SID) correspondant au nom de connexion spécifié.
Conventions de la syntaxe Transact-SQL
Syntaxe
SUSER_SID ( [ 'login' ] [ , Param2 ] )
Arguments
'login'
Nom de connexion de l'utilisateur. login est de 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. Si le paramètre contient le mot NULL, retourne NULL.Param2
Indique si le nom de connexion est validé. Param2 est facultatif et de type int. 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 un compte de connexion User et que SQL Server stocke le compte de connexion sous la forme TESTCOMPUTER\User, la recherche du compte de connexion TestComputer\User peut ne pas réussir à résoudre correctement le nom du compte de connexion. Pour ignorer cette validation du nom de connexion, utilisez Param2. Des classements différents sont souvent à l'origine de l'erreur 15401 SQL Server :
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é du compte de connexion SQL Server sa.
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 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
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));