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

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

Поддержка ссылочной целосности [MSSQL2000]


Страницы:   1 2 3

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, с которым я работаю почти каждый
> день и люто его ненавижу за тормоза, глюки и
> "недоношенное" всё ваще.

У меня - ни тормозов, ни глюков ... Может всё-таки в ручках дело ?


Страницы:   1 2 3

Наверх

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