Поделиться через


SUSER_SNAME (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure конечной точке аналитики платформы Аналитики Azure Synapse Analytics (PDW) в Microsoft Fabric Хранилище в Microsoft Fabric

Возвращает имя входа, связанное с идентификатором безопасности (SID).

Соглашения о синтаксисе Transact-SQL

Синтаксис

SUSER_SNAME ( [ server_user_sid ] )

Аргументы

server_user_sid

Необязательный идентификационный номер безопасности для входа. Аргумент server_user_sid имеет тип varbinary(85). server_user_sid может быть идентификатором безопасности любого пользователя или группы SQL Server. Обратитесь к столбцу sid в sys.server_principals представлениях каталога или sys.sql_logins столбца. Если server_user_sid не указан, возвращается информация о текущем пользователе. Если параметр содержит слово NULL, SUSER_SNAME возвращается NULL.

server_user_sid не поддерживается в База данных SQL Azure.

Возвращаемый тип

nvarchar(128)

Замечания

SUSER_SNAME можно использовать в качестве ограничения DEFAULT в любом ALTER TABLE или CREATE TABLE. SUSER_SNAME можно использовать в списке выбора в предложении WHERE и в любом месте, где разрешено выражение. SUSER_SNAME всегда следует за скобками, даже если параметр не указан.

При вызове без аргумента SUSER_SNAME возвращает имя текущего контекста безопасности. При вызове без аргумента в пакете, который переключил контекст с помощью EXECUTE AS, SUSER_SNAME возвращает имя олицетворенного контекста. При вызове из олицетворенного контекста ORIGINAL_LOGIN возвращает имя исходного контекста.

База данных SQL Azure примечания

SUSER_SNAME всегда возвращает имя входа для текущего контекста безопасности.

Инструкция SUSER_SNAME не поддерживает выполнение с использованием олицетворенного контекста безопасности через EXECUTE AS.

SUSER_SNAME не поддерживает аргумент server_user_id .

Примеры

А. Использование SUSER_SNAME

В следующем примере возвращается имя входа для текущего контекста безопасности.

SELECT SUSER_SNAME();
GO

B. Использование SUSER_SNAME с идентификатором безопасности пользователя Windows

Следующий пример возвращает имя входа, связанное с номером идентификатора безопасности Windows.

SELECT SUSER_SNAME(0x010500000000000515000000a065cf7e784b9b5fe77c87705a2e0000);
GO

В. Использование SUSER_SNAME в качестве ограничения DEFAULT

В следующем примере в инструкции CREATE TABLE используется SUSER_SNAME ограничение DEFAULT.

USE AdventureWorks2022;
GO

CREATE TABLE sname_example (
    login_sname SYSNAME DEFAULT SUSER_SNAME(),
    employee_id UNIQUEIDENTIFIER DEFAULT NEWID(),
    login_date DATETIME DEFAULT GETDATE()
    );
GO

INSERT sname_example DEFAULT
VALUES;
GO

D. Вызов SUSER_SNAME в сочетании с EXECUTE AS

В этом примере показано поведение SUSER_SNAME при вызове из олицетворенного контекста.

SELECT SUSER_SNAME();
GO

EXECUTE AS LOGIN = 'WanidaBenShoof';
SELECT SUSER_SNAME();

REVERT;
GO

SELECT SUSER_SNAME();
GO

Вот результат.

sa
WanidaBenShoof
sa

Примеры: Azure Synapse Analytics и система платформы аналитики (PDW)

Е. Использование SUSER_SNAME

Следующий пример возвращает имя входа для номера идентификатора безопасности со значением 0x01.

SELECT SUSER_SNAME(0x01);
GO

F. Возврат текущего имени входа

В приведенном ниже примере возвращается текущее имя для входа.

SELECT SUSER_SNAME() AS CurrentLogin;
GO