![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поддержка ссылочной целосности [MSSQL2000]
Term © (2004-09-29 12:09:00)Как лучше сделать контроль ссылочной целостности
с помошью тригеров или
внешних ключей, почему спрашиваю тут мне сказали что задание RELATIONSHIPS типа не столь надёжно
вот и вкрались сомнения
YurikGL (2004-09-30 12:32:00) [1]
> Romkin © (30.09.04 12:13) [51]
Глюк не исчез...
YurikGL (2004-09-30 12:15:00) [2]
> Romkin © (30.09.04 12:13) [51]
А сам ведь не догадался :-)
Romkin (2004-09-30 12:13:00) [3]YurikGL © (30.09.04 12:07) [50] РРР! www.ibase.ru
YurikGL (2004-09-30 12:07:00) [4]
> Romkin © (30.09.04 11:03) [47]
Понятно, а откуда?
Romkin (2004-09-30 12:07:00) [5]НУ это уже оффтопик. Я тебе скрипт послал на johnmen@mail.ru, лови. Он большой :))
А проблему я решил просто разомкнув запрос на два, сначала CAT_ID, потом - count для этого ида. И все стало в порядке
Johnmen (2004-09-30 11:33:00) [6]>Romkin © (30.09.04 11:02) [45]
Так ты исследовал проблему ? Удалось избавиться от глюка ? Если да, то что было сделано ?
Какой скрипт ? ХП ты же привел...
Romkin (2004-09-30 11:03:00) [7]YurikGL © (30.09.04 10:55) [43] И при чем здесь FIrebird? Обнови IBX :))
Johnmen (2004-09-30 11:03:00) [8]>YurikGL © (30.09.04 10:55) [43]
Это глюк IBX.
Romkin (2004-09-30 11:02:00) [9]Только что воспроизвел :)) Скрипт интересует?
Johnmen (2004-09-30 11:01:00) [10]>Romkin ©
А вот так если
from NUMB_STATE NS
join NUMBER N on (NS.CAT_ID = N.CAT_ID and NS.N_ID = N.ID)
join OP_TYPE OT on (NS.NSTATE = OT.ID)
А вообще удаётся воспроизвести критическую ситуацию ?
YurikGL (2004-09-30 10:55:00) [11]Один из глюков СУБД Firebird, я недавно задавал этот вопрос
Использую IBX
В компоненте IbStoredProc в Design Time выбираю имя хранимой поцедуры. При попытке нажать на params вываливается сначала сабж, потом access violation ... 'gds32.dll' Read of address 00000000 и делфи зависает...
В систем32 хранится gds32.dll от файрберда. Попытка заменить его на gds32.dll от Ib6.5 разумеется привела к unavalible database.
Оказалось, что в данный глюк возникает, если в транзакции стоит no_wait
Romkin (2004-09-30 10:42:00) [12]Johnmen © (30.09.04 10:28) [41] НУ полностью это выглядит как
for select NS.CAT_ID, count(distinct NS.N_ID)
from (NUMB_STATE NS
join NUMBER N on (NS.CAT_ID = N.CAT_ID and NS.N_ID = N.ID)
join OP_TYPE OT on (NS.NSTATE = OT.ID))
where NS.SDATE <= :DATA and NS.FDATE >= :DATA and OT.INVISIBLE > 0
and N.PANS_ID = :PANS_ID
and (N.FRAME_ID = :F_FRAME_ID or :F_FRAME_ID is NULL)
group by NS.CAT_ID
into :CAT_ID, :ABSENT_NUM_CNT
do
if (ABSENT_NUM_CNT > 0
and (CAT_ID = F_CAT_ID or F_CAT_ID is NULL)) then
begin
select PLACES, DOPPLACES
from CATEGORY
where ID = :CAT_ID
into :CAT_PLACES, :CAT_DOPPLACES;
NUMBER_ALL = NUMBER_ALL - ABSENT_NUM_CNT;
PLACES_ALL = PLACES_ALL - ABSENT_NUM_CNT*CAT_PLACES;
DOPPLACES_ALL = DOPPLACES_ALL - ABSENT_NUM_CNT*CAT_DOPPLACES;
end
Причем в NUMB_STATE реально одна запись была, не попадающая в условие, т.е. ABSENT_NUM_CNT = 0 постоянно :)
Johnmen (2004-09-30 10:28:00) [13]>Romkin ©
А в where есть условия а-ляn.Field=ns.Field?
Romkin (2004-09-30 10:21:00) [14]Второе не помогает. Да я уже разомкнул на два, один по ID, другой по count :)
Johnmen (2004-09-30 10:18:00) [15]>Romkin © (30.09.04 10:03) [38]
Да, это весьма странно...
Надо, действительно, поэкспериментировать. Напр. джоин сделать неявным (from n, ns where n.ID = ns.ID ...) и/илиselect n.ID, ... group by n.id
Romkin (2004-09-30 10:03:00) [16]Johnmen © (30.09.04 09:55) [37] Да пытался сделать на днях :((
что-то вроде
for select ns.ID, count(distinct ns.CNT)
from n join ns on n.ID = ns.ID
where n.F_ID = ...
group by ns.id
into :ID, :COUNT_CNT
do suspend;
Причем в хранимой процедуре только... И именно count distinct... И именно с группировкой. И именно join. И read committed...
А баг оченно неприятный: сервер хавает виртуальную память. Именно виртуальную. И не отдает до упора :((
Понятно, через некоторое время она кончается. Со всеми вытекающими
Вот пытаюсь воспроизвести лабораторно
Johnmen (2004-09-30 09:55:00) [17]>Romkin © (30.09.04 09:54) [36]
Код бага в студию !
:)))
Romkin (2004-09-30 09:54:00) [18]Хотя буквально в понедельник влетел в хорошенький баг FB1.5.1... Только никак тестовый случай не сделаю :(
Romkin (2004-09-30 09:47:00) [19]Fay © (30.09.04 04:59) [33] Тормоза? Глюки?! MSSQL-щиков к FB подпускать нельзя :))) И наоборот тоже :)
У меня, например, на тестовой БД Firebird 1.0 делал MSSQL 7 по производительности ;)
Zacho (2004-09-30 08:27:00) [20]
> Я не полезу сейчас искать описания багов. Но указанную
> (во что она выливается) ошибку "исправляют" в каждом
> релизе.
За 6 лет работы с IB ни разу такую ошибку не видел. Может всё-таки конкретный пример приведешь ?
> Причём со стороны FB, с которым я работаю почти каждый
> день и люто его ненавижу за тормоза, глюки и
> "недоношенное" всё ваще.
У меня - ни тормозов, ни глюков ... Может всё-таки в ручках дело ?