Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Как узнать имя пользователя и машины, соединившегося через SQL Login?  [new]
MrVoid
Member

Откуда:
Сообщений: 333
Субж, собственно. :)
21 ноя 15, 18:00    [18452501]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать имя пользователя и машины, соединившегося через SQL Login?  [new]
имя пользователя и машины
Guest
MrVoid,

sysprocesses
21 ноя 15, 18:03    [18452508]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать имя пользователя и машины, соединившегося через SQL Login?  [new]
MrVoid
Member

Откуда:
Сообщений: 333
имя пользователя и машины,
А поподробнее можно, будьте любезны. :D
21 ноя 15, 18:04    [18452513]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать имя пользователя и машины, соединившегося через SQL Login?  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1456
MrVoid,

select loginame, hostname from sys.sysprocesses
21 ноя 15, 18:12    [18452532]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать имя пользователя и машины, соединившегося через SQL Login?  [new]
имя пользователя и машины
Guest
MrVoid
имя пользователя и машины,
А поподробнее можно, будьте любезны. :D

я так понимаю, селекты вы писать не умеете, соответственно вопросы:
- что вы называете "через sql login"
- как вы планировали это делать? с помощью чего? где вы находитесь и пытаетесь это узнать?
- нужно про текущее соединение узнать или про другого пользователя?
- вы имеете доступ к серверу к которому кто-то якобы подключился?
21 ноя 15, 18:13    [18452535]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать имя пользователя и машины, соединившегося через SQL Login?  [new]
MrVoid
Member

Откуда:
Сообщений: 333
имя пользователя и машины,

Человек коннектится не через доменное имя (домена нет - только локалка), а через SQL Login.
Собственно, моё "поподробней" подразумевало, что sysprocesses не вернёт мне имя юзера и машину, поэтому и попросил "поподробнее".
21 ноя 15, 18:17    [18452550]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать имя пользователя и машины, соединившегося через SQL Login?  [new]
имя пользователя и машины
Guest
MrVoid
имя пользователя и машины,

Человек коннектится не через доменное имя (домена нет - только локалка), а через SQL Login.
Собственно, моё "поподробней" подразумевало, что sysprocesses не вернёт мне имя юзера и машину, поэтому и попросил "поподробнее".

в смысле вы уже написали селект и он уже не вернул?
21 ноя 15, 18:22    [18452567]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать имя пользователя и машины, соединившегося через SQL Login?  [new]
MrVoid
Member

Откуда:
Сообщений: 333
имя пользователя и машины,

SELECT * FROM sys.dm_exec_sessions WHERE session_id = @@SPID;
SELECT * FROM FROM sys.sysprocesses;


Оба поля nt_domain и nt_username - пустые.
Вы точно понимаете, что речь идёт об SQL Server Authentication Mode?
21 ноя 15, 18:30    [18452590]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать имя пользователя и машины, соединившегося через SQL Login?  [new]
имя пользователя и машины
Guest
MrVoid
имя пользователя и машины,

SELECT * FROM sys.dm_exec_sessions WHERE session_id = @@SPID;
SELECT * FROM FROM sys.sysprocesses;


Оба поля nt_domain и nt_username - пустые.
Вы точно понимаете, что речь идёт об SQL Server Authentication Mode?

а откуда в этих полях могут взяться значения если авторизация не виндовая?
вам домен пользователя или компьютер пользователя?
там два поля что ли? других нет?
21 ноя 15, 18:34    [18452610]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать имя пользователя и машины, соединившегося через SQL Login?  [new]
MrVoid
Member

Откуда:
Сообщений: 333
имя пользователя и машины,

Да, о чём и речь - возможно ли при невиндовой аутентификации узнать имя юзера и машины.
Если это зарыто в sysprocesses, то подскажите, где копать? :)
21 ноя 15, 18:40    [18452641]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать имя пользователя и машины, соединившегося через SQL Login?  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1456
MrVoid,
+
доктор! Меня игнорируют.
Следующий!
21 ноя 15, 18:44    [18452655]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать имя пользователя и машины, соединившегося через SQL Login?  [new]
MrVoid
Member

Откуда:
Сообщений: 333
felix_ff
MrVoid,
+
доктор! Меня игнорируют.
Следующий!

Я, кажется, ниже написал, что это НЕ помогает. :)
loginname возвращает оригинальное имя SQL логина, а hostname, к сожалению, возвращает имя ХОСТА.
21 ноя 15, 18:48    [18452686]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать имя пользователя и машины, соединившегося через SQL Login?  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
MrVoid
Да, о чём и речь - возможно ли при невиндовой аутентификации узнать имя юзера и машины.
Возможно.
При соединении по Named Pipes, в sysprocesses, в столбцах nt_domain и nt_username будет искомое.
Для того, чтобы это работало вне домена, на клиентском и серверном компьютере должны быть заведены одноименные и однопарольные Windows-пользователи.
21 ноя 15, 18:51    [18452698]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать имя пользователя и машины, соединившегося через SQL Login?  [new]
MrVoid
Member

Откуда:
Сообщений: 333
invm,

