SUSER_SID (Transact-SQL)
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance
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 '
S’applique à : SQL Server 2008 (10.0.x) et versions ultérieures
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
S’applique à : SQL Server 2012 (11.x) et ultérieur
Indique 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)
Remarques
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.
Azure SQL Database Notes
SUSER_SID retourne toujours le SID de connexion pour le contexte de sécurité actuel. Utilisez sys.database_principals pour obtenir le SID d’une autre connexion.
L’instruction SUSER_SID ne prend pas en charge l’exécution avec un contexte de sécurité représenté par la clause EXECUTE AS.
Exemples
R. Utilisation de SUSER_SID
L’exemple suivant retourne le numéro d’identification de sécurité (SID) du contexte de sécurité actuel.
SELECT SUSER_SID();
B. Utilisation de SUSER_SID avec une connexion spécifique
L’exemple suivant retourne le numéro d’identification de sécurité du compte de connexion SQL Server sa
.
S’applique à : SQL Server 2012 (11.x) et ultérieur
SELECT SUSER_SID('sa');
GO
C. 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.
S’applique à : SQL Server 2012 (11.x) et ultérieur
SELECT SUSER_SID('London\Workstation1');
GO
D. Utilisation de SUSER_SID comme contrainte DEFAULT
L'exemple suivant utilise SUSER_SID
comme contrainte DEFAULT
dans une instruction 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. 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
).
S’applique à : SQL Server 2012 (11.x) et ultérieur
SELECT SUSER_SNAME(SUSER_SID('TestComputer\User', 0));
Voir aussi
ORIGINAL_LOGIN (Transact-SQL)
CREATE TABLE (Transact-SQL)
binary et varbinary (Transact-SQL)
Fonctions système (Transact-SQL)