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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.07.2014, 10:47   #1  
ОльгаМ is offline
ОльгаМ
Участник
 
36 / 10 (1) +
Регистрация: 07.09.2004
Адрес: Москва
Для работы с 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  
ОльгаМ is offline
ОльгаМ
Участник
 
36 / 10 (1) +
Регистрация: 07.09.2004
Адрес: Москва
Вернее,
если пользователь работает под логином SQL , при запуске задания дополнительно запрашивается логин и пароль. Что можно сделать, чтобы пароль запрашивался только 1 раз- при входе в Navision?
Старый 11.07.2014, 18:15   #3  
Шрэк is offline
Шрэк
Участник
Аватар для Шрэк
 
645 / 24 (2) +++
Регистрация: 09.02.2004
Адрес: Москва
Можно создать настройку, где определить код пользователя SQL и пароль (2 поля). Переделать вызов ado, чтобы брал пользователя и пароль из этой настройки.
__________________
MBS Certified Master in Navision Developer
Старый 14.07.2014, 09:28   #4  
ОльгаМ is offline
ОльгаМ
Участник
 
36 / 10 (1) +
Регистрация: 07.09.2004
Адрес: Москва
Цитата:
Сообщение от Роман Посмотреть сообщение
Можно создать настройку, где определить код пользователя SQL и пароль (2 поля). Переделать вызов ado, чтобы брал пользователя и пароль из этой настройки.
Руководство не желает использовать данный вариант.
И, похоже, свойство Properties("Prompt") = 4 тоже нельзя использовать. Система ругается, что оно должно быть в режиме чтения.
Остается одно - оптимизации с помощью SQL не будет, если пользователь работает в сессии не с типом Windows.
Старый 14.07.2014, 11:29   #5  
Шрэк is offline
Шрэк
Участник
Аватар для Шрэк
 
645 / 24 (2) +++
Регистрация: 09.02.2004
Адрес: Москва
C windows аутентификацией вы мало что можете сделаеть через ADO. Тк. пользователь НАВ на уровне SQL имеет роль public. Можно, конечно, дать и доп. права, и процедуры переписать для запуска от имени sa. С точки зрения дальнейшей поддержки оптимальный вариант - настройка для логина SQL. IMHO.
__________________
MBS Certified Master in Navision Developer
Старый 14.07.2014, 14:02   #6  
ОльгаМ is offline
ОльгаМ
Участник
 
36 / 10 (1) +
Регистрация: 07.09.2004
Адрес: Москва
Цитата:
Сообщение от Роман Посмотреть сообщение
C windows аутентификацией вы мало что можете сделаеть через ADO. Тк. пользователь НАВ на уровне SQL имеет роль public. Можно, конечно, дать и доп. права, и процедуры переписать для запуска от имени sa. С точки зрения дальнейшей поддержки оптимальный вариант - настройка для логина SQL. IMHO.
Спасибо. Похоже, Вы правы.
Старый 15.07.2014, 09:53   #7  
rmv is offline
rmv
Участник
 
481 / 11 (1) +
Регистрация: 15.02.2005
Ничего не мешает вин. пользователей включить в определенные роли, которым дать права на хранимые процедуры. Ту же самую процедуру придется проделать и для SQL логина (логина).
С точки количество времени, потраченного на настройку системы безопасности в целом win логины предпочтительнее, т.к. правами можно оперировать на уровне групп пользователей в Active Directory.
Касаемо запуска хранимых процедур через ADO для изменения данных, тут нужно четко понимать что действия в Наве и через ADO идут в разных транзакциях со всеми вытекающими.
У себя постепенно перехожу от ADO к запуску хранимых процедур в одной с Навом транзации
Старый 16.07.2014, 10:30   #8  
ОльгаМ is offline
ОльгаМ
Участник
 
36 / 10 (1) +
Регистрация: 07.09.2004
Адрес: Москва
Цитата:
Сообщение от 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  
rmv is offline
rmv
Участник
 
481 / 11 (1) +
Регистрация: 15.02.2005
Это же обычный триггер. Конечно будет ждать окончания выполнения.
Старый 16.07.2014, 16:16   #10  
ОльгаМ is offline
ОльгаМ
Участник
 
36 / 10 (1) +
Регистрация: 07.09.2004
Адрес: Москва
Цитата:
Сообщение от rmv Посмотреть сообщение
Это же обычный триггер. Конечно будет ждать окончания выполнения.
Спасибо!
Старый 21.07.2014, 15:27   #11  
sanya_123 is offline
sanya_123
Участник
 
93 / 11 (1) +
Регистрация: 18.04.2005
спасибо за подсказанный способ! красиво выглядит.
но у меня и у helga7289 при попытке исполнения любого кода, который вызывает модификацию данных, вылазит ошибка :

50000,"42000",[Microsoft][ODBC SQL Server Driver][SQL Server]forbidden

триггер на вставку не отрабатывает.
при этом если передать инструкцию SQL типа "select 1" и т п- триггер на вставку отрабатывает без ошибок.

подскажите, в чем может быть дело?
в базе мы dbo.
Старый 21.07.2014, 20:19   #12  
rmv is offline
rmv
Участник
 
481 / 11 (1) +
Регистрация: 15.02.2005
Видимо сработала защита от вставки в таблицу только из Нава и только кодом:
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 приветствуется
 


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

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

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