Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.27;
Скачать: CL | DM;

Вниз

Ошибка.   Найти похожие ветки 

 
Гость   (2003-10-06 13:48) [0]

Всем привет! Возникла такая проблема.
При удалении несуществующей записи MSSQL выдает сообщение
"[Microsoft][ODBC SQL Server Driver]Время ожидания истекло"(когда обычно выводит сообщение "0 Rows delete").И ссылки на эту запись естественно в других таблицах нету.Подскажите пожалуйста в чем здесь проблема.


 
Hooch ©   (2003-10-06 14:10) [1]

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


 
Гость   (2003-10-06 14:59) [2]

Вся проблема в том, что никакие проверки не делаются, просто через ADO посылается запрос типа "delete from имя_таблицы where
условие" и все.


 
Hooch ©   (2003-10-06 15:00) [3]

тригеров точно нет на удаление ?


 
Hooch ©   (2003-10-06 15:06) [4]

в Query Analyser"е тоже долго делается ?


 
Гость   (2003-10-06 15:34) [5]

Тригеров на удаление нет и в Query Analyser, как запустил запрос, так он и делается до тех пор, пока его сам не прирвеш.


 
paul_k ©   (2003-10-06 15:53) [6]

вместо delete поставь select * и в Analyser
скорее всего налажал в связях и условиях выборки
отладь чтоб select выдавался правильно а потом delete по тем же условиям


 
Гость   (2003-10-06 16:12) [7]

>> paul_k

С условиями все нормально (select работает нормально),там только одно условие (ключ по которому устанавливается связь с другой таблицей равен какому то числу)


 
KSergey ©   (2003-10-06 16:15) [8]

> [5] Гость (06.10.03 15:34)
> Тригеров на удаление нет и в Query Analyser, как запустил
> запрос, так он и делается до тех пор, пока его сам не прирвеш.

Ну т.е. и в Query Analyser запись удалить не удается? Вот это уточните.

Если в Query Analyser запись так же не удается удалить, то проверить: а тригеров точно нет? А то может в них какия зацикловочка вышла?
Ну либо косяк в БД прошел, теоретически все бывает.


 
paul_k ©   (2003-10-06 16:16) [9]

2 Гость
а можно на текст запроса посмотреть?


 
Гость   (2003-10-06 16:23) [10]

Да вот он:

delete from nrd_txt where kod_doc = :kod (где в качестве параметра передается целое число)


 
KSergey ©   (2003-10-06 16:25) [11]

Так а что же с удалением в QA?


 
paul_k ©   (2003-10-06 16:29) [12]

да... ну точно ворпос к тригерам или.. ссылочную целостность в базе настраивал? типа каскадное обновление и так далее

напиши sp_help nrd_txt и изучи результат на предмет FOREIGN KEY, ну и тригеров , естественно


 
Гость   (2003-10-06 16:37) [13]

>> KSergey

С удалением в QA ничего, как запускаеш запрос, так он и выполняется до тех пор пока не остановиш (что то типа бесконечного цикла), если запрос пишеш в Enterprise Manager, то выдается ошибка о которой я писал


 
paul_k ©   (2003-10-06 16:46) [14]

ну так что на предмет FOREIGN KEY,
попробуй выполнить следующее
select name from sysforeignkeys,sysobjects
where fkeyid = sysobjects.id and sysobjects.name = <table_name>
UNION
select name from sysforeignkeys,sysobjects
where rkeyid = sysobjects.id and sysobjects.name = <table_name>
если результат не пуст - то это предмет для рассмотрения


 
Гость   (2003-10-06 16:55) [15]

>>paul_k

Нет с этой таблицей не связано ни одного тригера , ни одной процедуры. Она связана с двумя другими таблицами, но строка которая удаляется не связана ни с одной из подчиненных таблиц.


 
paul_k ©   (2003-10-06 16:59) [16]

Прекрасный ответ.
именно на поиске тех отсутствующих строк в связанных таблицах у тебя и "зависает"
добавь в связанные таблицы нужные строки и все должно заработать


 
Гость   (2003-10-06 17:08) [17]

>> paul_k

Но обычно, если нету записей в подчиненных таблицах, сервер просто пишет сообщение типа "0 rows delete"(потому что если бы были он бы ругался :)). Вся проблема в том, что такое сообщение выдаетя не только на delete, но и на остальных операциях измененния данных.


 
paul_k ©   (2003-10-06 17:14) [18]

Гость
не понял так FOREIGN KEY у тебя установлены?
если да, то при попытке изменить/удалить запись должны быть изменены/удалены соответствующие записи во всех подчиненных таблицах.а у тебя наверняка у подчиненных есть ещё подчиненные.
и далее по циклу....
Я с этим борюсь прописывая все эти каскадные обновления руками в явном виде, а все связи таблиц просто сношу к .. бабушке.


 
Гость   (2003-10-06 17:23) [19]

У меня не установлены Foreign Key, я тоже прописываю все каскадные обновления руками(до того как у меня идет этот запрос, передним выполняются еще два, которые и удаляют соответствующие записи в подчиненных таблицах)


 
paul_k ©   (2003-10-06 17:32) [20]

осталось одно - смотреть план запроса


 
Гость   (2003-10-06 17:44) [21]

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


 
paul_k ©   (2003-10-06 17:51) [22]

В аналайзере надо запустить этот "глючный" запрос и посмотреть план запроса - Query ->Show Execution Plan


 
Hooch ©   (2003-10-07 07:24) [23]

а сколько записей в таблице ? и есть ли уникальный ключь ?


 
Гость   (2003-10-07 16:38) [24]

Где-то около 6000, без уникального ключа


 
A_N_D ©   (2003-10-07 16:47) [25]

А права на изменения таблицы имеются?


 
Гость   (2003-10-07 17:55) [26]

Да в том то весь и прикол, что все права есть, а изменить ничего не могу



Страницы: 1 вся ветка

Текущий архив: 2003.10.27;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.03 c
4-89660
S.M.
2003-08-22 11:17
2003.10.27
Desktop


1-89311
Иванько
2003-10-15 18:29
2003.10.27
Проблема при использовании LoadFromFile у TStrings


1-89266
x404
2003-10-17 00:41
2003.10.27
горизонтальная надпись на Tabsheets


14-89538
Soft
2003-10-07 22:56
2003.10.27
Kylix Open Edition он бесплатный для любого применения?


1-89319
P0tia
2003-10-15 19:35
2003.10.27
CoolBar