Форум: "Базы";
Текущий архив: 2003.10.27;
Скачать: [xml.tar.bz2];
ВнизОшибка. Найти похожие ветки
← →
Гость (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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.012 c