powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / DB-Lib и Sybase
25 сообщений из 46, страница 1 из 2
DB-Lib и Sybase
    #34193642
onnly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите с решением проблемы: имеется SYBASE. Программа пишется на Builder C++. Осуществляются запросы SQL к ОДНОМУ СЕРВЕРУ И ДВУМ (ТРЕМ) БАЗАМ НА НЕЙ.

Используется библиотека ntwdblib.lib.
Соединение с сервером ПРОИСХОДИТ, выполнение ПРОСТЫХ ЗАПРОСОВ к ОДНОЙ БАЗЕ происходит.

НО. Когда запрос обращается сразу к двум базам (проверка на раввенство значений в полях таблицы), то может происходить:

"DB-Library Error: Possible network error: Write to SQL Server Failed. General network error"
"Operating-system error: ConnectionRead(recv())""
"DB-Library Error: DBPROCESS is dead or not enabled"

Происходит дисконнект от сервера при выполнении запроса...........

Решение проблемы никак не могу найти.......
...
Рейтинг: 0 / 0
DB-Lib и Sybase
    #34194353
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читай первую тему форума.

Ты не можешь обращаться в одном запросе к двум базам одновременно.
Клиент может делать два запроса к разным базам одновременно, потом самостоятельно сравнивать резалтсеты.
Можно подключить одну базу к другой и таблицы подключенной будут видны в основной как вьюшки, но с точки зрения клиента ты все равно будешь работать с одной базой.


---
http://www.rusug.ru] Портал русскоязычной группы пользователей Sybase
...
Рейтинг: 0 / 0
DB-Lib и Sybase
    #34194460
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White OwlЧитай первую тему форума.
Ты не можешь обращаться в одном запросе к двум базам одновременно.

Совершенно точно.
Каждый объект Connection в любой момент времени выполнения в программе может быть связан только с одной определенной базой(на сервере может быть хоть 100 баз). А запрос в каждый момент времени выполнения может быть связан только с одним объектом Connection.
...
Рейтинг: 0 / 0
DB-Lib и Sybase
    #34194902
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну это для ASA верно, но для ASE - нет. А вдруг у него ASE ?
...
Рейтинг: 0 / 0
DB-Lib и Sybase
    #34194966
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivНу это для ASA верно, но для ASE - нет. А вдруг у него ASE ?
Согласен. Я в свом ответе некорректно обобщил.
Лучше наверно вообще не отвечать авторам, пока сервер не назовут в теме.
Я бы ввел на форуме модераторами нечто вроде обязательной формы ввода для открытия определенных тем. Для каждого форума своя форма со своими полями. Не заполнишь - не откроешь тему, не откроешь тему - тебе не помогут, не посоветуют. По крайней мере для тем с вопросами по конкретным ситуациям, ошибкам и т.п.
Для тем типа "поговорить", "обсудим" и т.п. конечно такое не нужно.
...
Рейтинг: 0 / 0
DB-Lib и Sybase
    #34196561
onnly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за советы.
У меня SYABASE ASE. Не мог сказать раньше - не было данных. Сервак стоит не у меня.
Вообще думаю все вопросы мои были неверны..

Сущность проблемы в том, что не получается работать, подключив:

#include <sybfront.h>
#include <sybdb.h>
#include <syberror.h>

Ведь мне необходим вызов функций, таких как
dbinit()
...
dbcmd(...)
dbpool(...)
и т.д.

-----------
При работе с MSSQL сервером
подключаешь ntwdblib.lib
включаешь:
#include <sqlfront.h>
#include <sqldb.h>

и все работает!
___________

но здесь что делать? с SYBASE ASE

с библиотекой ntwdblib.lib, конечно, не катит
(ТОЛЬКО ЕСЛИ СДЕЛАТЬ ДЛЯ SYBASE ПОДКЛЮЧЕНИЕ ВСЕГО КАК ДЛЯ MSSQL, ТОЛЬКО ТОГДА НЕ БУДЕТ ХВАТАТЬ ФУНКЦИЙ - ведь для SYBASE ЕСТЬ ТАКИЕ, КОТОРЫХ НЕТ ДЛЯ MSSQL.......)

ПРОСТИТЕ, если вопросы неточны, я совсем новичок.
...
Рейтинг: 0 / 0
DB-Lib и Sybase
    #34197188
ездун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторСущность проблемы в том, что не получается работать, подключив:

#include <sybfront.h>
#include <sybdb.h>
#include <syberror.h>

Ведь мне необходим вызов функций, таких как
dbinit()
...
dbcmd(...)
dbpool(...)
и т.д.

-----------
При работе с MSSQL сервером
подключаешь ntwdblib.lib
включаешь:
#include <sqlfront.h>
#include <sqldb.h>

и все работает!

Ты сам себе ответил. Подключи соответствующую либу.
...
Рейтинг: 0 / 0
DB-Lib и Sybase
    #34197378
onnly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ответить-то ответил...но что подключить-то?!

db-lib или?
...
Рейтинг: 0 / 0
DB-Lib и Sybase
    #34197382
onnly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ntwdblib.lib нельзя
...
Рейтинг: 0 / 0
DB-Lib и Sybase
    #34197591
onnly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Понятно, желающих помочь нет пока...

Тогда ответьте мне на вопрос другого плана:
(он корректирует все предыдущие)

Предполагаю проблему - когда идет запрос на выполнение к серверу.Данные в ответ собираются не так бысто!

и.......ВОПРОС - как функциями сделать, чтобы ждать "до посинения" ответ от сервера?

(функциями указан. библ)
...
Рейтинг: 0 / 0
DB-Lib и Sybase
    #34198018
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по поводу библиотеки , я бы посмотрел в сторону freetds которая работает и с MS и с SYBASE

http://www.freetds.org/

ф-я устанавливающая таймаут: dbsettime
...
Рейтинг: 0 / 0
DB-Lib и Sybase
    #34198874
onnly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, такймаут так (dbsettime) ставил
(
int seconds = 60000;
dbsettime(seconds);

dbcmd(dbproc,actt);//actt - текст моего запроса

dbsqlexec( dbproc ); // ошибка
)
, только проблема осталась (может, что неверно делаю?!),
а именно:
вызов функции dbsqlexec завершается ошибкой.


freetds посмотрю - спасибо!
...
Рейтинг: 0 / 0
DB-Lib и Sybase
    #34198960
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
какая ошибка-то?
...
Рейтинг: 0 / 0
DB-Lib и Sybase
    #34198983
onnly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
будто проскакивает выполнение sqlexec
просто FAIL - результат

а увеличение веремени ожидания не устанавливается это точно.

работаю под WindowsXP
...
Рейтинг: 0 / 0
DB-Lib и Sybase
    #34199002
onnly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
только что нашел одну ссылку

http://]http://www.awmdev.ru/ftopic2814.html

написано здесь про dbsettime

у человека фигня тоже была - тока работал не под ту платформу, не с той библиотекой
...
Рейтинг: 0 / 0
DB-Lib и Sybase
    #34199027
onnly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
цитирую:
"FreeTDS is a set of libraries for Unix and Linux".......
...
Рейтинг: 0 / 0
DB-Lib и Sybase
    #34200928
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
onnlyПри работе с MSSQL сервером
подключаешь ntwdblib.lib
включаешь:
но здесь что делать? с SYBASE ASE


Как называются библиотеки DBLib в Sybase OpenClient я уже не помню.
Тебе наверное лучше всего взять примеры приложений с DBLib и сделать по их подобию.
Примеры есть в поставке сервера и/или Open Client, если нет дистрибутива, скачай девелоперскую версию для NT (оно может быть полезно и в других отношениях).

Если очень влом качать я могу послать по почте какой-нить пример, я думаю никаких лицензий я при этом не нарушу.
...
Рейтинг: 0 / 0
DB-Lib и Sybase
    #34200961
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я ничего не понял из последующих вопросов, в чем там проблема.
Друх, выражайся йаснее !

Про FreeTDS ... оно конечно хорошо, бесплатная и достаточно долго уже успешно работает много где ... Но зачем , если есть возможность использовать родное сертифицированное ПО, использовать вместо него неродное - я не понимаю. Ограничения в использовании OpenClient могут быть только лицензионные, ибо за нее надо платить деньги.
...
Рейтинг: 0 / 0
DB-Lib и Sybase
    #34202914
onnly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ты имеешь в виду подобные примеры?
...
Рейтинг: 0 / 0
DB-Lib и Sybase
    #34202925
onnly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
чето не разместилось
ну вот привожу код:


#include <stdio.h>
#include <sybfront.h>
#include <sybdb.h>
#include "sybdbex.h"

#define DATELEN 26
#define TYPELEN 2

/* Forward declarations of the error handler and message handler. */
int CS_PUBLIC err_handler();
int CS_PUBLIC msg_handler();

main(argc, argv)
int argc;
char *argv[];
{
DBPROCESS *dbproc; /* Our connection with SQL Server. */
LOGINREC *login; /* Our login information. */

/* These are the variables used to store the returning data. */

DBCHAR crdate[DATELEN+1];
DBINT id;
DBCHAR name[DBMAXNAME+1];
DBCHAR type[TYPELEN+1];
RETCODE result_code;

printf("Demo of SQL queries in a command batch\n\n");
fflush(stdout);

if (dbinit() == FAIL)
exit(ERREXIT);

dberrhandle((EHANDLEFUNC)err_handler);
dbmsghandle((MHANDLEFUNC)msg_handler);

login = dblogin();
DBSETLUSER(login, USER);
DBSETLPWD(login, PASSWORD);
DBSETLAPP(login, "example1");

dbproc = dbopen(login, NULL);


dbcmd(dbproc, "select name, type, id, crdate from sysobjects");
dbcmd(dbproc, " where type = 'S' ");
dbcmd(dbproc, "select name, type, id, crdate from sysobjects");
dbcmd(dbproc, " where type = 'P' ");

dbsqlexec(dbproc);


while ((result_code = dbresults(dbproc)) != NO_MORE_RESULTS)
{
if (result_code == SUCCEED)
{
dbbind(dbproc, 1, NTBSTRINGBIND, (DBINT)0,
(BYTE DBFAR *)name);
dbbind(dbproc, 2, NTBSTRINGBIND, (DBINT)0,
(BYTE DBFAR *)type);
dbbind(dbproc, 3, INTBIND, (DBINT)0, (BYTE *)&id);
dbbind(dbproc, 4, NTBSTRINGBIND, (DBINT)0,
(BYTE DBFAR *)crdate);

printf("\n %s Objects: \n\n",
DBCURCMD(dbproc) == 1 ? "System Table": "Procedure");

/* Now print the rows. */

while (dbnextrow(dbproc) != NO_MORE_ROWS)
{

if ((DBCURCMD(dbproc) == 2)
&& (DBCURROW(dbproc) > 10))
continue;

printf
("%s %s %ld %s\n", name, type, id, crdate);
}
}
}


dbexit();
exit(STDEXIT);
}
...
Рейтинг: 0 / 0
DB-Lib и Sybase
    #34202948
onnly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
попытаюсь конкретизировать вопрос:

запрос выполняется ДОЛГО!
ставлю ОЖИДАНИЕ ответа от сервера dbsettime-ом (чтобы dbsqlexec выполнился успешно) -
НО ожидания не происходит И dbsqlexec = FAIL
...
Рейтинг: 0 / 0
DB-Lib и Sybase
    #34203504
onnly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
моя почта - only_etwas@mail.ru

Пришли на всякий случай

Спасбо заранее
...
Рейтинг: 0 / 0
DB-Lib и Sybase
    #34204200
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
onnlyты имеешь в виду подобные примеры?

Да.
...
Рейтинг: 0 / 0
DB-Lib и Sybase
    #34204221
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
onnly
Пришли на всякий случай


Не понял, что присылать. У тебя же есть примеры, как я понял.
Кстати по-моему там был пример и на TIMEOUT.

Что могу сказать точно, что таймаута в OpenClient вообще-то два, надо их не перепутать.
Один тайм-аут - на установку соединения, connection timeout.
Другой - на запрос - query timeout.


connection timeout должен устанавливаться в соединении после его выделения и перед вызовом db_connect. Второй - что-то уже не помню, в соединении тоже , но точно после соединения с сервером. Сейчас гляну может доку найду..
...
Рейтинг: 0 / 0
DB-Lib и Sybase
    #34204244
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да вроде бы все правильно делаешь....
...
Рейтинг: 0 / 0
25 сообщений из 46, страница 1 из 2
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / DB-Lib и Sybase
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]