|
![]() |
#1 |
Administrator
|
Конечно реализуема.
Но для реализации потребуется: - дать права в SQL Server на выполнение скрипта пользователю, от имени которого запущен AOS (т.е. дать права ему на базу master, т.к. скрипт должен вызываться не в контексе БД АХ. Т.е. это что-то типа включить пользователя в роль sysadmin, но могу ошибаться и может удастся выдать права без включения в роль sysadmin. Однако всяко нужно побольше прав, чем просто db_owner на аксаптовую БД) - создать в АХ табличку, куда будет складироваться результат выборки. Табличка должна быть аксаптовой, т.е. с полем RecId и заполняться кодом из X++ - подумать над тем, чтобы обновление этой таблички двумя разными пользователями АХ - не привело бы к ошибкам / блокировкам ![]()
__________________
Возможно сделать все. Вопрос времени |
|
|
За это сообщение автора поблагодарили: S.Kuskov (2). |
![]() |
#2 |
Участник
|
если я не ошибаюсь взаимодействие с SQL сервером идет через посредника - AOS-а, у которого и так все права есть на базу.
Предположим создам я эту табличку в AX, а как сделать так чтобы этот скрипт при вызове формы обновлял её результатами скрипта? |
|
![]() |
#3 |
Участник
|
Есть класс Connection который позволяет выполнять прямой sql http://erpkb.info/axapta/доступковнешнимбазам - там примеры с доступом к другим базам но можно так же и со своей.
Я бы сделал временную табличку и скидывал данные туда. |
|
![]() |
#4 |
Administrator
|
Ну вот по ссылке - есть класс ODBCConnection и UserConnection. ODBCConnection позволяет подключиться под другим пользователем (см пример по ссылке).
UserConnection позволяет не заниматься авторизацией и выполнять все от имени текущего пользователя. Цитата:
Сообщение от belugin
![]() Есть класс Connection который позволяет выполнять прямой sql http://erpkb.info/axapta/доступковнешнимбазам - там примеры с доступом к другим базам но можно так же и со своей.
Я бы сделал временную табличку и скидывал данные туда. Т.е. решать вопрос прав надо на уровне АХ, а не SQL
__________________
Возможно сделать все. Вопрос времени |
|
|
За это сообщение автора поблагодарили: YoungPadawan (1). |
![]() |
#5 |
Участник
|
Цитата:
Сообщение от sukhanchik
![]() Ну вот по ссылке - есть класс ODBCConnection и UserConnection. ODBCConnection позволяет подключиться под другим пользователем (см пример по ссылке).
UserConnection позволяет не заниматься авторизацией и выполнять все от имени текущего пользователя. В таком виде вполне возможно решить исходную задачу. Т.е. решать вопрос прав надо на уровне АХ, а не SQL |
|
|
За это сообщение автора поблагодарили: sukhanchik (2). |
![]() |
#6 |
Участник
|
Цитата:
Сообщение от YoungPadawan
![]() Спасибо. Нужно было просто лучше погуглить. Я не увидел методов setUser() и setPassword() в классе LoginProperty и подумал что в АХ2009 эту возможность убрали. А на самом деле строка подключения формируется по другому https://community.dynamics.com/ax/f/33/t/146719
![]() |
|
![]() |
#7 |
Участник
|
Цитата:
Мы можем и с пользователем SQL подключаться, устанавливая строку подключения методом setOther, например, так: X++: advParms = 'DRIVER=SQL Server' + '; DATABASE=' + _database + '; SERVER=' + _server + (_port ? ',' + _port : '') + '; UID=' + _userId + '; PWD=' + _password; loginProperty .setOther(advParms); |
|
![]() |
#8 |
Administrator
|
Цитата:
Он и не будет обновлять. Это будете делать Вы по кнопке "Обновить" (по аналогии с формой активных пользователей). А в коде по нажатию кнопки - потребуется написать код, который вызовет сей скрипт, построчно выберет данные (см класс Statement и метод executeQuery) и запишет в таблицу, которая будет уже отображаться на форме (т.е. сначала удалит все записи из таблицы, а затем добавит результаты отработки скрипта)
__________________
Возможно сделать все. Вопрос времени |
|
![]() |
#9 |
Участник
|
В АХ 4.0 имеется Администрирование/Запросы/База данных/Блокировки пользователей базы данных которая работает к сожалению лишь с SQL Server 2000, но быть может рассмотреть эту форму поближе и на ее основе и сделать желаемую форму со скриптом
|
|
![]() |
#10 |
Участник
|
Насколько я помню, мы в свое время заставили её работать из DAX4 и с 2008 сервером. Если правильно помню, обращения там идут к объектам, которые считаются устаревшими, поэтому просто так недоступны и требовалось давать какие-то расширенные права.
|
|
![]() |
#11 |
Участник
|
Возможно ли обойтись без выдачи доп. прав AOS? Может есть возможность сделать запрос под правами другого пользователя?
|
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|