AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.11.2009, 19:35   #1  
Didukh84 is offline
Didukh84
Участник
 
57 / 10 (1) +
Регистрация: 09.06.2006
:( Как узнать имя пользователя Axapta на SQL?
Всем привет.
Если совсем нетривиальная задача :-) :
нужно на SQL сервере получить имя пользователя акспаты, который выполняет, например, операцию вставки в определенной таблице. В Аксапте такое получается легко - curuserid(). А можно ли как то получить его в SQL сервере?
Заранее спасибо!
__________________
Жить все веселей!.. AX3SP3CU1
Старый 16.11.2009, 19:54   #2  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Включите на таблице аудитное поле createdby(кто создал).
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.
Старый 16.11.2009, 22:35   #3  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,322 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Если у Вас 2-хуровневая конфигурация - то доступ к SQL Server осуществляется через ODBC и либо Windows-пользователя, либо SQL-пользователя. В этом случае (если Windows-аутенфикация) - информацию о пользователе можно получить штатным монитором (по кр. мере от SQL 2005 - про 2000 не помню). А вот если у Вас - 3-хуровневая - то в БД обращается только один пользователь и БД заведомо не знает кто "попросил" этого пользователя обратиться в БД. Все это относится к AX 3.0
__________________
Возможно сделать все. Вопрос времени
Старый 17.11.2009, 09:34   #4  
egorych is offline
egorych
Участник
Самостоятельные клиенты AX
Oracle
 
761 / 154 (7) ++++++
Регистрация: 09.11.2006
Адрес: Краснодарский край
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
Если у Вас 2-хуровневая конфигурация - то доступ к SQL Server осуществляется через ODBC и либо Windows-пользователя, либо SQL-пользователя. В этом случае (если Windows-аутенфикация) - информацию о пользователе можно получить штатным монитором (по кр. мере от SQL 2005 - про 2000 не помню). А вот если у Вас - 3-хуровневая - то в БД обращается только один пользователь и БД заведомо не знает кто "попросил" этого пользователя обратиться в БД. Все это относится к AX 3.0
Я так думаю, имелся ввиду Аксаптовский пользователь, а не тот, под которым идет подключение к базе.
Если так, то совет miklenew ИМХО самый простой и надежный.
Старый 17.11.2009, 09:58   #5  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,322 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Дык аксаптовский пользователь легко ассоциируется с Windows-пользователем.
А вот совет miklenew работает ТОЛЬКО для вставки записи, а не "например, для вставки записи". Плюс для того, чтобы воспользоваться его советом нужно будет на каждой исследуемой таблице включать свойство createBy (если его там нет).

Но конечно, если исследовать ТОЛЬКО вставку записи в одну конкретную таблицу - то предложенный вариант - проще.
__________________
Возможно сделать все. Вопрос времени
Старый 17.11.2009, 10:07   #6  
egorych is offline
egorych
Участник
Самостоятельные клиенты AX
Oracle
 
761 / 154 (7) ++++++
Регистрация: 09.11.2006
Адрес: Краснодарский край
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
Дык аксаптовский пользователь легко ассоциируется с Windows-пользователем.
Ну это на 2-х уровнях! И то не факт - зависит от настройки подключения.
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
А вот совет miklenew работает ТОЛЬКО для вставки записи, а не "например, для вставки записи". Плюс для того, чтобы воспользоваться его советом нужно будет на каждой исследуемой таблице включать свойство createBy (если его там нет).
Ну включить еще поле modifyedby - не думаю, что это сильно скажется на производительности.
Старый 17.11.2009, 10:17   #7  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,322 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от egorych Посмотреть сообщение
Ну это на 2-х уровнях!
А я как написал?
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
Если у Вас 2-хуровневая конфигурация....
Цитата:
Сообщение от egorych Посмотреть сообщение
Ну включить еще поле modifyedby - не думаю, что это сильно скажется на производительности.
А я что-то говорил про производительность?

А потом modifiedBy позволит контролировать только операции обновления. А вот операции выборки или удаления в этом плане неконтролируемы (из SQL Server)
__________________
Возможно сделать все. Вопрос времени
Старый 17.11.2009, 10:18   #8  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,737 / 404 (17) +++++++
Регистрация: 23.03.2006
Цитата:
Сообщение от Didukh84 Посмотреть сообщение
А можно ли как то получить его в SQL сервере?
а зачем?
Старый 17.11.2009, 10:21   #9  
greench is offline
greench
Участник
Oracle
 
425 / 74 (3) ++++
Регистрация: 12.07.2007
Адрес: Киев
2 Didukh84: так вам необходимо в целом знать кто что делал или на лету. Например, кто запустил какую-то тяжелую операцию или отчет?

Если да, то со стороны сервера БД узнать это практически невозможно, т.к. SID-ы меняются очень быстро и вот так просто вытянуть на стороне сервера имя пользователя Аксапты практически нереально. В принципе вы можете смотреть это из АХ, попробуйте переделать под свои нужды форму SysSQLBlockingMSSQL или SysSQLBlockingOracle
Старый 17.11.2009, 10:24   #10  
greench is offline
greench
Участник
Oracle
 
425 / 74 (3) ++++
Регистрация: 12.07.2007
Адрес: Киев
Цитата:
Сообщение от ice Посмотреть сообщение
а зачем?
Мне например иногда нужно знать какой пользователь запустил тяжелый отчет и тем самым нагрузил сервер БД в то время, когда всех просили ничего не запускать.
Для того чтобы обсудить с пользователем его интеллектуальные способности
Старый 17.11.2009, 10:35   #11  
sia is offline
sia
Участник
 
