|  16.11.2009, 19:35 | #1 | 
| Участник |  Как узнать имя пользователя Axapta на SQL? 
			
			Всем привет. Если совсем нетривиальная задача :-) : нужно на SQL сервере получить имя пользователя акспаты, который выполняет, например, операцию вставки в определенной таблице. В Аксапте такое получается легко - curuserid(). А можно ли как то получить его в SQL сервере? Заранее спасибо! 
				__________________ Жить все веселей!.. AX3SP3CU1   | 
|  | 
|  16.11.2009, 19:54 | #2 | 
| Участник | 
			
			Включите на таблице аудитное поле createdby(кто создал).
		 
				__________________ Энергия молодых и неравнодушных способна изменить мир к лучшему. | 
|  | 
|  16.11.2009, 22:35 | #3 | 
| Administrator | 
			
			Если у Вас 2-хуровневая конфигурация - то доступ к SQL Server осуществляется через ODBC и либо Windows-пользователя, либо SQL-пользователя. В этом случае (если Windows-аутенфикация) - информацию о пользователе можно получить штатным монитором (по кр. мере от SQL 2005 - про 2000 не помню). А вот если у Вас - 3-хуровневая - то в БД обращается только один пользователь и БД заведомо не знает кто "попросил" этого пользователя обратиться в БД. Все это относится к AX 3.0
		 
				__________________ Возможно сделать все. Вопрос времени | 
|  | 
|  17.11.2009, 09:34 | #4 | 
| Участник | Цитата: 
		
			Сообщение от sukhanchik
			   Если у Вас 2-хуровневая конфигурация - то доступ к SQL Server осуществляется через ODBC и либо Windows-пользователя, либо SQL-пользователя. В этом случае (если Windows-аутенфикация) - информацию о пользователе можно получить штатным монитором (по кр. мере от SQL 2005 - про 2000 не помню). А вот если у Вас - 3-хуровневая - то в БД обращается только один пользователь и БД заведомо не знает кто "попросил" этого пользователя обратиться в БД. Все это относится к AX 3.0 Если так, то совет miklenew ИМХО самый простой и надежный. | 
|  | 
|  17.11.2009, 09:58 | #5 | 
| Administrator | 
			
			Дык аксаптовский пользователь легко ассоциируется с Windows-пользователем. А вот совет miklenew работает ТОЛЬКО для вставки записи, а не "например, для вставки записи". Плюс для того, чтобы воспользоваться его советом нужно будет на каждой исследуемой таблице включать свойство createBy (если его там нет). Но конечно, если исследовать ТОЛЬКО вставку записи в одну конкретную таблицу - то предложенный вариант - проще. 
				__________________ Возможно сделать все. Вопрос времени | 
|  | 
|  17.11.2009, 10:07 | #6 | 
| Участник | Цитата: Ну включить еще поле modifyedby - не думаю, что это сильно скажется на производительности. | 
|  | 
|  17.11.2009, 10:17 | #7 | 
| Administrator | 
			
			А я как написал? Цитата: А потом modifiedBy позволит контролировать только операции обновления. А вот операции выборки или удаления в этом плане неконтролируемы (из SQL Server) 
				__________________ Возможно сделать все. Вопрос времени | 
|  | 
|  17.11.2009, 10:18 | #8 | 
| Участник | |
|  | 
|  17.11.2009, 10:21 | #9 | 
| Участник | 
			
			2 Didukh84: так вам необходимо в целом знать кто что делал или на лету. Например, кто запустил какую-то тяжелую операцию или отчет?  Если да, то со стороны сервера БД узнать это практически невозможно, т.к. SID-ы меняются очень быстро и вот так просто вытянуть на стороне сервера имя пользователя Аксапты практически нереально. В принципе вы можете смотреть это из АХ, попробуйте переделать под свои нужды форму SysSQLBlockingMSSQL или SysSQLBlockingOracle | 
|  | 
|  17.11.2009, 10:24 | #10 | 
| Участник | |
|  | 
|  17.11.2009, 10:35 | #11 | 
| Участник | 
			
			По коду SPID. Его видно в запросе "Активные пользователи" и в списке процессов SQL
		 | 
|  | 
|  17.11.2009, 10:37 | #12 | 
| Участник | Цитата:  п.с и отчеты обычно не вставляют строки | 
|  | 
|  17.11.2009, 10:38 | #13 | 
| Участник | 
			
			Не факт. SPID появляется только в момент активной транзакции. Т.е. пока вы посмотрите, потом переключитесь в Аксапту, этот SPID может быть присвоен уже другому пользователю. Шанс конечно есть успеть поймать, но он далеко не 100%
		 | 
|  | 
|  17.11.2009, 10:49 | #14 | 
| MCITP |   
			
			Если речь конечно идет не про триггер на стороне БД, а на "посмотреть, кто это эту хрень запустил", то ответ вы найдёте здесь, уже обсуждалось... Иначе, ответ был дан с самого начала... 
				__________________ Zhirenkov Vitaly | 
|  | 
|  17.11.2009, 11:20 | #15 | 
| Administrator | 
			
			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 | 
| MCITP |   Цитата: 
		
			Сообщение от sukhanchik
			   2ZVV: Там есть один мааленький нюанс, не отмеченный в статье. Hostname будет всегда сервером с АОС, а loginname - учетной записью пользователя, от имени которой запущен АОС. Исключение будут составлять подключения вне DAX - типа запуски SQL Management Studio и т.д.  Цитата: 
		
			Что имеем? SPID (номер процесса) и HOSTNAME (имя сервера AOS с которого пришла сессия). В моем случае - '52' и 'AEREMENK01'.  Теперь запускаем еще одну сессию Microsoft Dynamics AX и выбираем Администрирование | Активные пользователи в Главном меню: Получаем, код и имя пользователя. Дальше, звоним пользователю и спрашиваем зачем он это запускал   
				__________________ Zhirenkov Vitaly | 
|  | 
|  17.11.2009, 11:38 | #17 | 
| MCITP |   
			
			В 2009 пробую, что-то не нахожу такого, куда смотреть? :-\
		 
				__________________ Zhirenkov Vitaly | 
|  | 
|  17.11.2009, 11:39 | #18 | 
| Участник | 
			
			есть системные таблицы, у которых не включены системные поля   ( Поскольку таблицы системные, то возможности включить эти поля для них не представляет возможности  . На SQL при вставке записи можно сгенерить заполнение этих полей (либо добавление записей в другую таблицу или БД) Приложение в основном трехуровневое 
				__________________ Жить все веселей!.. AX3SP3CU1   | 
|  | 
|  17.11.2009, 11:41 | #19 | 
| Участник | 
			
			Боюсь у вас ничего не получится.
		 | 
|  | 
|  17.11.2009, 11:51 | #20 | 
| Administrator | 
			
			Дочитал. Согласен - пропустил фразу про имя сервера AOS. Но юзер-то все равно по SPID-у определяется.... который м.б. не определен
		 
				__________________ Возможно сделать все. Вопрос времени | 
|  | 
| Теги | 
| login, spid, логин | 
|  | 
| 
 |