Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Определить Windows-логин пользователя в T-SQL  [new]
VinMike
Member

Откуда:
Сообщений: 4
Очень интересует данный сабж. Программа подключается к серверу под одной и той же (application)-учетной записью(так нужно). А у пользователей программы Windows-логины разные. Можно ли в T-SQL определить имя Windows-логина?
Благодарен за любую информацию.
7 июн 03, 16:57    [224949]     Ответить | Цитировать Сообщить модератору
 Re: Определить Windows-логин пользователя в T-SQL  [new]
Call
Member

Откуда: SFBA
Сообщений: 481
Можно определить имя компьютера

select HOST_NAME ( )
7 июн 03, 17:45    [224966]     Ответить | Цитировать Сообщить модератору
 Re: Определить Windows-логин пользователя в T-SQL  [new]
ComeRun
Member

Откуда: Germany, Munich
Сообщений: 123
Программа подключается к серверу под одной и той же (application)-учетной записью(так нужно).

a pochemu by ej , to bish' programme , ne opredelit' samoj WindowsUserName i peredat' kuda tebe nado... Skazhem v kakuju nibud' table ?
8 июн 03, 12:35    [225112]     Ответить | Цитировать Сообщить модератору
 Re: Определить Windows-логин пользователя в T-SQL  [new]
Белов Владимир
Member

Откуда: Москва
Сообщений: 1716

select suser_sname()
select system_user
8 июн 03, 18:57    [225207]     Ответить | Цитировать Сообщить модератору
 Re: Определить Windows-логин пользователя в T-SQL  [new]
LexusR
Member

Откуда: Novosibirsk
Сообщений: 1873
после соединения клиентов с сервером (под одним и тем же SQL-логином)
программа запрашивает Windows-логины клиентов
средствами WinAPI и сохраняет их в контексте соединения :

DECLARE @Context varbinary(128)
DECLARE @UserData varchar(100)
SET @UserData = 'WinNT_User'
SET @Context = CAST(@UserData AS VARBINARY(128))
SET CONTEXT_INFO @Context

получить Windows-логины присоединенных к сереру клиентов
можно запросив все непустые контексты соединений :

select cast(context_info as varchar(100))
from master.dbo.sysprocesses
where cast(context_info as varchar(100))>''

или контексты конкретного логина , определенного для данной программы

select *, cast(context_info as varchar(100))
from master.dbo.sysprocesses
where cast(context_info as varchar(100))>''
where loginname = 'ProgrammLoginName'
9 июн 03, 06:31    [225276]     Ответить | Цитировать Сообщить модератору
 Re: Определить Windows-логин пользователя в T-SQL  [new]
LexusR
Member

Откуда: Novosibirsk
Сообщений: 1873
пардон по последнему блоку )

select *, cast(context_info as varchar(100))
from master.dbo.sysprocesses
where loginname = 'ProgrammLoginName'
9 июн 03, 06:33    [225277]     Ответить | Цитировать Сообщить модератору
 Re: Определить Windows-логин пользователя в T-SQL  [new]
Емельянов Константин
Member

Откуда: Николаев
Сообщений: 14
А чем не подходит напрямую взять данные из nt_username?

SELECT hostname, nt_domain, nt_username, program_name
FROM master.dbo.sysprocesses
конкретное подключение определяется:
where spid = @@spid
9 июн 03, 10:13    [225370]     Ответить | Цитировать Сообщить модератору
 Re: Определить Windows-логин пользователя в T-SQL  [new]
LexusR
Member

Откуда: Novosibirsk
Сообщений: 1873
2 Емельянов Константин

Если бы аутенфикация была на уровне NT-юзеров то естественно
можно сразу получить из sysprocess а если пользователь коннектится
как SQL- юзер то поля : nt_domain, nt_username
будут увы пустыми.
9 июн 03, 10:57    [225418]     Ответить | Цитировать Сообщить модератору
 Re: Определить Windows-логин пользователя в T-SQL  [new]
APM
Member

Откуда: Н.Тагил
Сообщений: 985
Я кстати тоже долго парился с подобными проблемами.
Решил что лучше всего действительно определять логин в приложении, ну например

Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpbuffer As String, nSize As Long) As Long

и передавать уже в SP.

Кстати грабли на которые наступил сам:

логин пользователя определяется если коннект по named pipes, по tcp/ip будет пустая строка...

Может и ошибаюсь, я (как и все) чайник косящий под графин...
9 июн 03, 13:05    [225613]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить