Тема: ODBCConnection
Показать сообщение отдельно
Старый 28.02.2008, 13:55   #9  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,713 / 1201 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Нужно организовывать соединение именно через 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;

}
При таком способе организации подключения нет необходимости во внешних (по отношению к программе) настройках DSN.

Кстати, возможно прав NNB. Может быть Вы создали DSN у клиента, а пытаетесь организовать подключение на стороне сервера, где этого DSN просто нет. Это еще один плюс использования прямого подключения без DSN.

Если сервер - это не MS SQL, базовый синтаксис строки подключения можно посмотреть здесь

http://www.connectionstrings.com/