SUSER_SID(Transact-SQL)
적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance
지정된 로그인 이름에 대한 SID(보안 ID)를 반환합니다.
구문
SUSER_SID ( [ 'login' ] [ , Param2 ] )
인수
' login '
적용 대상: SQL Server 2008(10.0.x) 이상
사용자의 로그인 이름입니다. login은 sysname입니다. login은 선택 사항이며 SQL Server 로그인이나 Microsoft Windows 사용자 또는 그룹일 수 있습니다. login을 지정하지 않은 경우에는 현재 보안 컨텍스트에 대한 정보가 반환됩니다. 매개 변수에 NULL이라는 단어가 포함되어 있으면 NULL이 반환됩니다.
Param2
적용 대상: SQL Server 2012(11.x) 이상
로그인 이름의 유효성을 검사할지 여부를 지정합니다. Param2는 int 형식이며 선택 사항입니다. Param2가 0이면 로그인 이름의 유효성을 검사하지 않습니다. Param2가 0으로 지정되지 않으면 Windows 로그인 이름이 SQL Server에 저장된 로그인 이름과 정확하게 일치하는지 확인합니다.
반환 형식
varbinary(85)
설명
SUSER_SID는 ALTER TABLE 또는 CREATE TABLE에서 DEFAULT 제약 조건으로 사용할 수 있습니다. SUSER_SID는 선택 목록, WHERE 절 및 식이 사용되는 곳은 어디에나 사용될 수 있습니다. SUSER_SID는 매개 변수를 지정하지 않더라도 항상 뒤에 괄호를 필요로 합니다.
지정된 인수 없이 호출된 경우 SUSER_SID는 현재 보안 컨텍스트의 SID를 반환합니다. EXECUTE AS를 사용하여 컨텍스트를 전환하는 일괄 처리 내에서 지정된 인수 없이 호출된 경우 SUSER_SID는 가장된 컨텍스트의 SID를 반환합니다. 가장된 컨텍스트에서 호출된 경우 SUSER_SID(ORIGINAL_LOGIN())은 원래 컨텍스트의 SID를 반환합니다.
SQL Server 데이터 정렬과 Windows 데이터 정렬이 서로 다르면 SQL Server 및 Windows에서 로그인을 서로 다른 형식으로 저장할 때 SUSER_SID가 실패할 수 있습니다. 예를 들어 Windows 컴퓨터인 TestComputer의 로그인이 User이고 SQL Server에서 로그인을 TESTCOMPUTER\User로 저장하면 로그인 TestComputer\User 조회에서 로그인 이름을 올바르게 확인하지 못할 수 있습니다. 로그인 이름의 이 유효성 검사를 건너뛰려면 Param2를 사용합니다. 데이터 정렬이 서로 다르면 다음과 같은 SQL Server 오류 15401이 발생하는 경우가 많습니다.
Windows NT user or group '%s' not found. Check the name again.
Azure SQL Database 주의
SUSER_SID는 항상 현재 보안 컨텍스트의 로그인 SID를 반환합니다. 다른 로그인의 SID를 가져오려면 database_principals를 사용합니다.
SUSER_SID 문은 EXECUTE AS를 통해 가장된 보안 컨텍스트를 사용하는 실행을 지원하지 않습니다.
예제
A. SUSER_SID 사용
다음 예제에서는 현재 보안 컨텍스트에 대한 SID(보안 ID)를 반환합니다.
SELECT SUSER_SID();
B. 특정 로그인에 SUSER_SID 사용
다음 예제에서는 SQL Server sa
로그인의 보안 ID 번호를 반환합니다.
적용 대상: SQL Server 2012(11.x) 이상
SELECT SUSER_SID('sa');
GO
C. Windows 사용자 이름과 SUSER_SID 사용
다음 예에서는 Windows 사용자 London\Workstation1
에 대한 보안 ID를 반환합니다.
적용 대상: SQL Server 2012(11.x) 이상
SELECT SUSER_SID('London\Workstation1');
GO
D. SUSER_SID를 DEFAULT 제약 조건으로 사용
다음 예에서는 SUSER_SID
를 DEFAULT
문의 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. Windows 로그인 이름을 SQL Server에 저장된 로그인 이름과 비교
다음 예에서는 Param2를 사용하여 Windows에서 SID를 가져오는 방법을 보여 주고 해당 SID를 SUSER_SNAME
함수에 대한 입력으로 사용합니다. 이 예에서는 Windows에 저장된 형식으로 로그인을 제공하고(TestComputer\User
), SQL Server에 저장된 형식으로 로그인을 반환합니다(TESTCOMPUTER\User
).
적용 대상: SQL Server 2012(11.x) 이상
SELECT SUSER_SNAME(SUSER_SID('TestComputer\User', 0));
참고 항목
ORIGINAL_LOGIN(Transact-SQL)
CREATE TABLE(Transact-SQL)
binary 및 varbinary(Transact-SQL)
시스템 함수(Transact-SQL)