Страница 1 из 1
Подключение к сторонней БД средствами ATLANTIS
Добавлено: 12 апр 2016, 14:00
Solt
Добрый день.
Возникла необходимость извлечения информации из таблиц сторонней БД средствами Atlantis.
Но подключится к ней не получается. Может имеется подобный опыт у кого.
Заранее благодарю.
Re: Подключение к сторонней БД средствами ATLANTIS
Добавлено: 12 апр 2016, 14:14
Den
"Но подключится к ней не получается."
а как пробуете ?
Re: Подключение к сторонней БД средствами ATLANTIS
Добавлено: 12 апр 2016, 14:41
RAJAH
В таких случаях обычно советую использовать хранимые процедуры: в её коде доступны обращения к другим БД.
Re: Подключение к сторонней БД средствами ATLANTIS
Добавлено: 12 апр 2016, 16:42
savov
Доброго времен суток.
Не написано, какая база ( т.е. База Галактики и сторонняя созданы в одной СУБД?) У нас получалось вполне нормально обращаться к другой базе Галактики, но обе были Оракловые.
1. Создаем процедуру сначала в Галактике ( МОЖНО! в саппорте дать запрос SQL FUNCTION имя(параметры) : тип {})
2. Проверяем права и даем права.
3. В СУБД корректируем текст данной хранимой процедуры.
4. В Галактике используем созданную хранимую процедуру.
Пример кода vip
Код: Выделить всё
//Заполняем ВТ
stmt := sqlAllocStmt;
sqlDropTmpTable('MyData'); // чистим временную таблицу
sqlCreateTmpTable('Table MyData (katorgname: string, sale: double, groupgp: string, namemc: string, cpodr: comp, csoprdoc: comp);', ctmNormal); //создаем временную таблицу
//Заполняем ВТ
sqlExecStmt(stmt,'GETSALES('#39+String(GetDateAsPascalLongint(dtBegdate))+''#39+','#39+String(GetDateAsPascalLongint(dtFindate))+''#39+','#39+ UpCase ( UserName ) + '.MyData (fkatorgname, fsale, fgroupgp, fnamemc, fcpodr, fcsoprdoc)'#39+')'); // Getsales - имя хранимой процедуры с параметрами
//Читаем ВТ
sqlFreeStmt(stmt);
stmt := sqlAllocStmt;
sqlAddStr(StmtString,' select * from MyData');
sqlPrepare ( stmt, StmtString );
sqlExecute ( stmt );
sqlFetchInto(stmt, tntOborotNota);
sqlFreeStmt(stmt);
Re: Подключение к сторонней БД средствами ATLANTIS
Добавлено: 25 апр 2016, 13:14
Solt
В SQL создала процедуру. без входных параметров(обычная выборка). При использовании sqlExecStmt выдает ошибку 30006( Насколько поняла не видит процедуру)
Re: Подключение к сторонней БД средствами ATLANTIS
Добавлено: 25 апр 2016, 13:22
savov
В SQL создала процедуру. без входных параметров(обычная выборка). При использовании sqlExecStmt выдает ошибку 30006( Насколько поняла не видит процедуру
Какая СУБД?
Зайти в СУБД, проверить наличие и правильность процедуры. Возможно, текст процедуры надо править. Если процедура есть, текст правильный, попробовать выполнить ее в СУБД ( не Галактикой). Далее по результату.
Проверить включен ли доступ к DSQL пользователю, от имени которого стартует процедура в Галактике, проверить, находится ли эта процедура в списке разрешенных для этого пользователя.
Re: Подключение к сторонней БД средствами ATLANTIS
Добавлено: 25 апр 2016, 13:43
Solt
В MS SQL процедура работает.
У пользователя DSQL включен (переключала для надежности), Процедуру регистрировала с помощью RegVipFuncProcMSSQL.BAT, но в Sapporte она не отражается
. Далее сделала проверку служебных объектов. Но это не помогло
Re: Подключение к сторонней БД средствами ATLANTIS
Добавлено: 25 апр 2016, 13:56
savov
Каков был порядок создания процедуры?
Надо так.
1. В Supporte создаем процедуру . Именно в нем! Можно просто пустую, но с именем и параметрами.
2. Проверяем в supporte появление этой процедуры в закладке "права на хранимые процедуры" в модуле Права доступа. Даем права, если нет.
3. Идем в MS SQL, ищем процедуру там. Вносим текст.
4. Проверяем работоспособность в MS SQL
5. Проверяем работоспособность в Галактике.
Re: Подключение к сторонней БД средствами ATLANTIS
Добавлено: 28 апр 2016, 07:52
Solt
Savov, Спасибо
Процедуру создать получилось и при обращении не выдает ошибок.