Я немного не понял. Можно пояснить поподробнее?
Поясню, что конкретнее я хочу. Есть 20 юзеров в локалке (соответсвенно, домена нет - иначе я бы и не задавал вопрос ).
5 из них будут полноценные db_owner, а остальным 15-ти немного прав надо поурезать.
Чтобы не плодить 20 юзеров, я хотел бы иметь две невиндовые учётки - для каждой группы. Всё бы ничего, но для лога нужно знать, какой именно юзер что-то сделал. Как я увидел, sysprocesses не подходит (как и dm_exec_sessions).
Можно поподробнее про одноимённые учётки и Named Pipes? Они связаны между собой?
Повоторюсь - хотелось бы уйти от 20-ти учёток.
21 ноя 15, 18:59    [18452740]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать имя пользователя и машины, соединившегося через SQL Login?  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1456
MrVoid,

вы не уточнили что именно вам надо и писали про поля
Оба поля nt_domain и nt_username - пустые.


при соединении с сиквелом вне домена в полях для sys.sysprocesses nt_hostname, nt_username будет пусто соответственно.

если вам вдруг необходимо получить NT-имя пользователя и имя хоста клиента при аутенфикации через SQL Authentication
когда пользователи подключаются через протокол TCP/IP к серверу к примеру, то прямой привязки между Windows-логин и sql server login как таковой нет

можно покопаться с WMI но гарантий никто не дает что вы стопроцентно получите верные данные, там необходимы соотвествующие права для просмотра информации других машин в сети


вопрос кстати не нов:
http://stackoverflow.com/questions/648166/how-to-get-windows-log-in-user-name-for-a-sql-log-in-user
21 ноя 15, 19:04    [18452764]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать имя пользователя и машины, соединившегося через SQL Login?  [new]
MrVoid
Member

Откуда:
Сообщений: 333
felix_ff,

Спасибо за наводку! :)
Вот что интересное я прочитал там:
автор
If this is a custom application, you could include that information in the Connection string as Application Name perhaps.
21 ноя 15, 19:08    [18452781]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать имя пользователя и машины, соединившегося через SQL Login?  [new]
MrVoid
Member

Откуда:
Сообщений: 333
felix_ff,

Теперь вопрос - как дёрнуть этот Application Name? :)
21 ноя 15, 19:09    [18452783]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать имя пользователя и машины, соединившегося через SQL Login?  [new]
MrVoid
Member

Откуда:
Сообщений: 333
Ответ нашёл здесь.
SELECT APP_NAME()
21 ноя 15, 19:13    [18452798]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать имя пользователя и машины, соединившегося через SQL Login?  [new]
MrVoid
Member

Откуда:
Сообщений: 333
В общем, пихаем в строку соединения:
var conn = new SqlConnection($@"Server=JUNGLE\SQL2005;Database=Orders;User Id=DbUser;Password=dbuser;Application Name={User.ComputerName}\{User.Name};");

А потом через "SELECT APP_NAME()" достаём эту строчку.
Большое спасибо всем за помощь и особенно felix_ff! :)
21 ноя 15, 19:17    [18452820]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать имя пользователя и машины, соединившегося через SQL Login?  [new]
имя пользователя и машины
Guest
MrVoid,

уходить нужно от 2000 учеток
от 20 не нужно никуда уходить
2 роли + нужное число логинов
свое на каждого участника, которые, как я понимаю, не пользователи приложения, а разработчики или вроде того (раз db_owner'ы)
21 ноя 15, 19:25    [18452864]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать имя пользователя и машины, соединившегося через SQL Login?  [new]
MrVoid
Member

Откуда:
Сообщений: 333
имя пользователя и машины,

Всё бы ничего, но только это SQL Server 2005 - и там, если не ошибаюсь, нельзя создать свои роли (которые появились в SQL Server 2012). Можно юзать только предустановленные роли - и с ними ничего не сделаешь. Поправьте, если не прав.
21 ноя 15, 19:28    [18452888]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать имя пользователя и машины, соединившегося через SQL Login?  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1456
MrVoid,

не правы, роли базы данных можно создавать начиная с 2005 выпуска
21 ноя 15, 19:33    [18452908]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать имя пользователя и машины, соединившегося через SQL Login?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
felix_ff
MrVoid,

не правы, роли базы данных можно создавать начиная с 2005 выпуска
Чо эта? Еще в 2000м были роли.
21 ноя 15, 19:39    [18452933]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать имя пользователя и машины, соединившегося через SQL Login?  [new]
имя пользователя и машины
Guest
может я чего путаю но вроде вопрос "появления в новых версиях" - это про кастомные роли сервера

а роли в базах вроде и в 2000 были.
21 ноя 15, 19:40    [18452934]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать имя пользователя и машины, соединившегося через SQL Login?  [new]
MrVoid
Member

Откуда:
Сообщений: 333
имя пользователя и машины, Гавриленко Сергей Алексеевич

Да, это SQL Server Roles - c SQL Server 2012. Перепутал. :)
Всё успешно получилось! Всем спасибо! :)
21 ноя 15, 19:59    [18452967]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить