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

Откуда:
Сообщений: 1090
Как узнать логин серверный? Суть проблемы - в логинах группа AD, а SUSER_SNAME() возвращает учетку пользователя в этой группе. Мечтается вернуть некие данные в зависимости от от принадлежности к группе
13 сен 16, 15:09    [19659725]     Ответить | Цитировать Сообщить модератору
 Re: SUSER_SNAME()  [new]
komrad
Member

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

это ?

exec xp_logininfo 'AD account','all'
13 сен 16, 15:14    [19659770]     Ответить | Цитировать Сообщить модератору
 Re: SUSER_SNAME()  [new]
invm
Member

Откуда: Москва
Сообщений: 9824
sys.login_token
13 сен 16, 15:16    [19659788]     Ответить | Цитировать Сообщить модератору
 Re: SUSER_SNAME()  [new]
aleks2
Guest
waszkiewicz
Как узнать логин серверный? Суть проблемы - в логинах группа AD, а SUSER_SNAME() возвращает учетку пользователя в этой группе. Мечтается вернуть некие данные в зависимости от от принадлежности к группе

А кто те обещал иное?

ЗЫ. IS_MEMBER()
13 сен 16, 15:16    [19659792]     Ответить | Цитировать Сообщить модератору
 Re: SUSER_SNAME()  [new]
waszkiewicz
Member

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

не совсем. Это дело мечтается пользовать в запросах (что-то навроде горизонтального секционирования)
13 сен 16, 15:17    [19659795]     Ответить | Цитировать Сообщить модератору
 Re: SUSER_SNAME()  [new]
waszkiewicz
Member

Откуда:
Сообщений: 1090
waszkiewicz,
попробую объяснить
есть некая информационная система. На сервере есть N Logins (каждый из них - группа в AD, группы не пересекаются). В зависимости от группы в AD пользователям ИС по запросу выдаются свободные "внутренние логины" из БД. Понятно, что городить 100500 таблиц глупо. Посему вопрос - как сослаться на группу?
13 сен 16, 15:23    [19659857]     Ответить | Цитировать Сообщить модератору
 Re: SUSER_SNAME()  [new]
aleks2
Guest
waszkiewicz
waszkiewicz,
попробую объяснить
есть некая информационная система. На сервере есть N Logins (каждый из них - группа в AD, группы не пересекаются). В зависимости от группы в AD пользователям ИС по запросу выдаются свободные "внутренние логины" из БД. Понятно, что городить 100500 таблиц глупо. Посему вопрос - как сослаться на группу?


Жениться те, барин, надо.

ЗЗЫ. IS_MEMBER()
13 сен 16, 17:25    [19660615]     Ответить | Цитировать Сообщить модератору
 Re: SUSER_SNAME()  [new]
waszkiewicz
Member

Откуда:
Сообщений: 1090
aleks2,
городить кучу if? Как-то нерационально.
select l.login from logins l join logins p on l.parentid=p.id where p.login= -- во тут как получить название группы?
14 сен 16, 09:03    [19662208]     Ответить | Цитировать Сообщить модератору
 Re: SUSER_SNAME()  [new]
aleks2
Guest
waszkiewicz
aleks2,
городить кучу if? Как-то нерационально.
select l.login from logins l join logins p on l.parentid=p.id where p.login= -- во тут как получить название группы?


Никак.
Зато можно получить принадлежность пользователя конкретной группе.
А групп у тя, по опредлению, раз-два и обчелся.
И обработать это можно один раз.
Так што, не ленись - пиши if-ы.

ЗЫ. Если ты помедитируешь, ты поймешь, почему "низзя".
Пользователь может принадлежать двум и более группам - какую возвращать?
14 сен 16, 09:22    [19662276]     Ответить | Цитировать Сообщить модератору
 Re: SUSER_SNAME()  [new]
waszkiewicz
Member

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

с добавлением новой группы придется переписывать скрипт
А про несколько групп - я ж писал, составы групп не пересекаются
Я не совсем понимаю внутренних механизмов сиквела в плане виндовой авторизации, в противном случае вопроса не возникло бы
14 сен 16, 09:56    [19662431]     Ответить | Цитировать Сообщить модератору
 Re: SUSER_SNAME()  [new]
invm
Member

Откуда: Москва
Сообщений: 9824
waszkiewicz
городить кучу if? Как-то нерационально.
Кто не хочет думать, тот будет городить и плакаться как ему тяжело жить. А кто хочет, - заведет себе служебную таблицу с перечнем анализируемых групп и не будет ничего городить.
waszkiewicz
А про несколько групп - я ж писал, составы групп не пересекаютс
Посмотрите выборку из sys.login_token и узнаете во сколько же на самом деле групп входит ваш логин.
14 сен 16, 11:23    [19662913]     Ответить | Цитировать Сообщить модератору
 Re: SUSER_SNAME()  [new]
aleks2
Guest
waszkiewicz
aleks2,

1) с добавлением новой группы придется переписывать скрипт
2) А про несколько групп - я ж писал, составы групп не пересекаются
3) Я не совсем понимаю внутренних механизмов сиквела в плане виндовой авторизации, в противном случае вопроса не возникло бы


1. Заведи табличку.
2. "Если вы не отзоветесь - мы напишем в спортлото!". У тя может и не пересекаются, а у Windows могут пересекаться.
3. Все очень просто: проверяется только в одну сторону "принадлежит ли пользователь группе/роли?".
14 сен 16, 11:27    [19662950]     Ответить | Цитировать Сообщить модератору
 Re: SUSER_SNAME()  [new]
o-o
Guest
invm
Посмотрите выборку из sys.login_token и узнаете во сколько же на самом деле групп входит ваш логин.

он не для данного конкретного логина смотрит,
а хочет разом для всех.
т.е. чтобы ему собрать все группы для всех логинов,
надо все логины имперсонэйтить и выуженные группы куда-то складировать
---
только даже если это сохранить сейчас,
не факт, что информация будет актуальной через час.
потому ее сервер и не хранит нигде.
какое ему дело до *виндовых* групп, куда кто-то входит?
он свои группы с их составом хранит, и никак не виндовые с их составом.
инфо о принадлежности виндовой учетки таким-то виндовым группам
добывается в данный момент, когда товарищ залогинился,
из его виндового тикета.
при следующем логоне это может быть уже совсем другой список групп для того же самого логина,
при этом на уровне сервера не поменялось ничего,
ни байта не добавилось в системные таблицы.
все изменения произошли в AD
14 сен 16, 11:52    [19663123]     Ответить | Цитировать Сообщить модератору
 Re: SUSER_SNAME()  [new]
waszkiewicz
Member

Откуда:
Сообщений: 1090
invm
waszkiewicz
городить кучу if? Как-то нерационально.
Кто не хочет думать, тот будет городить и плакаться как ему тяжело жить. А кто хочет, - заведет себе служебную таблицу с перечнем анализируемых групп и не будет ничего городить.
waszkiewicz
А про несколько групп - я ж писал, составы групп не пересекаютс
Посмотрите выборку из sys.login_token и узнаете во сколько же на самом деле групп входит ваш логин.

есть такая таблица у меня
{id;parentid;login}
и вот как мне получить все login для parentid у которого login='GROUP/Login'
14 сен 16, 13:04    [19663670]     Ответить | Цитировать Сообщить модератору
 Re: SUSER_SNAME()  [new]
waszkiewicz
Member

Откуда:
Сообщений: 1090
waszkiewicz
invm
пропущено...
Кто не хочет думать, тот будет городить и плакаться как ему тяжело жить. А кто хочет, - заведет себе служебную таблицу с перечнем анализируемых групп и не будет ничего городить.
пропущено...
Посмотрите выборку из sys.login_token и узнаете во сколько же на самом деле групп входит ваш логин.

есть такая таблица у меня
{id;parentid;login}
и вот как мне получить все login для parentid у которого login='GROUP/Login'

login='GROUP/LoginGroup' конечно
14 сен 16, 13:05    [19663677]     Ответить | Цитировать Сообщить модератору
 Re: SUSER_SNAME()  [new]
waszkiewicz
Member

Откуда:
Сообщений: 1090
o-o
invm
Посмотрите выборку из sys.login_token и узнаете во сколько же на самом деле групп входит ваш логин.

он не для данного конкретного логина смотрит,
а хочет разом для всех.
т.е. чтобы ему собрать все группы для всех логинов,
надо все логины имперсонэйтить и выуженные группы куда-то складировать
---
только даже если это сохранить сейчас,
не факт, что информация будет актуальной через час.
потому ее сервер и не хранит нигде.
какое ему дело до *виндовых* групп, куда кто-то входит?
он свои группы с их составом хранит, и никак не виндовые с их составом.
инфо о принадлежности виндовой учетки таким-то виндовым группам
добывается в данный момент, когда товарищ залогинился,
из его виндового тикета.
при следующем логоне это может быть уже совсем другой список групп для того же самого логина,
при этом на уровне сервера не поменялось ничего,
ни байта не добавилось в системные таблицы.
все изменения произошли в AD

не храню я группы с составами на сервере. Это все дело будет регулироваться напрямую в AD. В БД есть только запись о названии группы и список всех логинов во внешнюю систему для пользователей из нужной группы в AD
Так сказать, костыли для реализации конкурентных лицензий
14 сен 16, 13:13    [19663714]     Ответить | Цитировать Сообщить модератору
 Re: SUSER_SNAME()  [new]
waszkiewicz
Member

Откуда:
Сообщений: 1090
waszkiewicz,
спасибо invm,
sys.login_token должен помочь отцу русской демократии
14 сен 16, 13:37    [19663839]     Ответить | Цитировать Сообщить модератору
 Re: SUSER_SNAME()  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6201
invm
Посмотрите выборку из sys.login_token и узнаете во сколько же на самом деле групп входит ваш логин.

Если юзер входит в группы из нескольких доменов, то в login_token не будут отображаться локальные доменные группы из доменов, которые не домены самого сервера. Это же, кстати, касаетя и IS_MEMBER: если сервер в домене А, я в группе В домена С, причем группа В - локальная, то IS_MEMBER выдаст 0.
14 сен 16, 15:13    [19664718]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить