![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка. [D6, MSSQL]
Гость © (2003-10-06 13:48:00)
Всем привет! Возникла такая проблема.
При удалении несуществующей записи MSSQL выдает сообщение
"[Microsoft][ODBC SQL Server Driver]Время ожидания истекло"(когда обычно выводит сообщение "0 Rows delete").И ссылки на эту запись естественно в других таблицах нету.Подскажите пожалуйста в чем здесь проблема.
Гость (2003-10-07 17:55:00) [1]
Да в том то весь и прикол, что все права есть, а изменить ничего не могу
A_N_D (2003-10-07 16:47:00) [2]
А права на изменения таблицы имеются?
Гость (2003-10-07 16:38:00) [3]
Где-то около 6000, без уникального ключа
Hooch (2003-10-07 07:24:00) [4]
а сколько записей в таблице ? и есть ли уникальный ключь ?
paul_k (2003-10-06 17:51:00) [5]
В аналайзере надо запустить этот "глючный" запрос и посмотреть план запроса - Query ->Show Execution Plan
Гость (2003-10-06 17:44:00) [6]
План такой, что перед этим запросом идут два запроса, которые удаляют записи из подчиненных таблиц с которыми связана данная строка (и причем все эти запросы выполняются нормально), а потом я хочу удалить эту строку из главной таблицы сервер выдает ошибку.
paul_k (2003-10-06 17:32:00) [7]
осталось одно - смотреть план запроса
Гость (2003-10-06 17:23:00) [8]
У меня не установлены Foreign Key, я тоже прописываю все каскадные обновления руками(до того как у меня идет этот запрос, передним выполняются еще два, которые и удаляют соответствующие записи в подчиненных таблицах)
paul_k (2003-10-06 17:14:00) [9]
Гость
не понял так FOREIGN KEY у тебя установлены?
если да, то при попытке изменить/удалить запись должны быть изменены/удалены соответствующие записи во всех подчиненных таблицах.а у тебя наверняка у подчиненных есть ещё подчиненные.
и далее по циклу....
Я с этим борюсь прописывая все эти каскадные обновления руками в явном виде, а все связи таблиц просто сношу к .. бабушке.
Гость (2003-10-06 17:08:00) [10]
>> paul_k
Но обычно, если нету записей в подчиненных таблицах, сервер просто пишет сообщение типа "0 rows delete"(потому что если бы были он бы ругался :)). Вся проблема в том, что такое сообщение выдаетя не только на delete, но и на остальных операциях измененния данных.
paul_k (2003-10-06 16:59:00) [11]
Прекрасный ответ.
именно на поиске тех отсутствующих строк в связанных таблицах у тебя и "зависает"
добавь в связанные таблицы нужные строки и все должно заработать
Гость (2003-10-06 16:55:00) [12]
>>paul_k
Нет с этой таблицей не связано ни одного тригера , ни одной процедуры. Она связана с двумя другими таблицами, но строка которая удаляется не связана ни с одной из подчиненных таблиц.
paul_k (2003-10-06 16:46:00) [13]
ну так что на предмет 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:37:00) [14]
>> KSergey
С удалением в QA ничего, как запускаеш запрос, так он и выполняется до тех пор пока не остановиш (что то типа бесконечного цикла), если запрос пишеш в Enterprise Manager, то выдается ошибка о которой я писал
paul_k (2003-10-06 16:29:00) [15]
да... ну точно ворпос к тригерам или.. ссылочную целостность в базе настраивал? типа каскадное обновление и так далее
напиши sp_help nrd_txt и изучи результат на предмет FOREIGN KEY, ну и тригеров , естественно
KSergey (2003-10-06 16:25:00) [16]
Так а что же с удалением в QA?
Гость (2003-10-06 16:23:00) [17]
Да вот он:
delete from nrd_txt where kod_doc = :kod (где в качестве параметра передается целое число)
paul_k (2003-10-06 16:16:00) [18]
2 Гость
а можно на текст запроса посмотреть?
KSergey (2003-10-06 16:15:00) [19]
> [5] Гость (06.10.03 15:34)
> Тригеров на удаление нет и в Query Analyser, как запустил
> запрос, так он и делается до тех пор, пока его сам не прирвеш.
Ну т.е. и в Query Analyser запись удалить не удается? Вот это уточните.
Если в Query Analyser запись так же не удается удалить, то проверить: а тригеров точно нет? А то может в них какия зацикловочка вышла?
Ну либо косяк в БД прошел, теоретически все бывает.
Гость (2003-10-06 16:12:00) [20]
>> paul_k
С условиями все нормально (select работает нормально),там только одно условие (ключ по которому устанавливается связь с другой таблицей равен какому то числу)