11.07.2014, 10:47 | #1 |
Участник
|
Для работы с SQL Server используются следующие функции:
ConnectStr := STRSUBSTNO('Provider=SQLOLEDB;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=%1;Data Source=%2',DatabaseName,ServerName); adocon.ConnectionString(ConnectStr); adocon.ConnectionTimeout(60); adocon.Open('','','',0); adocon.CommandTimeout(0); Проблема возникает, когда пользователь работает в сессии с типом учетной записи = База Данных (не Windows). Подключение к серверу требует ввести логин и пароль, что совсем нежелательно для оперативной работы в системе. Нашла свойство adocon.Properties("Prompt") = 4, которое позволяет избежать ввода пароля. Но как его задавать в Navision, и будет ли оно работать - вот вопрос???? |
|
11.07.2014, 11:19 | #2 |
Участник
|
Вернее,
если пользователь работает под логином SQL , при запуске задания дополнительно запрашивается логин и пароль. Что можно сделать, чтобы пароль запрашивался только 1 раз- при входе в Navision? |
|
11.07.2014, 18:15 | #3 |
Участник
|
Можно создать настройку, где определить код пользователя SQL и пароль (2 поля). Переделать вызов ado, чтобы брал пользователя и пароль из этой настройки.
__________________
MBS Certified Master in Navision Developer |
|
14.07.2014, 09:28 | #4 |
Участник
|
Цитата:
И, похоже, свойство Properties("Prompt") = 4 тоже нельзя использовать. Система ругается, что оно должно быть в режиме чтения. Остается одно - оптимизации с помощью SQL не будет, если пользователь работает в сессии не с типом Windows. |
|
14.07.2014, 11:29 | #5 |
Участник
|
C windows аутентификацией вы мало что можете сделаеть через ADO. Тк. пользователь НАВ на уровне SQL имеет роль public. Можно, конечно, дать и доп. права, и процедуры переписать для запуска от имени sa. С точки зрения дальнейшей поддержки оптимальный вариант - настройка для логина SQL. IMHO.
__________________
MBS Certified Master in Navision Developer |
|
14.07.2014, 14:02 | #6 |
Участник
|
Цитата:
Сообщение от Роман
C windows аутентификацией вы мало что можете сделаеть через ADO. Тк. пользователь НАВ на уровне SQL имеет роль public. Можно, конечно, дать и доп. права, и процедуры переписать для запуска от имени sa. С точки зрения дальнейшей поддержки оптимальный вариант - настройка для логина SQL. IMHO.
|
|
15.07.2014, 09:53 | #7 |
Участник
|
Ничего не мешает вин. пользователей включить в определенные роли, которым дать права на хранимые процедуры. Ту же самую процедуру придется проделать и для SQL логина (логина).
С точки количество времени, потраченного на настройку системы безопасности в целом win логины предпочтительнее, т.к. правами можно оперировать на уровне групп пользователей в Active Directory. Касаемо запуска хранимых процедур через ADO для изменения данных, тут нужно четко понимать что действия в Наве и через ADO идут в разных транзакциях со всеми вытекающими. У себя постепенно перехожу от ADO к запуску хранимых процедур в одной с Навом транзации |
|
16.07.2014, 10:30 | #8 |
Участник
|
Цитата:
Сообщение от rmv
Ничего не мешает вин. пользователей включить в определенные роли, которым дать права на хранимые процедуры. Ту же самую процедуру придется проделать и для SQL логина (логина).
С точки количество времени, потраченного на настройку системы безопасности в целом win логины предпочтительнее, т.к. правами можно оперировать на уровне групп пользователей в Active Directory. Касаемо запуска хранимых процедур через ADO для изменения данных, тут нужно четко понимать что действия в Наве и через ADO идут в разных транзакциях со всеми вытекающими. У себя постепенно перехожу от ADO к запуску хранимых процедур в одной с Навом транзации а не возникает проблем с синхронизацией ? например, нужно сначала прогнать код SQL а затем снова код Navision с использованием полученных данных т е 1. мы кладем инструкцию SQLtxt в табличку 2. через триггер запускается exec(@SQLtxt) --вопрос - вот будет ли Navision ждать окончания исполнения exec(@SQLtxt)???? 3. снова код navision |
|
16.07.2014, 13:17 | #9 |
Участник
|
Это же обычный триггер. Конечно будет ждать окончания выполнения.
|
|
16.07.2014, 16:16 | #10 |
Участник
|
|
|
21.07.2014, 15:27 | #11 |
Участник
|
спасибо за подсказанный способ! красиво выглядит.
но у меня и у helga7289 при попытке исполнения любого кода, который вызывает модификацию данных, вылазит ошибка : 50000,"42000",[Microsoft][ODBC SQL Server Driver][SQL Server]forbidden триггер на вставку не отрабатывает. при этом если передать инструкцию SQL типа "select 1" и т п- триггер на вставку отрабатывает без ошибок. подскажите, в чем может быть дело? в базе мы dbo. |
|
21.07.2014, 20:19 | #12 |
Участник
|
Видимо сработала защита от вставки в таблицу только из Нава и только кодом:
if not app_name() IN ('Microsoft Business Solutions-Navision client', 'Microsoft Dynamics NAV client', 'Microsoft Business Solutions-Navision', 'Microsoft Dynamics NAV','C/ODBC','C/FRONT','Navision Application Server', 'Microsoft Dynamics NAV Application Server','Navision VIP Application Server') raiserror ('forbidden', 16, 1) Вы Вас какой клиент Нава? PS. Благодарный отзыв на mibuso приветствуется |
|