Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
7-89584
AlexangerG
2003-08-15 13:41
2003.10.27
Обмен данными через LPT в реальном времени


14-89488
Davinchi
2003-10-09 14:51
2003.10.27
Скрытие программы от показа в ALT-TAB, CTRL-ALT-DEL и TaskBar e


7-89593
miguel1
2003-07-08 17:51
2003.10.27
Отправка факсов и голосовых сообщений через модем


3-89161
ZoKr
2003-10-07 07:33
2003.10.27
Сравнение дат


1-89288
LinOS
2003-10-17 05:57
2003.10.27
Указания компилятору что бы брал разные строки кода





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский