Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ошибка. [D6, MSSQL]


Страницы:   1 2

Гость ©   (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 работает нормально),там только одно условие (ключ по которому устанавливается связь с другой таблицей равен какому то числу)


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо