![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ошибка поключения Ms Sql [D7, MSSQL]
Axe © (2010-06-29 11:49:00)Ситуация в следующем:
1. Есть приложение для работы с базой данных в сети через ADOConnection -> ADOQuery->DAtaSource
2. База данных - MSSQL.
Соеденение проходит успешно и выполнение первого SQL запроса проходит удачно, но через некоторое время если повторить запрос SQL то пишет ошибка соеденения! Вопрос как переподключить или что можно предпринять в данной ситуации?
12 (2010-06-30 11:50:00) [1]во втором случае нет текста запроса
ищи где текст может менятся
напиши procedurу по смене текста запроса и делай не Q.SQL.text:=
(и не Q.SQL.Add())
А только через эту процедуру, и сигналь как только текст станет = пусто
Axe (2010-06-30 10:20:00) [2]Незнаю вызов такой же а запрос не выводит
sniknik (2010-06-30 10:13:00) [3]а отсутствие запроса в случае с ошибкой это тоже "оговорка"?
> Это ты так партизана раскалываешь :-)
это не партизан, это провокатор...
Axe (2010-06-30 10:05:00) [4]Ребят сразу оговорюсь, IP не локальный, это просто я поменял так как просили сервер не светит
Axe (2010-06-30 10:02:00) [5]Provider=SQLOLEDB.1;Password=***;Persist Security Info=True;User ID=sa;Initial Catalog=lin2db;Data Source=127.0.0.1;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=AXE;Use Encryption for Data=False;Tag with column collation when possible=False
SELECT uid, account,last_login,last_logout FROM user_account WHERE account like 'goldeneye%'
Provider=SQLOLEDB.1;Password=***;Persist Security Info=True;User ID=sa;Initial Catalog=lin2db;Data Source=127.0.0.1;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=AXE;Use Encryption for Data=False;Tag with column collation when possible=False
EOleException
Ошибка подключения
sniknik (2010-06-30 09:20:00) [6]> у TADOConnection заполнены Showmessge('оп па'); на
> (Before-зачеркнуто :) )Disconnect
> AfterDisconnect
это не поможет, т.к. метод ничего не знает о проблемах сети до того как не проверит ее действием.
а это сработает если где нибудь в той же программе будет - ADOConnection.Active:= false;
+ здесь можно не проверять ошибки сети, т.к. > Data Source=127.0.0.1;, здесь только ошибки в программе (или настройка сервера mssql - разрывать соединение после исполнения запроса... если такая есть конечно. что там администраторы по этому поводу скажут?).
12 (2010-06-30 09:00:00) [7]> как то можно обнаружить что потерянно соединение?
у TADOConnection заполнены Showmessge('оп па'); на
(Before-зачеркнуто :) )Disconnect
AfterDisconnect
12 (2010-06-30 08:51:00) [8]так не пойдет
кинь на форму еще одно мемо и пиши вместо ADOQuery.open
OpenQ(ADOQuery)
procedure OpenQ(var AQ: tadoquery);
begin
memo.lines.add(AQ.sql.text);
memo.lines.add(AQ.connection.connectstring);
try
AQ.Open;
except
on E:Exception do
begin
memo.lines.add(E.ClassName);
memo.lines.add(E.Message);
// Raise; // по желанию
end;
end;
end;
и показывай текст из мемо
ps
в коде возможны опечатки - писал сразу сюда
Германн (2010-06-30 03:14:00) [9]
> Axe (29.06.10 18:02) [8]
>
> Текст тотже выдает а ошибку то ошибка сеть, или ошибка подключения
>
Ну когда же вы, троешники, научитесь приводить в сабже или в ответах текст сообщения об ошибке без перевода на ...
:(
Axe (2010-06-29 22:53:00) [10]Да я при открытие формы активирую соединение, первый же запрос нормально проходит это потом как будто соединение закрывается
Если делать при новом запросе пересоединение т.е TADOConnection.close и TADOConnection.open то нормально запрос проходит, как то можно обнаружить что потерянно соединение?
Axe (2010-06-29 22:52:00) [11]Да я при открытие формы активирую соединение, первый же запрос нормально проходит это потом как будто соединение закрывается
Если делать при новом запросе пересоединение т.е TADOConnection.close и TADOConnection.open то нормально запрос проходит, как то можно обнаружить что потерянно соединение?
MsGuns (2010-06-29 22:24:00) [12]В Object Inspector у TADOConnection стоит Active=true ?
Axe (2010-06-29 20:39:00) [13]Поподробней? Что то описал непонятно?
MsGuns (2010-06-29 19:49:00) [14]Соединение, конечно же, в дизайне :)
Axe (2010-06-29 18:02:00) [15]Текст тотже выдает а ошибку то ошибка сеть, или ошибка подключения
12 (2010-06-29 16:28:00) [16]а теперь тоже самое и текст ошибки, когда эта ошибка возникает
Axe (2010-06-29 16:21:00) [17]Provider=SQLOLEDB.1;Password=***;Persist Security Info=True;User ID=sa;Initial Catalog=lin2db;Data Source=127.0.0.1;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=AXE;Use Encryption for Data=False;Tag with column collation when possible=FalseSELECT uid, account,last_login,last_logout FROM user_account WHERE account like 'goldeneye%'
Выкладываю ADOConnection.ConnectString+
ADOQuery.sql.text
Anatoly Podgoretsky (2010-06-29 13:51:00) [18]Это ты так партизана раскалываешь :-)
12 (2010-06-29 13:28:00) [19]
> то ты этим сказать то хотел?
просил привести
ADOConnection.ConnectString
ADOQuery.sql.text
и что пишет
Anatoly Podgoretsky (2010-06-29 13:10:00) [20]> 12 (29.06.2010 12:24:02) [2]
А почему ты складываешь две процедуры, что ты этим сказать то хотел?