27.02.2008, 11:53 | #1 |
Участник
|
ODBCConnection
Я имею следующий код
X++: boolean OpenExternalDb() { ; this.Close(); try { ODBClogin = new LoginProperty(); ODBClogin.setOther('DSN=' + remoteDb + ';UID=' + exUser + ';PWD=' + exPWD); ODBCCon = new ODBCConnection(ODBClogin); } catch { return false; } return true; } Если у каго-то есть какие-то соображения как исправить эту ошибку.... помогите пожалуйста.... |
|
27.02.2008, 11:58 | #2 |
Moderator
|
А у вас сам источник ODBC на компьютере существует? (который Пуск-Настройка-Панель управления...)
|
|
27.02.2008, 12:02 | #3 |
Участник
|
|
|
27.02.2008, 12:13 | #4 |
Moderator
|
у меня некий фрагмент работает в таком виде, попробуйте по аналогии:
X++: OdbcConnection C; Statement S; LoginProperty LP = new LoginProperty(); LP.setDSN(...); LP.setUsername(...); LP.setPassword(...); info( strfmt('Попытка использовать источник ODBC %1 ...', LP.getDSN()) ); C = new OdbcConnection(LP); info( '...успешна.'); S = C.createStatement(); S.executeUpdate('UPDATE...'); |
|
27.02.2008, 12:15 | #5 |
Участник
|
X++: LP.setUsername(...); LP.setPassword(...); |
|
27.02.2008, 12:28 | #6 |
Moderator
|
беда... да, слышал, что с этой дыркой безопасности как-то в 4 попытались бороться...
а хелп что говорит? а если в реестр прописать пароль и юзера? ветка типа: HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\имя источника и далее прописываем PWD и UID. И далее по идее достаточно одного setDSN. |
|
27.02.2008, 12:59 | #7 |
Участник
|
Скорее всего код выполняется не там где источник (например источник на клиенте, а код на сервере). Из Job - тоже не работает
|
|
27.02.2008, 13:04 | #8 |
Пенсионер
|
Не знаю, у меня на DAX4 SP2 все получилось без проблемм из джоба!
зы: DSN должен быть системным!
__________________
Законы природы еще никто не отменял! А еще у меня растет 2 внучки!!! Кому интересно подробности тут: http://www.baby-shine.com/ |
|
28.02.2008, 13:55 | #9 |
Участник
|
Нужно организовывать соединение именно через DSN? Напрямую, без DSN нельзя?
Например, для MS SQL сервера это будет как-то так. Метод в классе Global Коннект создается на стороне сервера по той причине, что у нас AOS подключается к серверу с админ-правами, а клиент - с пользовательскими. Поэтому попытка установить доверительное соединение со стороны клиента окончится неудачей. Будет отказ в доступе. X++: /* Создание ODBCConnection с внешней базой данных по отношению к текущей (другой сервер) */ static server OdbcConnection rtg_createOdbcConnection(Name _server, Name _dataBase) { OdbcConnection connectBase; LoginProperty lp = new LoginProperty(); str strConnectionString; ; /* // Можно и в одну строку задать все параметры strConnectionString = strFmt("DRIVER=SQL Server;SERVER=%1;DataBase=%2;Trusted_Connection=Yes",_server,_dataBase); lp.setOther(strConnectionString); */ // Но для определенности задаю те параметры, которые возможно, явным образом lp.setDatabase(_dataBase); lp.setServer(_server); // Фигурные скобки не обязательны lp.setOther("DRIVER={SQL Server};Trusted_Connection=Yes"); connectBase = new OdbcConnection(LP); return connectBase; } Кстати, возможно прав NNB. Может быть Вы создали DSN у клиента, а пытаетесь организовать подключение на стороне сервера, где этого DSN просто нет. Это еще один плюс использования прямого подключения без DSN. Если сервер - это не MS SQL, базовый синтаксис строки подключения можно посмотреть здесь http://www.connectionstrings.com/ |
|
28.02.2008, 14:49 | #10 |
MCT
|
Я тут немного писал на эту темы
Последний раз редактировалось MikeR; 28.02.2008 в 14:50. Причина: теги |
|
28.02.2008, 17:00 | #11 |
Участник
|
В точности с такой же проблемой сталкивался. Ошибки были те же. В моем случае соединение устанавливалось с Oracle. Не мог победить до тех пор, пока не скачал последние драйвера ODBC с сайта Oracle. Под х64 так и не удалось настроить, хотя драйвера также были последние...
|
|
Теги |
odbcconnection, oracle |
|
Похожие темы | ||||
Тема | Ответов | |||
Выгрузка из ODBC | 9 | |||
Класс ODBCConnection | 10 | |||
Как дость max, min через odbcConnection | 2 | |||
ODBCConnection Execute Select | 6 |
|