Как мне увидеть имя NTuser в триггере? - PullRequest
1 голос
/ 08 февраля 2012

SQL Server Profiler показывает NtUsername. Как мне увидеть имя NTuser в триггере?

Я не понимаю. SQL Server Profiler показывает имя пользователя Windows. SUSER_NAME, SUSER_SNAME ORIGINAL_LOGIN, USER, USER_NAME показывает имя пользователя учетной записи пользователя SQL. Я хочу то, что показывает Профилировщик. Должен быть способ, если профилировщик может это сделать.

Ответы [ 4 ]

1 голос
/ 08 февраля 2012

Вы используете SUSER_SNAME().Не SUSER_NAME().Обратите внимание, что дополнительные S

SUSER_NAME даст NULL для пользователя Windows, который подключается через группу Windows,потому что только в группе Windows есть запись в sys.server_principals

Примечания:

  • у вас есть SUSER_ID и SUSER_SID на уровне Экземпляр SQL Server , которые являются противоположными
  • на уровне база данных , у вас есть USER_NAME и DATABASE_PRINCIPAL_ID (USER_ID устарел)
  • У входа в SQL не будет значение ntusername в *Profiler, потому что он недоступен
1 голос
/ 08 февраля 2012

Так как я не мог найти, как получить NTUsername, я использовал HOST_NAME (), который дал мне имя компьютера пользователя.

SUSER_NAME, SUSER_SNAME, ORIGINAL_LOGIN, USER, USER_NAME все дали мне имя пользователя учетной записи SQL.

0 голосов
/ 28 сентября 2012

Похоже, что протокол, используемый в вашем случае, был NamedPipes.

  • если NTUserName не пустое и в LoginName у вас есть логин SQL - тогда это аутентификация SQL по именованным каналам

- см. http://sqlbg.wordpress.com/2011/05/28/how-to-check-what-sql-server-network-protocol-is-used-by-connections/

0 голосов
/ 08 февраля 2012

Между NTUserName нет никакой корреляции, если только логин не является аутентификационным логином Windows.Но поскольку suser_name() не возвращает то, что вы хотите, я предполагаю, что вы используете аутентификацию SQL Server.

В этом случае я не верю, что вы можете сделать это.

...