Нужно организовывать соединение именно через 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/