다음을 통해 공유


SUSER_SID(Transact-SQL)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceMicrosoft Fabric의 SQL 데이터베이스

지정된 로그인 이름에 대한 SID(보안 ID)를 반환합니다.

Transact-SQL 구문 표기 규칙

구문

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

인수

'* 로그인 *'

적용 대상: SQL Server 2008(10.0.x) 이상 버전

사용자의 로그인 이름입니다. loginsysname입니다. login은 선택 사항이며 SQL Server 로그인이나 Microsoft Windows 사용자 또는 그룹일 수 있습니다. login을 지정하지 않은 경우에는 현재 보안 컨텍스트에 대한 정보가 반환됩니다. 매개 변수에 포함된 NULL경우 . SUSER_SIDNULL

Param2

적용 대상: SQL Server 2012(11.x) 이상 버전

로그인 이름의 유효성을 검사할지 여부를 지정합니다. Param2int 형식이며 선택 사항입니다. Param2가 0이면 로그인 이름의 유효성을 검사하지 않습니다. Param2가 0으로 지정되지 않으면 Windows 로그인 이름이 SQL Server에 저장된 로그인 이름과 정확하게 일치하는지 확인합니다.

반환 형식

varbinary(85)

설명

SUSER_SID또는 .에서 DEFAULTALTER TABLE제약 조건으로 CREATE TABLE 사용할 수 있습니다. SUSER_SID 는 선택 목록, WHERE 절 및 식이 허용되는 모든 위치에서 사용할 수 있습니다. SUSER_SID 매개 변수가 지정되지 않은 경우에도 항상 괄호 뒤에 괄호를 클릭하여야 합니다.

인수 없이 호출되면 SUSER_SID 현재 보안 컨텍스트의 SID를 반환합니다. 컨텍스트를 전환 EXECUTE ASSUSER_SID 한 일괄 처리 내에서 인수 없이 호출되는 경우 가장된 컨텍스트의 SID를 반환합니다. 가장된 컨텍스트에서 호출되면 원래 컨텍스트 SUSER_SID(ORIGINAL_LOGIN()) 의 SID를 반환합니다.

SQL Server 데이터 정렬과 Windows 데이터 정렬이 다른 SUSER_SID 경우 SQL Server와 Windows에서 로그인을 다른 형식으로 저장하면 실패할 수 있습니다. 예를 들어 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, Fabric의 SQL 데이터베이스에 대한 설명

SUSER_SID 항상 현재 보안 컨텍스트에 대한 로그인 SID를 반환합니다. 다른 로그인의 SID를 가져오려면 database_principals를 사용합니다.

이 문은 SUSER_SID .를 통해 EXECUTE AS가장된 보안 컨텍스트를 사용하는 실행을 지원하지 않습니다.

예제

A. SUSER_SID 사용

다음 예제에서는 현재 보안 컨텍스트에 대한 SID(보안 ID)를 반환합니다.

SELECT SUSER_SID();

B. 특정 로그인에 SUSER_SID 사용

적용 대상: SQL Server 2012(11.x) 이상 버전

다음 예제에서는 SQL Server sa 로그인의 보안 ID 번호를 반환합니다.

SELECT SUSER_SID('sa');
GO

C. Windows 사용자 이름으로 SUSER_SID 사용

적용 대상: SQL Server 2012(11.x) 이상 버전

다음 예에서는 Windows 사용자 London\Workstation1에 대한 보안 ID를 반환합니다.

SELECT SUSER_SID('London\Workstation1');
GO

D. DEFAULT 제약 조건으로 SUSER_SID 사용

다음 예에서는 SUSER_SIDDEFAULT 문의 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에 저장된 로그인 이름 비교

적용 대상: SQL Server 2012(11.x) 이상 버전

다음 예에서는 Param2를 사용하여 Windows에서 SID를 가져오는 방법을 보여 주고 해당 SID를 SUSER_SNAME 함수에 대한 입력으로 사용합니다. 이 예에서는 Windows에 저장된 형식으로 로그인을 제공하고(TestComputer\User), SQL Server에 저장된 형식으로 로그인을 반환합니다(TESTCOMPUTER\User).

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