26 / 15 (1) ++
Регистрация: 14.07.2005
Адрес: Москва
По коду SPID. Его видно в запросе "Активные пользователи" и в списке процессов SQL
Старый 17.11.2009, 10:37   #12  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,737 / 404 (17) +++++++
Регистрация: 23.03.2006
Цитата:
Сообщение от greench Посмотреть сообщение
Мне например иногда нужно знать какой пользователь запустил тяжелый отчет и тем самым нагрузил сервер БД в то время, когда всех просили ничего не запускать.
Для того чтобы обсудить с пользователем его интеллектуальные способности
а этим пользователем оказывается фин директор

п.с и отчеты обычно не вставляют строки
Старый 17.11.2009, 10:38   #13  
greench is offline
greench
Участник
Oracle
 
425 / 74 (3) ++++
Регистрация: 12.07.2007
Адрес: Киев
Цитата:
Сообщение от sia Посмотреть сообщение
По коду SPID. Его видно в запросе "Активные пользователи" и в списке процессов SQL
Не факт. SPID появляется только в момент активной транзакции. Т.е. пока вы посмотрите, потом переключитесь в Аксапту, этот SPID может быть присвоен уже другому пользователю. Шанс конечно есть успеть поймать, но он далеко не 100%
Старый 17.11.2009, 10:49   #14  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Если речь конечно идет не про триггер на стороне БД, а на "посмотреть, кто это эту хрень запустил", то ответ вы найдёте здесь, уже обсуждалось...
Иначе, ответ был дан с самого начала...
__________________
Zhirenkov Vitaly
Старый 17.11.2009, 11:20   #15  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,322 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
2ZVV: Там есть один мааленький нюанс, не отмеченный в статье. Hostname будет всегда сервером с АОС, а loginname - учетной записью пользователя, от имени которой запущен АОС.
Исключение будут составлять подключения вне DAX - типа запуски SQL Management Studio и т.д.

А вот в Oracle каким-то образом передается информация типа Form: Admin@LedgerTable - как объект, пославший запрос (DAX 4.0). Из этой информации несложно догадаться кто есть кто
__________________
Возможно сделать все. Вопрос времени

Последний раз редактировалось sukhanchik; 17.11.2009 в 11:24.
Старый 17.11.2009, 11:25   #16  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
2ZVV: Там есть один мааленький нюанс, не отмеченный в статье. Hostname будет всегда сервером с АОС, а loginname - учетной записью пользователя, от имени которой запущен АОС.
Исключение будут составлять подключения вне DAX - типа запуски SQL Management Studio и т.д.
Ну если дочитать до конца то:
Цитата:
Что имеем? SPID (номер процесса) и HOSTNAME (имя сервера AOS с которого пришла сессия). В моем случае - '52' и 'AEREMENK01'.

Теперь запускаем еще одну сессию Microsoft Dynamics AX и выбираем Администрирование | Активные пользователи в Главном меню:

Получаем, код и имя пользователя.
Дальше, звоним пользователю и спрашиваем зачем он это запускал
__________________
Zhirenkov Vitaly
Старый 17.11.2009, 11:38   #17  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
А вот в Oracle каким-то образом передается информация типа Form: Admin@LedgerTable - как объект, пославший запрос (DAX 4.0). Из этой информации несложно догадаться кто есть кто
В 2009 пробую, что-то не нахожу такого, куда смотреть? :-\
__________________
Zhirenkov Vitaly
Старый 17.11.2009, 11:39   #18  
Didukh84 is offline
Didukh84
Участник
 
57 / 10 (1) +
Регистрация: 09.06.2006
Цитата:
Сообщение от ice Посмотреть сообщение
а зачем?
есть системные таблицы, у которых не включены системные поля ( Поскольку таблицы системные, то возможности включить эти поля для них не представляет возможности . На SQL при вставке записи можно сгенерить заполнение этих полей (либо добавление записей в другую таблицу или БД)

Приложение в основном трехуровневое
__________________
Жить все веселей!.. AX3SP3CU1
Старый 17.11.2009, 11:41   #19  
greench is offline
greench
Участник
Oracle
 
425 / 74 (3) ++++
Регистрация: 12.07.2007
Адрес: Киев
Боюсь у вас ничего не получится.
Старый 17.11.2009, 11:51   #20  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,322 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от ZVV Посмотреть сообщение
Ну если дочитать до конца то:
Дочитал. Согласен - пропустил фразу про имя сервера AOS. Но юзер-то все равно по SPID-у определяется.... который м.б. не определен
__________________
Возможно сделать все. Вопрос времени
Теги
login, spid, логин

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как узнать имя формы CasperSKY DAX: Программирование 5 11.03.2008 09:38
aEremenko: Как сопоставить пользователя DAX и сессию в Microsoft SQL? Blog bot DAX Blogs 2 04.10.2007 20:08
Axapta SP3 и Sql 2005 каких ожидать проблем mike1 DAX: Администрирование 1 30.11.2006 17:38
mazzy: Сравнительное тестирование производительности Microsoft Axapta v.3.0. CУБД Microsoft SQL Server 2005 и Microsoft SQL Server 2000 Blog bot DAX Blogs 0 28.10.2006 17:22
Введение в Аксапту Роман Кошелев DAX: Прочие вопросы 0 18.12.2001 14:00

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 08:37.