|
|
|
Как бороться с блокировками в ASE 12.5.0.3
|
|||
|---|---|---|---|
|
#18+
Стабильная ситуация всех заблокировал 29 две минуты все отдыхают. 29 ничего сложного не делает, он запустил процедуру и должен модифицировать несколько записей в разных таблицах. Отдельно такая процедура выполняется моментально, но как видно не всегда. Как бороться с блокировками? На сервере кроме ASE ничего нет. Все пользовательские обращения к базе через хранимые процедуры. В процедурах частенько используется CREATE TABLE #name_table( ... Система: Microsoft Windows Server 2003 Сервер: Xeon(TM) CPU 2.80 ГГц, ОЗУ 2.00 ГБ Размер базы данных: ak_2004 - 2 GB = (1 GB data + 1 GB Log) Data Spase Usage Data (17.4%) 173.54 MB Indexes (12.8%) 128.43 MB Unused (4.9%) 49.39 MB Unreserved (64.9%) 648.65 MB Options: Check - Allow select into/bulk copy Check - Checkpoint on recovery Check - Free space accounting dump transaction akv_2004 to @path -- каждые 20 минут. Размер tempdb 603 Mb = (3Mb Data and Log + 300 Data + 300 Log) Options: Check - Allow select into/bulk copy Check - Truncate log on checkpoint Check - Checkpoint on recovery Check - Free space accounting SELECT @@version Adaptive Server Enterprise/12.5.0.3/EBF 11449 ESD#4/P/NT (IX86)/OS 4.0/rel12503/1939/32-bit/OPT/Sat Sep 20 22:28:57 2003 sp_cacheconfig 'default data cache' default data cache Active Default 700.00 Mb 700.00 Mb sp_configure 'procedure cache size' procedure cache size 3271 67488 32000 32000 memory pages(2k) dynamic sp_configure "max memory" max memory 33792 1536000 768000 768000 memory pages(2k) dynamic sp_configure "total logical memory" total logical memory 33792 852942 426460 426471 memory pages(2k) read-only sp_configure "total physical memory" total physical memory 0 852920 0 426460 memory pages(2k) read-only sp_who spid..status...........loginame...blk_spid....dbname.....cmd 17....recv sleep.....zaitsev........0.........ak_2004......AWAITING COMMAND 19....lock sleep......maxdrouj...29........ak_2004......DROP TABLE 21....recv sleep.....arapov........0.........ak_2004......AWAITING COMMAND 29....sleeping........chehova......0.........tempdb.......CREATE TABLE 31....running.........sa..............0.........master........SELECT 36....recv sleep.....zaitsev........0........ak_2004.......AWAITING COMMAND 38....lock sleep.....antonov.....29.........ak_2004.......DROP TABLE 40....recv sleep.....grigo...........0........ak_2004.......AWAITING COMMAND 43....lock sleep.....tihonovp....29.........tempdb........CREATE TABLE 44....recv sleep.....piskunov....0..........ak_2004.......AWAITING COMMAND 45....recv sleep.....topchiev....0..........ak_2004.......AWAITING COMMAND 53....lock sleep.....okureva.....29.........tempdb........CREATE TABLE 54....recv sleep.....fedchko.....0..........ak_2004.......AWAITING COMMAND 57....recv sleep.....sheky........0..........ak_2004.......AWAITING COMMAND 62....recv sleep.....lugaay.......0..........ak_2004.......AWAITING COMMAND 64....lock sleep.....beljva........29.........ak_2004.......DROP TABLE Как бороться с блокировками? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2004, 17:56 |
|
||
|
Как бороться с блокировками в ASE 12.5.0.3
|
|||
|---|---|---|---|
|
#18+
Скорее всего блокируются служебные таблицы в tempdb. На каком-то форуме надыбал полезную ХП. Выполни в БД sybsystemproc. Простой sp_lock непонятные данные дает, а этот вроде ничего. Выполни в момент блокировки sp_dba_locks и посмотри, какие таблицы заблокированы. /*************************************************/ create proc sp_dba_locks @spid int = null as select l.fid, l.spid, loginame=convert(char(12), suser_name(sp1.suid)), locktype = v1.name, "table" = object_name(l.id,l.dbid), l.page, dbname = db_name(l.dbid), l.class, context=v2.name from master..syslocks l, master..spt_values v1, master..spt_values v2, master..sysprocesses sp1 where l.type = v1.number and v1.type = "L" and (l.context+2048) = v2.number and v2.type = "L2" and (l.spid = @spid or l.fid = @spid or @spid is null) and sp1.spid=l.spid order by l.fid, l.spid, l.dbname, l.id, locktype, l.page /*************************************************/ Могу порекомендовать во всех ХП поставить create table #<name> в начало процедуры, а drop table #<name> в самый конец ХП. Еще можно посоветовать использовать не create table... insert, а select into и insert into. Для временных таблиц - самое оно. Выполняется быстрее, чем create table-insert. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2004, 18:30 |
|
||
|
Как бороться с блокировками в ASE 12.5.0.3
|
|||
|---|---|---|---|
|
#18+
Код: plaintext блокируются, а что с ними делать? Код: plaintext Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2004, 18:40 |
|
||
|
Как бороться с блокировками в ASE 12.5.0.3
|
|||
|---|---|---|---|
|
#18+
Можно изменить уровень блокировки для пользовательских таблиц, перестроить индексы (например, у тебя кластерный индекс по identity полю, блокируется последняя страница, с которой все работают и т.д.) Конкретики не хватает. Владимир ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2004, 20:41 |
|
||
|
Как бороться с блокировками в ASE 12.5.0.3
|
|||
|---|---|---|---|
|
#18+
Уровень блокировки я менял, это приводит к ошибкам логики :( А конкретнее - всегда вешается на операции CREATE TABLE в tempdb это видно по sh_who Все остальные случаи проходят на ура, значит где-то здесь нужно капать.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2004, 20:57 |
|
||
|
Как бороться с блокировками в ASE 12.5.0.3
|
|||
|---|---|---|---|
|
#18+
У меня было подобное, правда на ASA. В итоге победил подправив клиентскую программу на посылку commit после завершения ХП. Никаких изменений в базе эти ХП у меня не делали, просто сложные выборки через временные таблицы. Кстати, может помочь и вставка коммита в конец самой процедуры, после drop table #t. Третий метод борьбы - клиентская программа может работать в режиме connect->one_request->disconnect :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2004, 21:11 |
|
||
|
Как бороться с блокировками в ASE 12.5.0.3
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. Лучше все-таки посмотри, что блокируется, потому, как 29 у тебя создает таблицу в tempdb, а блокируются также и те, кто делает что-то в ak_2004. Если блокировки идут из-за тр. лога, то придется менять на select into, т.к. она в тр. лог не пишется. Если все-таки блокируются системные таблицы (sysobjects, например), то скорее всего придется переписывать ХП. Вообще-то, лучше покажи ХП, которую выполняет 29, и рез-т работы sp_dba_locks в момент работы ХП. Как вариант можно поиграться параметрами ASE, в названии которых присутствует lock или spinlock. Но при этом _обязательно_ читать administrator guide и perfomance and tuning guide по значениям этих параметров. Иначе можно такого наизменять... 8))) Код: plaintext Мне, например, помогло изменение уровня блокировок на некоторых (на наиболее используемых, а их процентов 30-40) таблицах с datapages на datarow. Правда, пришлось увеличивать число блокировок и поковырять некоторые параметры, ответственные за блокировки, но жить стало легче. Вот еще что - у тебя create table часом не внутри транзакции выполняется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 10:29 |
|
||
|
Как бороться с блокировками в ASE 12.5.0.3
|
|||
|---|---|---|---|
|
#18+
В принципе, можно сделать разделяемую псевдовременную таблицу в tempdb(и поместить её в model, чтобы она пересоздавалась при restart'е). Пользователей разделять по host_id (например сделать view которая будет показывать данные только текущей сессии). Тогда блокировки системных таблиц не будет, но нужно будет править код. Запусти sp_lock или более user friendly аналог во время блокировки - тогда можно будет говорить конкретнее. 2 Mladov Alexey: А зачем серверу блокировать журнал транзакций? Владимир ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 10:42 |
|
||
|
Как бороться с блокировками в ASE 12.5.0.3
|
|||
|---|---|---|---|
|
#18+
Код: plaintext процедуры, но мне кажется дело не в этом. Код: plaintext Блокируются те кто делает CREATE TABLE #<...> или DROP TABLE #<...> Это временные таблицы и как я понимаю создаются они на tempdb, а удаляется, почему-то, на ak_2004. ??? Кроме временных таблиц пользователи таблицы не создают и не удаляют, а блокируется именно эта операция, значит тормозит работу создание или удалением временных таблиц. 64....lock sleep.....beljva........29.........ak_2004....... DROP TABLE Как с этим бороться? или я не там копаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 10:46 |
|
||
|
Как бороться с блокировками в ASE 12.5.0.3
|
|||
|---|---|---|---|
|
#18+
2 immutable: А как же иначе??? А если _одновременно_ пишется лог нескольких пользователей? Насколько мне известно (может меня поправят, если я неправ) в ASE работа с тр. логом организована примерно так: каждый пользователь (коннект) имеет свой лог-буфер; его размер по умолчанию 512 байт(если не путаю); Все изменения в транзакции накапливаются в этом буфере; после заполнения буфера он сбрасывается на диск (т.е. вносятся изменения в последнюю страницу тр. лога), в момент записи происходит блокировка последней страницы тр. лога, после записи блокировка снимается. Если лог-буфер маленький (размер средней транзакции больше буфера), то сброс буфера на диск происходит часто, что при активности пользователей ведет к постоянным блокировкам последней страницы тр. лога и высокой конкуренции за доступ к ней. Чтобы этого избежать, надо увеличить размер лог-буфера (параметр user log cache size). Максимальный размер лог-буфера, который был запрошен, можно посмотреть, запустив sp_sysmon <интервал>, где <интервал> - интервал времени в формате 'hh:mm:ss', за который собирать статистику (минут на 5-10 в момент пиковых нагрузок). Если макс. размер user log cache равен установленному, то надо увеличить user log cache size. Затем посмотреть снова. У меня user log cache size равен 8192, а максимальный размер по данным sp_sysmon 7 тыс с небольшим. 2 Badger Ты все-таки помотри, какие таблицы лочатся. И покажи ХП. Не всю (если большая или засекреченная), а хотя бы основной алгоритм - begin tran? create table, drop table... Еще раз повторюсь: у тебя create table часом не внутри транзакции выполняется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 13:45 |
|
||
|
Как бороться с блокировками в ASE 12.5.0.3
|
|||
|---|---|---|---|
|
#18+
На время записи буфера это понятно, но не на несколько минут. Владимир ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 14:00 |
|
||
|
Как бороться с блокировками в ASE 12.5.0.3
|
|||
|---|---|---|---|
|
#18+
По многочисленным просьбам привожу текст процедуры, которая всех залочила, и список заблокированных таблиц. Процедура "ask_f_deal" запускается всеми пользователями чаще других она хорошо отлажена, в части производительности, и работает быстро. Но один два раза в час происходит подвешивание всего сервера на 2-3 минуты, что ни есть хорошо..... sp_who go fid.....spid.....status.....loginame.....origname.....hostname.....blk_spid.....dbname.....cmd.....block_xloid 0.....2.....sleeping.........[NULL].....[NULL]....................0.........master.....NETWORK.HANDLER......0 0.....3.....sleeping.........[NULL].....[NULL]....................0.........master.....NETWORK.HANDLER......0 0.....4.....sleeping.........[NULL].....[NULL]....................0.........master.....DEADLOCK.TUNE........0 0.....5.....sleeping.........[NULL].....[NULL]....................0.........master.....MIRROR.HANDLER.......0 0.....6.....sleeping.........[NULL].....[NULL]....................0.........master.....SHUTDOWN.HANDLER.....0 0.....7.....sleeping.........[NULL].....[NULL]....................0.........master.....ASTC.HANDLER.........0 0.....8.....sleeping.........[NULL].....[NULL]....................0.........tempdb.....CHECKPOINT.SLEEP.....0 0.....9.....sleeping.........[NULL].....[NULL]....................0.........master.....HK.WASH..............0 0.....10.....sleeping.........[NULL].....[NULL]....................0.........master.....HK.GC................0 0.....11.....sleeping.........[NULL].....[NULL]....................0.........master.....HK.CHORES............0 0.....12.....sleeping.........[NULL].....[NULL]....................0.........master.....DTC.COMMIT.SVC.......0 0.....18.....sleeping.........beljkova.....beljkova.....BELJKOVA.......0.........tempdb.....CREATE.TABLE.........0 0.....19.....recv.sleep.......zaitsev.....zaitsev.....ZOLOTAREV......0.........akv_2004.....AWAITING.COMMAND.....0 0.....23.....recv.sleep.......chehova.....chehova.....CONVERSBAN.....0.........akv_2004.....AWAITING.COMMAND.....0 0.....25.....recv.sleep.......shekersky.....shekersky.....SHEKERSKY2.....0.........akv_2004.....AWAITING.COMMAND.....0 0.....30.....recv.sleep.......topchiev.....topchiev.....TOPCHIEV.......0.........akv_2004.....AWAITING.COMMAND.....0 0.....34.....lock.sleep.......zaitsev.....zaitsev.....ZOLOTAREV......18........tempdb.....CREATE.TABLE.........0 0.....36.....lock.sleep.......sa.....sa.....DRUJININ.......18........akv_2004.....EXECUTE..............0 0.....37.....recv.sleep.......luganskay.....luganskay.....CONVERSBAN.....0.........akv_2004.....AWAITING.COMMAND.....0 0.....42.....recv.sleep.......abramova.....abramova.....CONVERSBAN.....0.........akv_2004.....AWAITING.COMMAND.....0 0.....46.....lock.sleep.......fedchenko.....fedchenko.....CONVERSBAN.....18........tempdb.....CREATE.TABLE.........0 0.....48.....lock.sleep.......maxdrouj.....maxdrouj.....DRUJININ.......18........tempdb.....CREATE.TABLE.........0 0.....49.....lock.sleep.......antonov.....antonov.....ANTONOV......18........tempdb.....CREATE.TABLE.........0 0.....53.....lock.sleep.......tihonovp.....tihonovp.....TIHONOVP.......18........tempdb.....CREATE.TABLE.........0 0.....57.....recv.sleep.......sa.....sa.....MANDRAKE.......0.........master.....AWAITING.COMMAND.....0 0.....61.....running..........sa.....sa.....ANTONOV_A......0.........akv_2004.....SELECT...............0 0.....63.....recv.sleep.......levina.....levina.....LEVINA.........0.........akv_2004.....AWAITING.COMMAND.....0 ............................................. sp_dba_locks go fid.....spid.....loginame.....locktype.....table.....page.....dbname.....class.....context..... 0.....18.....beljkova.....Ex_page.....sysobjects.....3.....tempdb.....Non.Cursor.Lock.....Fam.dur,.Inf.key..... 0.....18.....beljkova.....Ex_page.....sysobjects.....104.....tempdb.....Non.Cursor.Lock.....Fam.dur,.Inf.key..... 0.....18.....beljkova.....Ex_table.....sysobjects.....0.....tempdb.....Non.Cursor.Lock.....LOCK.CONTEXT.VALUES..... 0.....18.....beljkova.....Ex_page.....sysindexes.....29.....tempdb.....Non.Cursor.Lock.....Fam.dur,.Inf.key..... 0.....18.....beljkova.....Ex_table.....sysindexes.....0.....tempdb.....Non.Cursor.Lock.....LOCK.CONTEXT.VALUES..... 0.....18.....beljkova.....Ex_page.....syscolumns.....40.....tempdb.....Non.Cursor.Lock.....Fam.dur,.Inf.key..... 0.....18.....beljkova.....Ex_page.....syscolumns.....323.....tempdb.....Non.Cursor.Lock.....Fam.dur,.Inf.key..... 0.....18.....beljkova.....Ex_page.....syscolumns.....324.....tempdb.....Non.Cursor.Lock.....LOCK.CONTEXT.VALUES..... 0.....18.....beljkova.....Ex_page.....syscolumns.....325.....tempdb.....Non.Cursor.Lock.....LOCK.CONTEXT.VALUES..... 0.....18.....beljkova.....Ex_page.....syscolumns.....326.....tempdb.....Non.Cursor.Lock.....LOCK.CONTEXT.VALUES..... 0.....18.....beljkova.....Ex_table-blk.....syscolumns.....0.....tempdb.....Non.Cursor.Lock.....LOCK.CONTEXT.VALUES..... 0.....18.....beljkova.....Sh_table.....systypes.....0.....tempdb.....Non.Cursor.Lock.....LOCK.CONTEXT.VALUES..... 0.....18.....beljkova.....Ex_page.....sysprocedures.....121.....tempdb.....Non.Cursor.Lock.....Fam.dur,.Inf.key..... 0.....18.....beljkova.....Ex_page.....sysprocedures.....129.....tempdb.....Non.Cursor.Lock.....Fam.dur,.Inf.key..... 0.....18.....beljkova.....Ex_page.....sysprocedures.....130.....tempdb.....Non.Cursor.Lock.....LOCK.CONTEXT.VALUES..... 0.....18.....beljkova.....Ex_table.....sysprocedures.....0.....tempdb.....Non.Cursor.Lock.....LOCK.CONTEXT.VALUES..... 0.....18.....beljkova.....Ex_page.....syscomments.....145.....tempdb.....Non.Cursor.Lock.....Fam.dur,.Inf.key..... 0.....18.....beljkova.....Ex_table-blk.....syscomments.....0.....tempdb.....Non.Cursor.Lock.....LOCK.CONTEXT.VALUES..... 0.....18.....beljkova.....Ex_intent.....sysdepends.....0.....tempdb.....Non.Cursor.Lock.....LOCK.CONTEXT.VALUES..... 0.....18.....beljkova.....Ex_intent.....systabstats.....0.....tempdb.....Non.Cursor.Lock.....LOCK.CONTEXT.VALUES..... 0.....18.....beljkova.....Ex_row.....systabstats.....443.....tempdb.....Non.Cursor.Lock.....LOCK.CONTEXT.VALUES..... 0.....18.....beljkova.....Ex_table.....#f_deal_temp_01000180010283263.....0.....tempdb.....Non.Cursor.Lock.....LOCK.CONTEXT.VALUES..... 0.....18.....beljkova.....Ex_table....._f_deal_te_f_clie_729280942.....0.....tempdb.....Non.Cursor.Lock.....LOCK.CONTEXT.VALUES..... 0.....36.....sa.....Sh_intent.....systabstats.....0.....akv_2004.....Non.Cursor.Lock.....LOCK.CONTEXT.VALUES..... 0.....36.....sa.....Sh_intent.....sysstatistics.....0.....akv_2004.....Non.Cursor.Lock.....LOCK.CONTEXT.VALUES..... 0.....61.....sa.....Sh_intent.....spt_values.....0.....master.....Non.Cursor.Lock.....LOCK.CONTEXT.VALUES..... CREATE.PROCEDURE.dbo.ask_f_deal;1 ( ....@c_membertype_1.........int.........=.NULL, ....@c_membertype_2.........int.........=.NULL, ....@c_membertype_3.........int.........=.NULL, ....@c_membertype_4.........int.........=.NULL, ....@c_inout_1..............int.........=.NULL, ....@c_inout_2..............int.........=.NULL, ....@c_inout_3..............int.........=.NULL, ....@c_sumkind..............int.........=.NULL, ....@f_deal.................int.........=.NULL, ....@dtmake_1...............datetime....=.NULL, ....@dtmake_2...............datetime....=.NULL, ....@date_time_11...........datetime....=.NULL, ....@date_time_12...........datetime....=.NULL, ....@date_time_21...........datetime....=.NULL, ....@date_time_22...........datetime....=.NULL, ....@date_time_31...........datetime....=.NULL, ....@date_time_32...........datetime....=.NULL, ....@date_time_41...........datetime....=.NULL, ....@date_time_42...........datetime....=.NULL, ....@date_time_51...........datetime....=.NULL, ....@date_time_52...........datetime....=.NULL, ....@check_c_classificator..int.........=.NULL, ....@check_c_market.........int.........=.NULL, ....@check_f_client_1.......int.........=.NULL, ....@check_f_client_2.......int.........=.NULL, ....@check_f_instr..........int.........=.NULL, ....@check_f_portf..........int.........=.NULL, ....@check_l_currencyuser...int.........=.NULL, ....@c_market...............int.........=.NULL, ....@c_dealstatus...........int.........=.NULL, ....@f_user.................int.........=.NULL, ....@f_client12.............int.........=.NULL, ....@c_clienttype...........int.........=.NULL, ....@broker.................int.........=.NULL, ....@svich..................int.........=.NULL, ....@commission.............int.........=.NULL, ....@f_client_4.............int.........=.NULL, ....@f_client_3.............int.........=.NULL, ....@check_date_1or2........int.........=.NULL, ....@date_time_1or2.........datetime....=.NULL, ....@c_currency_1...........int.........=.NULL, ....@c_currency_2...........int.........=.NULL, ....@c_currency_12..........int.........=.NULL, ....@number.................varchar(20).=.NULL, ....@f_instr................int.........=.NULL, ....@c_order................int.........=.NULL, ....@f_client_2.............int.........=.NULL, ....@finans.................int.........=.NULL, ....@check_f_mean...........int.........=.NULL, ....@c_jurtype..............int.........=.NULL, ....@c_settype..............int.........=.NULL, ....@c_class_cancel.........int.........=.NULL, ....@c_clientkind...........int.........=.NULL, ....@c_clientgroup..........int.........=.NULL, ....@check_srok.............int.........=.NULL, ....@srok...................int.........=.NULL, ....@c_market_mbk...........int.........=.NULL, ....@c_market_forex.........int.........=.NULL, ....@c_market_netting.......int.........=.NULL, ....@c_market_journal.......int.........=.NULL, ....@c_market_pay...........int.........=.NULL, ....@c_market_note..........int.........=.NULL, ....@c_currency_national....int.........=.NULL, ....@c_dogtype_100..........int.........=.NULL, ....@c_dogtype_200..........int.........=.NULL, ....@zero_portf.............int.........=.NULL ) AS BEGIN /************************************************************************\ *...Процедура:..ask_f_deal * *....Описание:..Получение.записей.из.таблицы.f_deal.(реестры.сделок) * *.....История:.16.07.2003 -.ООО.'Аквилон' * *...Аргументы:..@c_membertype_1.........-.тип.участника:.инициатор *...............@c_membertype_2.........-.тип.участника:.контрагент *...............@c_membertype_3.........-.тип.участника:.свич *...............@c_membertype_4.........-.тип.участника:.брокер *...............@c_inout_1..............-.номер.суммы.1 *...............@c_inout_2..............-.номер.суммы.2 *...............@c_inout_3..............-.номер.суммы.3 *...............@c_sumkind..............-.положительная.сумма *...............@f_deal.................-.сделка *...............@dtmake_1...............-.начальная.дата.создания *...............@dtmake_2...............-.конечная.дата.создания *...............@date_time_11...........-.начальная.дата.валютирования.1 *...............@date_time_12...........-.конечная.дата.валютирования.1 *...............@date_time_21...........-.начальная.дата.валютирования.2 *...............@date_time_22...........-.конечная.дата.валютирования.2 *...............@date_time_31...........-.начальная.дата.договора.3 *...............@date_time_32...........-.конечная.дата.договора.3 *...............@date_time_41...........-.Фактическая.поставка.ЦБ.с.4 *...............@date_time_42...........-.Фактическая.поставка.ЦБ.по.4 *...............@date_time_51...........-.Фактическая.оплата.ЦБ.с.5 *...............@date_time_52...........-.Фактическая.оплата.ЦБ.по.5 *...............@check_c_classificator..-.запрос.по.набору.типов.сделок *...............@check_c_market.........-.запрос.по.набору.рвнков *...............@check_f_client_1.......-.запрос.по.набору.инициаторов *...............@check_f_client_2.......-.запрос.по.набору.контрагентов *...............@check_f_instr..........-.запрос.по.набору.инструментов *...............@check_l_currencyuser...-.запрос.по.набору.пар.валют *...............@c_market...............-.рынок *...............@c_dealstatus...........-.статус.сделки *...............@f_user.................-.пользователь *...............@f_client12.............-.участник *...............@c_clienttype...........-.тип.контрагента *...............@broker.................-.брокер.Да/Нет *...............@svich..................-.свич.Да/Нет *...............@commission.............-.Тип.отправленного.сообщения *...............@f_client_4.............-.брокер.(контрагент) *...............@f_client_3.............-.свич.(контрагент) *...............@check_date_1or2........-.запрос.по.дате.валютирования.1,2 *...............@date_time_1or2.........-.дата.валютирования.1,2 *...............@c_currency_1...........-.валюта.1 *...............@c_currency_2...........-.валюта.2 *...............@c_currency_12..........-.валюта.1,2 *...............@number.................-.номер.сделки.или.идентификатор *...............@f_instr................-.инструмент *...............@c_order................-.условия.расчетов *...............@finans.................-.предоплата *...............@check_f_mean...........-.запрос.по.набору.значений.категорий *...............@c_jurtype..............-.тип.связи *...............@c_settype..............-.набор *...............@c_clientkind...........-.вид.клиента *...............@c_clientgroup..........-.группа.клиента *...............@check_srok.............-.запрос.по.сроку.(знак) *...............@srok...................-.срок.(число) *...............@c_market_mbk...........-.Рынок.МБК *...............@c_market_forex.........-.Рынок.Форекс *...............@c_market_netting.......-.Рынок.Неттинг *...............@c_market_journal.......-.Рынок.Журнал *...............@c_market_pay...........-.Рынок.Платеж *...............@c_market_note..........-.Рынок.ЦБ *...............@c_currency_national....-.Национальная.валюта *...............@c_dogtype_100..........-.договор.по.сделке *...............@c_dogtype_200..........-.заявка.на.сделку * *..Возвращает:..f_deal..............-.идентификатор.сделки *...............f_deal_reference....-.идентификатор.связанной.сделки *...............c_jurtype...........-.тип.связи *...............c_market............-.рынок *...............c_classificator.....-.классификатор *...............c_class_name........-.название.классификатора *...............c_dealstatus........-.статус.сделки *...............f_path..............-.путь.сделки *...............number..............-.номер.сделки *...............number_jur..........-.номер.сделки.журнал *...............descr...............-.примечание *...............rollover............-.флаг.ролловера *...............comission...........-.флаг.комиссии.для.брокера *-----.f_sum.-.первая.сумма.сделки.-------------------------------------------------- *...............f_sum_1.............-.идентификатор *...............f_sumtype_1............-.тип.суммы *...............c_currency_1........-.валюта *...............currency_iso_1......-.код.валюты *...............date_time_1.........-.дата.платежа *...............value_1.................-.сумма *-----.f_member.-.первый.участник.сделки.-------------------------------------------- *...............f_member_1..........-.идентификатор *...............c_membertype_1......-.тип.участника *...............f_client_1..........-.контрагент *...............code_1..............-.код *...............rtscode_1...........-.код.ММВБ *...............rsbcode_1...........-.код.в.Автоматизированной.Банковской.Системе *...............firstname_1.........-.название *...............f_portf_1...........-.портфель *...............f_portf_code_1......-.название.портфеля *-----.f_sum.-.вторая.сумма.сделки.-------------------------------------------------- *...............f_sum_2.............-.идентификатор *...............f_sumtype_2.........-.тип.суммы *...............c_currency_2........-.валюта *...............currency_iso_2......-.код.валюты *...............date_time_2.........-.дата.платежа *...............value_2.............-.сумма *-----.f_member.-.второй.участник.сделки.-------------------------------------------- *...............f_member_2..........-.идентификатор *...............c_membertype_2......-.тип.участника *...............f_client_2..........-.контрагент *...............code_2..............-.код *...............rtscode_2...........-.код.ММВБ *...............rsbcode_2...........-.код.в.Автоматизированной.Банковской.Системе *...............firstname_2.........-.название *...............f_portf_2...........-.портфель *...............f_portf_code_2......-.название.портфеля *-----.f_sum.-.третья.сумма.сделки.-------------------------------------------------- *...............f_sum_3.............-.идентификатор *...............f_sumtype_3.........-.тип.суммы *...............c_currency_3........-.валюта *...............currency_iso_3......-.код.валюты *...............date_time_3.........-.дата.платежа *...............value_3.............-.сумма *-----.f_member.-.третий.участник.сделки.-------------------------------------------- *...............f_member_3..........-.идентификатор *...............c_membertype_3......-.тип.участника *...............f_client_3..........-.контрагент *...............code_3..............-.код *...............rtscode_3...........-.код.ММВБ *...............rsbcode_3...........-.код.в.Автоматизированной.Банковской.Системе *...............firstname_3.........-.название.свича.(контрагента) *-----.f_member.-.четвертый.участник.сделки.----------------------------------------- *...............f_member_4..........-.идентификатор *...............c_membertype_4......-.тип.участника *...............f_client_4..........-.контрагент *...............code_4..............-.код *...............rtscode_4...........-.код.ММВБ *...............rsbcode_4...........-.код.в.Автоматизированной.Банковской.Системе *...............firstname_4.........-.название.брокера.(посредника) *-----.ввод.сделки.----------------------------------------------------------------- *...............f_user_1............-.идентификатор.пользователя *...............usermake_1..........-.имя.пользователя *...............userdescr_1.........-.ФИО.пользователя *...............dt_make_1...........-.дата.ввода.сделки *-----.последняя.модификация.сделки.------------------------------------------------ *...............f_user_2............-.идентификатор.пользователя *...............usermodify_2........-.имя.пользователя *...............userdescr_2.........-.ФИО.пользователя *...............dt_modify_2.........-.дата.модификации *-----.f_rate.-.курс/ставка.-------------------------------------------------------- *...............f_rate..............-.идентификатор.ставки.сделки *...............rate................-.курс/ставка.сделки *...............real_rate...........-.курс/ставка.сделки *...............revers..............-.флаг.обратного.курса *...............finans..............-.флаг.предоплаты *-----.дополнительные.поля.--------------------------------------------------------- *...............market_name.........-.название.рынка *...............c_opertype..........-.типы.переходов *...............c_metod.............-.методы.начисления *...............c_sumkind...........-.положительная.сумма *-----.корр.счета.------------------------------------------------------------------ *...............f_account_1.........-.счет.для.1-й.суммы *...............f_account_2.........-.счет.для.2-й.суммы *...............f_account_3.........-.счет.для.3-й.суммы *-----.позиции.--------------------------------------------------------------------- *...............f_pos_11............-.идентификатор *...............f_pos_12............-.идентификатор *...............f_pos_13............-.идентификатор *...............f_pos_21............-.идентификатор *...............f_pos_22............-.идентификатор *...............f_pos_23............-.идентификатор *-----.неттинг/rollover.------------------------------------------------------------ *...............netting_value_1.....-.включена.в.неттинг.1-я.сумма *...............netting_value_2.....-.включена.в.неттинг.2-я.сумма *...............rollover_value_1....-.включена.в.rollover.1-я.сумма *...............rollover_value_2....-.включена.в.rollover.1-я.сумма *-----.журналы.--------------------------------------------------------------------- *...............journal_l_jurnal....-.идентификатор.связи.с.журналом *...............journal_f_deal......-.сделка.журнала *...............journal_f_d_f_deal..-.сделка,.вошедшая.в.журнал *...............journal_add.........-.флаг=1,.если.сделка.вошла.в.журнал *...............f_instr_1...........-.инструмент *...............f_issue_1...........-.выпуск *...............f_instr_code_1......-.код.инструмента.и.выпуска *...............do_dognum_1.........-.номер.договора *...............do_date_time_1......-.дата.договора *...............do_dogform_name_1...-.форма.договора *...............do_descr_1..........-.описание.договора *...............do_dognum_2.........-.номер.заявки *...............do_date_time_2......-.дата.заявки *...............do_dogform_name_2...-.форма.заявки *...............do_descr_2..........-.описание.заявки *...............rate_pay............-.курс.расчетов *...............st_date_pay_1.......-.дата.расчетов *...............st_date_begin_1.....-.дата.начала.векселя.(не.используется) *...............st_date_end_1.......-.дата.погашения.векселя.(не.используется) *...............fs_date_pay_1.......-.дата.поставки *...............f_pricetype.........-.тип.цены *...............f_pricetype_name....-.название.типа.цены *...............f_client12..........-.запрос.по.участнику *...............c_currency_12.......-.запрос.по.валюте.1,2 *...............rate_pay............-.курс.расчетов *...............selectrow...........-.выделение.строки * \************************************************************************/ ....DECLARE.@selectrow..........int ....DECLARE.@row_count..........int ....DECLARE.@f_user_id..........int ....DECLARE.@c_sumkind_minus....int ....DECLARE.@c_usergroup........int ....DECLARE.@c_category.........int ....DECLARE.@f_mean.............int ....DECLARE.@f_client...........int ....DECLARE.@number_test........char(20) ....DECLARE.@number_acc.........char(20) ....DECLARE.@f_account..........int ....DECLARE.@c_settype_13.......int ....DECLARE.@c_sumstock_1.......int ....DECLARE.@c_sumstock_2.......int ....DECLARE.@c_sumstock_3.......int ....DECLARE.@c_order_1..........int ....DECLARE.@c_order_2..........int ....DECLARE.@c_order_3..........int ....DECLARE.@c_market_stock.....int ....DECLARE.@c_market_bond......int ....DECLARE.@c_market_bill......int ....DECLARE.@c_market_depo_bond.int ....DECLARE.@c_market_depo_bill.int ....DECLARE.@c_market_depo_pay..int ....DECLARE.@c_conftype_53......int ....DECLARE.@c_conftype_54......int ..../*.Глобальные.константы.*/ ....SELECT.@c_sumkind_minus.....=.2 ....SELECT.@c_settype_13........=.13 ....SELECT.@c_order_1...........=.1 ....SELECT.@c_order_2...........=.2 ....SELECT.@c_order_3...........=.3 ....SELECT.@c_sumstock_1........=.1 ....SELECT.@c_sumstock_2........=.2 ....SELECT.@c_sumstock_3........=.3 ....SELECT.@c_market_stock......=.6 ....SELECT.@c_market_bond.......=.7 ....SELECT.@c_market_bill.......=.8 ....SELECT.@c_market_depo_bond..=.10 ....SELECT.@c_market_depo_bill..=.11 ....SELECT.@c_market_depo_pay...=.12 ....SELECT.@c_conftype_53.......=.53 ....SELECT.@c_conftype_54.......=.54 /*-----.f_user_id.-.пользователь.и.его.группа.-------------------------------------*/ ....SELECT ............@f_user_id......=.f_user, ............@c_usergroup....=.c_usergroup, ............@f_client.......=.f_client ......FROM ............f_user .....WHERE ............name.=.suser_name() /*--.Временные.таблицы.-------------------------------------------------------------*/ ....CREATE.TABLE.#f_deal_account ....( ........f_deal..............int.............NULL ) ..../*.Создание.временной.таблицы.сделок.*/ ....CREATE.TABLE.#f_deal_temp ....( /*-----f_deal.-.сделка.-------------------------------------------------------------*/ ........f_deal..............int.............NULL, ........f_deal_reference....int.............NULL, ........c_jurtype...........int.............NULL, ........c_market............int.............NULL, ........c_classificator.....int.............NULL, ........c_classif_name......varchar(30).....NULL, ........c_dealstatus........int.............NULL, ........f_path..............int.............NULL, ........number..............varchar(20).....NULL, ........number_jur..........varchar(20).....NULL, ........descr...............varchar(100)....NULL, ........rollover............int.............NULL, ........commission..........int.............NULL, /*-----f_sum.-.первая.сумма.сделки.-------------------------------------------------*/ ........f_sum_1.............int.............NULL, ........f_sumtype_1.........int.............NULL, ........c_currency_1........int.............NULL, ........currency_iso_1......varchar(5)......NULL, ........date_time_1.........datetime........NULL, ........st_date_pay_1.......datetime........NULL, ........value_1.............decimal(18,6)...NULL, /*-----f_member.-.первый.участник.сделки.-------------------------------------------*/ ........f_member_1..........int.............NULL, ........c_membertype_1......int.............NULL, ........f_client_1..........int.............NULL, ........c_clienttype_1......int.............NULL, ........code_1..............varchar(6)......NULL, ........rtscode_1...........varchar(6)......NULL, ........rsbcode_1...........varchar(6)......NULL, ........firstname_1.........varchar(20).....NULL, ........f_portf_1...........int.............NULL, ........f_portf_code_1......varchar(6)......NULL, /*-----f_sum.-.вторая.сумма.сделки.-------------------------------------------------*/ ........f_sum_2.............int.............NULL, ........f_sumtype_2.........int.............NULL, ........c_currency_2........int.............NULL, ........currency_iso_2......varchar(5)......NULL, ........date_time_2.........datetime........NULL, ........value_2.............decimal(18,6)...NULL, /*-----f_member.-.второй.участник.сделки.-------------------------------------------*/ ........f_member_2..........int.............NULL, ........c_membertype_2......int.............NULL, ........f_client_2..........int.............NULL, ........c_clienttype_2......int.............NULL, ........c_clientgroup_2.....int.............NULL, ........code_2..............varchar(6)......NULL, ........rtscode_2...........varchar(6)......NULL, ........rsbcode_2...........varchar(6)......NULL, ........firstname_2.........varchar(20).....NULL, ........f_portf_2...........int.............NULL, ........f_portf_code_2......varchar(6)......NULL, /*-----f_sum.-.третья.сумма.сделки.-------------------------------------------------*/ ........f_sum_3.............int.............NULL, ........f_sumtype_3.........int.............NULL, ........c_currency_3........int.............NULL, ........currency_iso_3......varchar(5)......NULL, ........date_time_3.........datetime........NULL, ........value_3.............decimal(18,6)...NULL, /*-----f_member.-.третий.участник.сделки.-------------------------------------------*/ ........f_member_3..........int.............NULL, ........c_membertype_3......int.............NULL, ........f_client_3..........int.............NULL, ........c_clienttype_3......int.............NULL, ........code_3..............varchar(6)......NULL, ........rtscode_3...........varchar(6)......NULL, ........rsbcode_3...........varchar(6)......NULL, ........firstname_3.........varchar(20).....NULL, /*-----f_member.-.четвертый.участник.сделки.-------------------------------------------*/ ........f_member_4..........int.............NULL, ........c_membertype_4......int.............NULL, ........f_client_4..........int.............NULL, ........c_clienttype_4......int.............NULL, ........code_4..............varchar(6)......NULL, ........rtscode_4...........varchar(6)......NULL, ........rsbcode_4...........varchar(6)......NULL, ........firstname_4.........varchar(20).....NULL, /*-----создал.----------------------------------------------------------------------*/ ........f_user_1............int.............NULL, ........usermake_1..........varchar(30).....NULL, ........userdescr_1.........varchar(100)....NULL, ........dt_make_1...........datetime........NULL, /*-----последние.изтенения.сделал.--------------------------------------------------*/ ........f_user_2............int.............NULL, ........usermodify_2........varchar(30).....NULL, ........userdescr_2.........varchar(100)....NULL, ........dt_modify_2.........datetime........NULL, /*-----дополнительные.поля.---------------------------------------------------------*/ ........c_currency_sum......int.............NULL, ........f_rate..............int.............NULL, ........rate................decimal(18,6)...NULL, ........real_rate...........decimal(18,6)...NULL, ........revers..............int.............NULL, ........finans..............int.............NULL, ........market_name.........varchar(30).....NULL, ........c_opertype..........int.............NULL, ........c_metod.............int.............NULL, ........c_sumkind...........int.............NULL, ........f_account_1.........int.............NULL, ........f_account_2.........int.............NULL, ........f_account_3.........int.............NULL, ........f_pos_11............int.............NULL, ........f_pos_12............int.............NULL, ........f_pos_13............int.............NULL, ........f_pos_21............int.............NULL, ........f_pos_22............int.............NULL, ........f_pos_23............int.............NULL, /*...не.возвращаемые.поля............*/ ........netting_value_1.....int.............NULL, ........netting_value_2.....int.............NULL, ........rollover_value_1....int.............NULL, ........rollover_value_2....int.............NULL, ........journal_l_jurnal....int.............NULL, ........journal_f_deal......int.............NULL, ........journal_f_d_f_deal..int.............NULL, ........journal_add.........int.............NULL, ........f_mean..............int.............NULL, ........selectrow...........int.............NULL, ........textcolor...........int.............NULL, ........c_membertype........int.............NULL, ........srok................int.............NULL, ........fx_dt_make..........datetime........NULL, ........fx_max_date.........datetime........NULL, /*-----ценные.бумаги.--------------------------------------------------*/ ........f_instr_1...........int.............NULL, ........f_issue_1...........int.............NULL, ........f_instr_code_1......varchar(15).....NULL, ........f_term..............int.............NULL, ........c_order.............int.............NULL, ........do_dognum_1.........varchar(20).....NULL, ........do_date_time_1......datetime........NULL, ........do_c_dogform_1......int.............NULL, ........do_dogform_name_1...varchar(20).....NULL, ........do_descr_1..........varchar(100)....NULL, ........do_dognum_2.........varchar(20).....NULL, ........do_date_time_2......datetime........NULL, ........do_c_dogform_2......int.............NULL, ........do_dogform_name_2...varchar(20).....NULL, ........do_descr_2..........varchar(100)....NULL, ........st_date_begin_1.....datetime........NULL, ........st_date_end_1.......datetime........NULL, ........fs_date_pay_1.......datetime........NULL, ........f_pricetype.........int.............NULL, ........f_pricetype_name....varchar(3)......NULL, ........rate_pay............decimal(18,6)...NULL, ........date_pay............datetime........NULL, ........date_delivery.......datetime........NULL, ........date_min............datetime........NULL, ........fp_client_1.........int.............NULL, ........fp_client_2.........int.............NULL, ........f_client12..........int.............default.0, ........swift_telex.........int.............default.3 ....) ..../*.Проверка.параметров.*/ ....If..@dtmake_1...........IS.NULL.OR ........@dtmake_2...........IS.NULL.OR ........@c_membertype_1.....IS.NULL.OR ........@c_membertype_2.....IS.NULL.OR ........@c_membertype_3.....IS.NULL.OR ........@c_membertype_4.....IS.NULL.OR ........@c_sumkind..........IS.NULL ....BEGIN ........Goto.err ....END ..../*.Увеличиваем.дату.на.один.день.*/ ....SELECT..@dtmake_2.=.DATEADD(DAY,.1,.@dtmake_2) /*----------------------------------------------------------------------------------*/ /*-----.ПОЛУЧЕНИЕ.ВСЕХ.ВОЗМОЖНЫХ.СДЕЛОК.(разными.способами)-------------------------*/ /*----------------------------------------------------------------------------------*/ ........IF.@check_date_1or2.>.0 ........BEGIN ............IF.@check_date_1or2.=.1...../*.=.*/ ............BEGIN ................INSERT.INTO.#f_deal_temp ................( ........................f_deal, ........................c_market, ........................c_classificator, ........................c_dealstatus, ........................f_path, ........................f_user_1, ........................number, ........................descr, ........................dt_make_1, ........................fx_dt_make, ........................usermodify_2, ........................dt_modify_2 ................) ................SELECT.DISTINCT ........................fd.f_deal, ........................fd.c_market, ........................fd.c_classificator, ........................fd.c_dealstatus, ........................fd.f_path, ........................fd.f_user, ........................fd.number, ........................fd.descr, ........................fd.dt_make, ........................fd.dt_make, ........................fd.user_modify, ........................fd.dt_modify ..................FROM ........................f_sum.....fs, ........................f_sumtype.fst, ........................f_deal....fd .................WHERE ........................fs.date_time.=.@date_time_1or2.............AND ........................fs.f_sumtype.=.fst.f_sumtype...............AND ........................fst.c_inout..IN.(.@c_inout_1,.@c_inout_2.).AND ........................fs.f_deal....=.fd.f_deal...................AND ........................fd.dt_make..>=.@dtmake_1...................AND ........................fd.dt_make..<..@dtmake_2 ............END ............ELSE.IF.@check_date_1or2.=.2...../*.>.*/ ............BEGIN ................INSERT.INTO.#f_deal_temp ................( ........................f_deal, ........................c_market, ........................c_classificator, ........................c_dealstatus, ........................f_path, ........................f_user_1, ........................number, ........................descr, ........................dt_make_1, ........................fx_dt_make, ........................usermodify_2, ........................dt_modify_2 ................) ................SELECT.DISTINCT ........................fd.f_deal, ........................fd.c_market, ........................fd.c_classificator, ........................fd.c_dealstatus, ........................fd.f_path, ........................fd.f_user, ........................fd.number, ........................fd.descr, ........................fd.dt_make, ........................fd.dt_make, ........................fd.user_modify, ........................fd.dt_modify ..................FROM ........................f_sum.....fs, ........................f_sumtype.fst, ........................f_deal....fd .................WHERE ........................fs.date_time.>.@date_time_1or2.............AND ........................fs.f_sumtype.=.fst.f_sumtype...............AND ........................fst.c_inout..IN.(.@c_inout_1,.@c_inout_2.).AND ........................fs.f_deal....=.fd.f_deal...................AND ........................fd.dt_make..>=.@dtmake_1...................AND ........................fd.dt_make..<..@dtmake_2 ............END ............ELSE.IF.@check_date_1or2.=.3...../*.<.*/ ............BEGIN ................INSERT.INTO.#f_deal_temp ................( ........................f_deal, ........................c_market, ........................c_classificator, ........................c_dealstatus, ........................f_path, ........................f_user_1, ........................number, ........................descr, ........................dt_make_1, ........................fx_dt_make, ........................usermodify_2, ........................dt_modify_2 ................) ................SELECT.DISTINCT ........................fd.f_deal, ........................fd.c_market, ........................fd.c_classificator, ........................fd.c_dealstatus, ........................fd.f_path, ........................fd.f_user, ........................fd.number, ........................fd.descr, ........................fd.dt_make, ........................fd.dt_make, ........................fd.user_modify, ........................fd.dt_modify ..................FROM ........................f_sum.....fs, ........................f_sumtype.fst, ........................f_deal....fd .................WHERE ........................fs.date_time.<.@date_time_1or2.............AND ........................fs.f_sumtype.=.fst.f_sumtype...............AND ........................fst.c_inout..IN.(.@c_inout_1,.@c_inout_2.).AND ........................fs.f_deal....=.fd.f_deal...................AND ........................fd.dt_make..>=.@dtmake_1...................AND ........................fd.dt_make..<..@dtmake_2 ............END ........END ........ELSE.IF.@f_client12.IS.NOT.NULL BEGIN ................INSERT.INTO.#f_deal_temp ................( ........................f_deal, ........................c_market, ........................c_classificator, ........................c_dealstatus, ........................f_path, ........................f_user_1, ........................number, ........................descr, ........................dt_make_1, ........................fx_dt_make, ........................usermodify_2, ........................dt_modify_2 ................) ................SELECT.DISTINCT ........................fd.f_deal, ........................fd.c_market, ........................fd.c_classificator, ........................fd.c_dealstatus, ........................fd.f_path, ........................fd.f_user, ........................fd.number, ........................fd.descr, ........................fd.dt_make, ........................fd.dt_make, ........................fd.user_modify, ........................fd.dt_modify ..................FROM ........................f_member..fm, ........................f_deal....fd .................WHERE ........................fm.f_client.=.@f_client12..................AND ........................fm.c_membertype.IN.(.@c_membertype_1,.@c_membertype_2.).AND ........................fm.f_deal....=.fd.f_deal...................AND ........................fd.dt_make..>=.@dtmake_1...................AND ........................fd.dt_make..<..@dtmake_2 ........END ........ELSE.IF.@f_instr.IS.NOT.NULL BEGIN ................INSERT.INTO.#f_deal_temp ................( ........................f_deal, ........................c_market, ........................c_classificator, ........................c_dealstatus, ........................f_path, ........................f_user_1, ........................number, ........................descr, ........................dt_make_1, ........................fx_dt_make, ........................usermodify_2, ........................dt_modify_2 ................) ................SELECT.DISTINCT ........................fd.f_deal, ........................fd.c_market, ........................fd.c_classificator, ........................fd.c_dealstatus, ........................fd.f_path, ........................fd.f_user, ........................fd.number, ........................fd.descr, ........................fd.dt_make, ........................fd.dt_make, ........................fd.user_modify, ........................fd.dt_modify ..................FROM ........................f_stock...fs, ........................f_deal....fd .................WHERE ........................fs.f_deal....=.fd.f_deal...................AND ........................fs.f_instr...=.@f_instr....................AND ........................fd.dt_make..>=.@dtmake_1...................AND ........................fd.dt_make..<..@dtmake_2 ........END ........ELSE.IF.@date_time_11.IS.NOT.NULL.OR.@date_time_12.IS.NOT.NULL BEGIN ................INSERT.INTO.#f_deal_temp ................( ........................f_deal, ........................c_market, ........................c_classificator, ........................c_dealstatus, ........................f_path, ........................f_user_1, ........................number, ........................descr, ........................dt_make_1, ........................fx_dt_make, ........................usermodify_2, ........................dt_modify_2 ................) ................SELECT.DISTINCT ........................fd.f_deal, ........................fd.c_market, ........................fd.c_classificator, ........................fd.c_dealstatus, ........................fd.f_path, ........................fd.f_user, ........................fd.number, ........................fd.descr, ........................fd.dt_make, ........................fd.dt_make, ........................fd.user_modify, ........................fd.dt_modify ..................FROM ........................f_sum.....fs, ........................f_sumtype.st, ........................f_deal....fd .................WHERE ........................fd.dt_make......>=.@dtmake_1................AND ........................fd.dt_make......<..@dtmake_2................AND ........................fd.f_deal.......=..fs.f_deal................AND ........................fd.c_market.....=..st.c_market..............AND ........................fs.f_sumtype....=..st.f_sumtype.............AND ........................st.c_inout......=..@c_inout_1...............AND ........................(.fs.date_time..>=.@date_time_11....OR.@date_time_11.is.null.)..AND ........................(.fs.date_time..<=.@date_time_12....OR.@date_time_12.is.null.) ........END ........ELSE.IF.@date_time_21.IS.NOT.NULL.OR.@date_time_22.IS.NOT.NULL BEGIN ................INSERT.INTO.#f_deal_temp ................( ........................f_deal, ........................c_market, ........................c_classificator, ........................c_dealstatus, ........................f_path, ........................f_user_1, ........................number, ........................descr, ........................dt_make_1, ........................fx_dt_make, ........................usermodify_2, ........................dt_modify_2 ................) ................SELECT.DISTINCT ........................fd.f_deal, ........................fd.c_market, ........................fd.c_classificator, ........................fd.c_dealstatus, ........................fd.f_path, ........................fd.f_user, ........................fd.number, ........................fd.descr, ........................fd.dt_make, ........................fd.dt_make, ........................fd.user_modify, ........................fd.dt_modify ..................FROM ........................f_sum.....fs, ........................f_sumtype.st, ........................f_deal....fd .................WHERE ........................fd.dt_make......>=.@dtmake_1................AND ........................fd.dt_make......<..@dtmake_2................AND ........................fd.f_deal.......=..fs.f_deal................AND ........................fd.c_market.....=..st.c_market..............AND ........................fs.f_sumtype....=..st.f_sumtype.............AND ........................st.c_inout......=..@c_inout_2...............AND ........................(.fs.date_time..>=.@date_time_21....OR.@date_time_21.is.null.)..AND ........................(.fs.date_time..<=.@date_time_22....OR.@date_time_22.is.null.) ........END ........ELSE ........BEGIN ............INSERT.INTO.#f_deal_temp ............( ....................f_deal, ....................c_market, ....................c_classificator, ....................c_dealstatus, ....................f_path, ....................f_user_1, ....................number, ....................descr, ....................dt_make_1, ....................fx_dt_make, ....................usermodify_2, ....................dt_modify_2 ............) ............SELECT ....................fd.f_deal, ....................fd.c_market, ....................fd.c_classificator, ....................fd.c_dealstatus, ....................fd.f_path, ....................fd.f_user, ....................fd.number, ....................fd.descr, ....................fd.dt_make, ....................fd.dt_make, ....................fd.user_modify, ....................fd.dt_modify ..............FROM ....................f_deal..........fd .............WHERE ....................fd.dt_make......>=.@dtmake_1................AND ....................fd.dt_make......<..@dtmake_2 ..........ORDER.BY ....................fd.f_deal ........END /*-----.номер.сделки.или.идентификатор.или.счет.------------------------------------*/ ....IF.DATALENGTH(RTRIM.(@number)).>.1 ....BEGIN ........SELECT..@number_test.=.SUBSTRING(@number,1,DATALENGTH(@number).-.2) ........SELECT..@number_acc..=.SUBSTRING(@number,1,DATALENGTH(@number).-.3) ......../*.Проверка.на.наличие.окончание.'id'.-.начало.соответствует.индентификатору.сделки.*/ ........IF..NOT.PATINDEX("%id",@number.).=.0.and ............NOT.(.@number_test.LIKE.'%[:-я]%'.OR.@number_test.LIKE.'%[!-/]%'.) ........BEGIN ............SELECT.@f_deal.=.CONVERT(int,.SUBSTRING(@number,1,DATALENGTH(@number).-.2)), ...................@number.=.NULL IF.@f_deal.>.0 ............BEGIN ................DELETE.FROM.#f_deal_temp ............END ........END ......../*.Проверка.на.окончание.'acc'.начало.соответствует.счету.в.сделке.*/ ........ELSE.IF..NOT.PATINDEX("%acc",@number.).=.0.and ............NOT.(.@number_acc.LIKE.'%[:-я]%'.OR.@number_acc.LIKE.'%[!-/]%'.) ........BEGIN ............SELECT.@f_account.=.CONVERT(int,.SUBSTRING(@number,1,DATALENGTH(@number).-.3)), ...................@number.=.NULL IF.@f_account.>.0 ............BEGIN ................/*.Получаем.список.сделок.с.указанным.счетом.*/ ................INSERT.INTO.#f_deal_account ................( ........................f_deal ................) ................SELECT..DISTINCT ........................fs.f_deal ..................FROM ........................#f_deal_temp....fd, ........................f_sum...........fs .................WHERE ........................fd.f_deal.......=.fs.f_deal.AND ........................fs.f_account....=.@f_account ................/*.Удаляем.сделки.не.соответствующие.указанному.счету.*/ ................DELETE.FROM ........................#f_deal_temp .................WHERE ........................#f_deal_temp.f_deal.NOT.IN.( ....................................................SELECT ............................................................f_deal ....................................................FROM ............................................................#f_deal_account ....................................................) ............END ........END ........ELSE.IF..NOT.PATINDEX("NULLacc",@number.).=.0 ........BEGIN ............SELECT..@f_account..=.NULL, ....................@number.....=.NULL /*.Получаем.список.сделок.с.указанным.счетом.*/ ................INSERT.INTO.#f_deal_account ................( ........................f_deal ................) ................SELECT..DISTINCT ........................fs.f_deal ..................FROM ........................#f_deal_temp....fd, ........................f_sum...........fs .................WHERE ........................fd.f_deal.......=.fs.f_deal.AND ........................fs.f_account....IS.NULL.....AND ........................fs.f_sumtype....IN.( ............................................SELECT ....................................................st.f_sumtype ..............................................FROM ....................................................c_market..cm, ....................................................f_sumtype.st .............................................WHERE ....................................................cm.c_market.=.st.c_market.AND ....................................................cm.c_market.IN.(1,2,5,6,7,8,9,10,11,12,13) ............................................) ................/*.Удаляем.сделки.не.соответствующие.указанному.счету.*/ ................DELETE.FROM ........................#f_deal_temp .................WHERE ........................#f_deal_temp.f_deal.NOT.IN.( ....................................................SELECT ............................................................f_deal ....................................................FROM ............................................................#f_deal_account ....................................................) ........END ....END /*-----.ДОБАВЛЕНИЕ.сделки.по.данному.ID.--------------------------------------------*/ ....IF.@f_deal.IS.NOT.NULL BEGIN ........INSERT.INTO.#f_deal_temp ........( ................f_deal, ................c_market, ................c_classificator, ................c_dealstatus, ................f_path, ................f_user_1, ................number, ................descr, ................dt_make_1, ................fx_dt_make, ................usermodify_2, ................dt_modify_2 ........) ........SELECT ................fd.f_deal, ................fd.c_market, ................fd.c_classificator, ................fd.c_dealstatus, ................fd.f_path, ................fd.f_user, ................fd.number, ................fd.descr, ................fd.dt_make, ................fd.dt_make, ................fd.user_modify, ................fd.dt_modify ..........FROM ................f_deal..........fd .........WHERE ................fd.f_deal...........=.@f_deal ....END /*-----.Удаление.сделок.с.запрещенными.для.пользователя.статусами.----------------*/ ....DELETE ............#f_deal_temp .....WHERE ............#f_deal_temp.c_dealstatus.NOT.IN.(.SELECT .......................................................lm.c_d_c_dealstatus .................................................FROM .......................................................l_movewin.........lm ................................................WHERE .......................................................#f_deal_temp.f_path.=.lm.f_path..AND .......................................................lm.c_usergroup......=.@c_usergroup .............................................) /*-----.Удаление.сделки.по.маске.номера.-------------------------------------------*/ ....IF.DATALENGTH(RTRIM.(@number)).>.0 ....BEGIN ........DELETE ................#f_deal_temp .........WHERE ................number.NOT.LIKE..@number ....END /*----------------------------------------------------------------------------------*/ /*------------.УДАЛЕНИЕ.СДЕЛОК.ПОПАДАЮЩИХ.ПОД.ФИЛЬТР.-------------------------------*/ /*----------------------------------------------------------------------------------*/ /*-----.рынок.----------------------------------------------------------------------*/ ....IF.@c_market.IS.NOT.NULL BEGIN ........DELETE ................#f_deal_temp .........WHERE ................NOT.(@c_market.=.c_market) ....END ..../*.Наборы.по.рынкам.*/ ....IF.@check_c_market.IS.NOT.NULL.AND.@check_c_market.=.1 ....BEGIN ........DELETE ................#f_deal_temp .........WHERE ................#f_deal_temp.c_market.NOT.IN.(...SELECT.DISTINCT ........................................................lm.c_market ...................................................FROM ........................................................l_marketuser.....lm ..................................................WHERE ........................................................lm.c_market........=.#f_deal_temp.c_market.....and ........................................................lm.f_user..........=.@f_user_id................and ........................................................lm.c_settype.......=.@c_settype .................................................) ....END ..../*.Запрос.для.журнала.сделок.*/ ....IF.@check_c_market.IS.NOT.NULL.AND.@check_c_market.=.-1 ....BEGIN ........DELETE ................#f_deal_temp .........WHERE ................#f_deal_temp.c_market.NOT.IN.(...SELECT.DISTINCT ........................................................lm.c_market ...................................................FROM ........................................................l_marketuser.....lm ..................................................WHERE ........................................................lm.c_market........=.#f_deal_temp.c_market.....and ........................................................lm.f_user..........=.@f_user_id................and ........................................................lm.c_settype.......=.@c_settype_13 .................................................) ....END /*-----.статус.---------------------------------------------------------------------*/ ....IF.@c_dealstatus.IS.NOT.NULL BEGIN ........DELETE ................#f_deal_temp .........WHERE ................NOT.(@c_dealstatus.=.c_dealstatus) ....END /*-----.УДАЛЕНИЕ.типы.сделки.-------------------------------------------------------*/ ....IF.@check_c_classificator.=.1 ....BEGIN ........DELETE ................#f_deal_temp .........WHERE ................#f_deal_temp.c_classificator.NOT.IN.(SELECT.DISTINCT ............................................................lc.c_classificator .......................................................FROM ............................................................l_classuser.....lc ......................................................WHERE ............................................................lc.c_classificator.=.#f_deal_temp.c_classificator...and ............................................................lc.f_user..........=.@f_user_id.....................and ............................................................lc.c_settype.......=.@c_settype .....................................................) ....END /*-----.Покупка/привлечиние.--------------------------------------------------------*/ ....IF.@date_time_11.IS.NOT.NULL..OR.@date_time_12.IS.NOT.NULL BEGIN ........IF..@date_time_11.is.not.null BEGIN ............DELETE ....................#f_deal_temp ..............FROM ....................f_sum.......fs, ....................f_sumtype...st .............WHERE ....................#f_deal_temp.f_deal.............=.fs.f_deal.................and ....................fs.date_time....................<..@date_time_11............and ....................fs.f_sumtype....................=..st.f_sumtype.............and ....................st.c_market.....................=..#f_deal_temp.c_market....and ....................st.c_inout......................=..@c_inout_1 ........END ........IF.@date_time_12.is.not.null BEGIN ............DELETE ....................#f_deal_temp ..............FROM ....................f_sum.......fs, ....................f_sumtype...st .............WHERE ....................#f_deal_temp.f_deal.............=.fs.f_deal.................and ....................fs.date_time....................>..@date_time_12............and ....................fs.f_sumtype....................=..st.f_sumtype.............and ....................st.c_market.....................=..#f_deal_temp.c_market....and ....................st.c_inout......................=..@c_inout_1 ........END ....END /*-----.Продажа/Размещение.---------------------------------------------------------*/ ....IF.@date_time_21.IS.NOT.NULL.OR.@date_time_22.IS.NOT.NULL BEGIN ........IF.@date_time_21.is.not.null BEGIN ............DELETE ....................#f_deal_temp ..............FROM ....................f_sum.......fs, ....................f_sumtype...st .............WHERE ....................#f_deal_temp.f_deal.............=..fs.f_deal................and ....................fs.date_time....................<..@date_time_21............and ....................fs.f_sumtype....................=..st.f_sumtype.............and ....................st.c_market.....................=..#f_deal_temp.c_market....and ....................st.c_inout......................=..@c_inout_2 ........END ........IF.@date_time_22.is.not.null BEGIN ............DELETE ....................#f_deal_temp ..............FROM ....................f_sum.......fs, ....................f_sumtype...st .............WHERE ....................#f_deal_temp.f_deal.............=.fs.f_deal.................and ....................fs.date_time....................>..@date_time_22............and ....................fs.f_sumtype....................=..st.f_sumtype.............and ....................st.c_market.....................=..#f_deal_temp.c_market....and ....................st.c_inout......................=..@c_inout_2 ........END ........IF.@date_time_11.IS.NULL.AND.@date_time_12.IS.NULL BEGIN ............DELETE ....................#f_deal_temp ..............FROM ....................f_sum.......fs, ....................f_sumtype...st .............WHERE ....................#f_deal_temp.f_deal.............=..fs.f_deal................and ....................fs.f_sumtype....................=..st.f_sumtype.............and ....................st.c_market.....................=..#f_deal_temp.c_market....and ....................st.c_inout......................=..@c_inout_1...............and ....................st.c_market.....................in.(.@c_market_netting, .........................................................@c_market_journal, .........................................................@c_market_pay ........................................................) ........END ....END /*-----.Дата.договора.---------------------------------------------------------*/ ....IF.(.@date_time_31.IS.NOT.NULL).OR.(@date_time_32.IS.NOT.NULL) ....BEGIN ........DELETE ................#f_deal_temp ..........FROM ................f_dogovor...fd .........WHERE ................#f_deal_temp.f_deal.............=.fd.f_deal.................and.( .............(..@date_time_31...................is.not.null.................and ................fd.date_time....................<..@date_time_31........)...or .............(..@date_time_32...................is.not.null.................and ................fd.date_time....................>..@date_time_32........).....) ....END /*-----.Дата.поставки.--------------------------------------------------------*/ ....IF.@date_time_41.IS.NOT.NULL.OR.@date_time_42.IS.NOT.NULL BEGIN ........DELETE ................#f_deal_temp ..........FROM ................f_stock......fs, ................f_stocktype..st .........WHERE ................#f_deal_temp.f_deal.............=.fs.f_deal.................and.( .............(..@date_time_41...................is.not.null.................and ................fs.date_pay.....................<..@date_time_41............and ................fs.f_stocktype..................=..st.f_stocktype...........and ................st.c_market.....................=..#f_deal_temp.c_market....and ................st.c_inout......................=..@c_inout_1.........).....or .............(..@date_time_42...................is.not.null.................and ................fs.date_pay.....................>..@date_time_42............and ................fs.f_stocktype..................=..st.f_stocktype...........and ................st.c_market.....................=..#f_deal_temp.c_market....and ................st.c_inout......................=..@c_inout_1.........).........) ........DELETE ................#f_deal_temp ..........FROM ................f_sum.......fs, ................f_sumtype...st .........WHERE ................#f_deal_temp.f_deal.............=..fs.f_deal................and ................fs.f_sumtype....................=..st.f_sumtype.............and ................st.c_market.....................=..#f_deal_temp.c_market....and ................st.c_inout......................=..@c_inout_1...............and ................@date_time_11...................IS.NULL.....................and ................@date_time_12...................IS.NULL.....................and ................@date_time_51...................IS.NULL.....................and ................@date_time_52...................IS.NULL.....................and ................st.c_market.....................in.(.@c_market_netting, .....................................................@c_market_journal, .....................................................@c_market_pay, .....................................................@c_market_forex, .....................................................@c_market_mbk ....................................................) ....END /*-----.Дата.оплаты.---------------------------------------------------------*/ ....IF.@date_time_51.IS.NOT.NULL.OR.@date_time_52.IS.NOT.NULL BEGIN ........DELETE ................#f_deal_temp ..........FROM ................f_sum.......fs, ................f_sumtype...st .........WHERE ................#f_deal_temp.f_deal.............=.fs.f_deal...............and.( .............(..@date_time_51...................is.not.null.................and ................fs.date_pay.....................<..@date_time_51............and ................fs.f_sumtype....................=..st.f_sumtype.............and ................st.c_market.....................=..#f_deal_temp.c_market....and ................st.c_inout......................=..@c_inout_2...........)...or .............(..@date_time_52...................is.not.null.................and ................fs.date_pay.....................>..@date_time_52............and ................fs.f_sumtype....................=..st.f_sumtype.............and ................st.c_market.....................=..#f_deal_temp.c_market....and ................st.c_inout......................=..@c_inout_2...........).....) ........DELETE ................#f_deal_temp ..........FROM ................f_sum.......fs, ................f_sumtype...st .........WHERE ................#f_deal_temp.f_deal.............=..fs.f_deal................and ................fs.f_sumtype....................=..st.f_sumtype.............and ................st.c_market.....................=..#f_deal_temp.c_market....and ................st.c_inout......................=..@c_inout_1...............and ................@date_time_11...................IS.NULL.....................and ................@date_time_12...................IS.NULL.....................and ................@date_time_41...................IS.NULL.....................and ................@date_time_42...................IS.NULL.....................and ................st.c_market.....................in.(.@c_market_netting, .....................................................@c_market_journal, .....................................................@c_market_pay, .....................................................@c_market_forex, .....................................................@c_market_mbk ....................................................) ....END /*-----.Запрос.по.пользователю.-------------------------------------------------------*/ ....IF.@f_user.IS.NOT.NULL BEGIN ........DELETE ................#f_deal_temp .........WHERE ................NOT.@f_user.=.f_user_1 ....END /*----------------------------------------------------------------------------------*/ /*------------.ЗАПОЛНЕНИЕ.ПОЛЕЙ.СДЕЛКИ.---------------------------------------------*/ /*----------------------------------------------------------------------------------*/ /*------------.первая.сторона.сделки.(Инициатор).----------------------------------*/ ....UPDATE ............#f_deal_temp .......SET ............#f_deal_temp.f_member_1.........=.fm.f_member, ............#f_deal_temp.c_membertype_1.....=.fm.c_membertype, ............#f_deal_temp.f_client_1.........=.fm.f_client, ............#f_deal_temp.f_portf_1..........=.fm.f_portf ......FROM ............f_member.......fm .....WHERE ............#f_deal_temp.f_deal.............=.fm.f_deal.................and ............fm.c_membertype.................=.@c_membertype_1 ....UPDATE ............#f_deal_temp .......SET ............#f_deal_temp.f_portf_code_1.....=.fp.name ......FROM ............f_portf.fp .....WHERE ............#f_deal_temp.f_portf_1..........=.fp.f_portf....AND ............( ................fp.name.NOT.LIKE.'00%'.OR.@zero_portf.=.1 ............) /*------------.вторая.сторона.сделки.(Контрагент).----------------------------------*/ ....UPDATE ............#f_deal_temp .......SET ............#f_deal_temp.f_member_2.........=.fm.f_member, ............#f_deal_temp.c_membertype_2.....=.fm.c_membertype, ............#f_deal_temp.f_client_2.........=.fm.f_client, ............#f_deal_temp.f_portf_2..........=.fm.f_portf ......FROM ............f_member....fm .....WHERE ............#f_deal_temp.f_deal.............=.fm.f_deal.................and ............fm.c_membertype.................=.@c_membertype_2 ....UPDATE ............#f_deal_temp .......SET ............#f_deal_temp.f_portf_code_2.....=.fp.name ......FROM ............f_portf.fp .....WHERE ............#f_deal_temp.f_portf_2..........=.fp.f_portf....AND ............( ................fp.name.NOT.LIKE.'00%'.OR.@zero_portf.=.1 ............) ..../*.Запрос.по.клиенту.портфеля.*/ ....IF.@f_client_4.>.0 ....BEGIN ......../*.Проставить.клиента.портфеля.*/ ........UPDATE ................#f_deal_temp ...........SET ................fp_client_1.=.lp.f_client ..........FROM ................l_portfclient.lp .........WHERE ................lp.f_portf......=.#f_deal_temp.f_portf_1..AND ................lp.c_accmemtype.=.1 ........UPDATE ................#f_deal_temp ...........SET ................fp_client_2.=.lp.f_client ..........FROM ................l_portfclient.lp .........WHERE ................lp.f_portf......=.#f_deal_temp.f_portf_2..AND ................lp.c_accmemtype.=.1 ........DELETE ................#f_deal_temp .........WHERE ................( ....................fp_client_1.!=.@f_client_4.OR ....................fp_client_1.IS.NULL ).AND ................( ....................fp_client_2.!=.@f_client_4.OR ....................fp_client_2.IS.NULL ) ....END /*-----.УДАЛЕНИЕ.портфелей.----------------------------------------------------------*/ ....IF.@check_f_portf.=.1 ....BEGIN ........DELETE ................#f_deal_temp .........WHERE ................#f_deal_temp.f_portf_1......not.in.(SELECT.DISTINCT ............................................................f_portf ......................................................FROM ............................................................l_portfuser...lp .....................................................WHERE ............................................................lp.f_portf........=.#f_deal_temp.f_portf_1..and ............................................................lp.f_user.........=.@f_user_id..............and ............................................................lp.c_settype......=.@c_settype ....................................................) ................and ................#f_deal_temp.f_portf_2......not.in.(SELECT.DISTINCT ............................................................f_portf ......................................................FROM ............................................................l_portfuser...lp .....................................................WHERE ............................................................lp.f_portf........=.#f_deal_temp.f_portf_2..and ............................................................lp.f_user.........=.@f_user_id..............and ............................................................lp.c_settype......=.@c_settype ....................................................) ....END ....IF.@check_f_portf.=.-1 ....BEGIN ........DELETE ................#f_deal_temp .........WHERE ................#f_deal_temp.f_portf_1.........in..(SELECT.DISTINCT ............................................................f_portf ......................................................FROM ............................................................l_portfuser...lp .....................................................WHERE ............................................................lp.f_portf........=.#f_deal_temp.f_portf_1..and ............................................................lp.f_user.........=.@f_user_id..............and ............................................................lp.c_settype......=.@c_settype ....................................................) ................or ................#f_deal_temp.f_portf_2.........in..(SELECT.DISTINCT ............................................................f_portf ......................................................FROM ............................................................l_portfuser...lp .....................................................WHERE ............................................................lp.f_portf........=.#f_deal_temp.f_portf_2..and ............................................................lp.f_user.........=.@f_user_id..............and ............................................................lp.c_settype......=.@c_settype ....................................................) ....END /*-----.УДАЛЕНИЕ.участник.1.или.2.----------------------------------------------------*/ ....IF.@f_client12.IS.NOT.NULL BEGIN ........DELETE ................#f_deal_temp .........WHERE ................NOT.(#f_deal_temp.f_client_1.=.@f_client12).AND ................NOT.(#f_deal_temp.f_client_2.=.@f_client12) ....END /*-----.УДАЛЕНИЕ.контрагент.----------------------------------------------------------*/ ....IF.not.@f_client_2.=.0.AND.@f_client_2.IS.NOT.NULL BEGIN ........IF.@f_client_2.>.0 ........BEGIN ............DELETE ....................#f_deal_temp .............WHERE ....................NOT.(#f_deal_temp.f_client_1.=.ABS.(@f_client_2)).AND ....................NOT.(#f_deal_temp.f_client_2.=.ABS.(@f_client_2)) ........END ........ELSE.IF.@f_client_2.<.0 ........BEGIN ............DELETE ....................#f_deal_temp .............WHERE ....................#f_deal_temp.f_client_1.=.ABS.(@f_client_2).OR ....................#f_deal_temp.f_client_2.=.ABS.(@f_client_2) ........END ....END /*----------------.Удаление.сделок.с.запрещенными.статусами.----------------------*/ ..../*.Получить.тип.участника.сделки.*/ ....UPDATE ............#f_deal_temp .......SET ............c_membertype.=.fm.c_membertype ......FROM ............f_member.fm .....WHERE ............#f_deal_temp.f_deal.=.fm.f_deal....AND ............fm.f_client.........=.@f_client /*-----.Не.соответствие.статусу.---------------------------------------------------*/ ....IF.@f_deal.IS.NULL BEGIN ........DELETE ................#f_deal_temp .........WHERE ................#f_deal_temp.c_dealstatus.NOT.IN.(.SELECT.DISTINCT ..........................................................lm.c_dealstatus .....................................................FROM ..........................................................l_movewin.......lm ....................................................WHERE ..........................................................lm.f_path.........=.#f_deal_temp.f_path...........AND ..........................................................lm.c_membertype...=.#f_deal_temp.c_membertype.....AND ..........................................................lm.c_usergroup....=.@c_usergroup ....................................................)..AND ................#f_deal_temp.c_membertype.IS.NOT.NULL END /*-----.ставка.по.сделке.-----------------------------------------------------------*/ ....UPDATE ............#f_deal_temp .......SET ............#f_deal_temp.f_rate.............=.fr.f_rate, ............#f_deal_temp.rate...............=.fr.rate, ............#f_deal_temp.real_rate..........=.fr.real_rate, ............#f_deal_temp.revers.............=.fr.revers, ............#f_deal_temp.finans.............=.fr.finans, ............#f_deal_temp.rollover...........=.fr.rollover, ............#f_deal_temp.commission.........=.fr.commission, ............#f_deal_temp.f_pricetype........=.fr.f_pricetype ......FROM ............f_rate......fr ....WHERE ............#f_deal_temp.f_deal.............=.fr.f_deal /*-----.Курс.и.порядок.расчетов.-------------------------------------------------*/ ....UPDATE ............#f_deal_temp .......SET ............f_term...........=.ft.f_term, ............c_order..........=.ft.c_order, ............rate_pay.........=.ft.rate ......FROM ............f_term......ft .....WHERE ............#f_deal_temp.f_deal.....=.ft.f_deal /*-----.Очередность.------------------------------------------------------------*/ ....IF.@c_order.IS.NOT.NULL BEGIN ........DELETE ................#f_deal_temp .........WHERE ................NOT.(c_order.=.@c_order).OR ................c_order.IS.NULL END /*-----.УДАЛЕНИЕ.Рыночная.-------------------------------------------------------*/ ....IF.@finans.IS.NOT.NULL BEGIN ........DELETE ................#f_deal_temp .........WHERE ................NOT.(finans.=.@finans).OR ................finans.IS.NULL END /*-----.УДАЛЕНИЕ.Типы.сообщений.--------------------------------------------------*/ ....IF.@commission.IS.NOT.NULL BEGIN ........UPDATE ................#f_deal_temp ...........SET ................swift_telex.=.2./*.TELEX.*/ ..........FROM ................l_clientrecv.lc .........WHERE ................lc.f_client.=.#f_deal_temp.f_client_2.....AND ................lc.c_telex..IS.NOT.NULL UPDATE ................#f_deal_temp ...........SET ................swift_telex.=.1./*.SWIFT.*/ ..........FROM ................l_clientrecv.lc .........WHERE ................lc.f_client.=.#f_deal_temp.f_client_2.....AND ................lc.c_swift..IS.NOT.NULL /*.Проставляем.наличие.ключа.у.МБК.*/ ........UPDATE ................#f_deal_temp ...........SET ................swift_telex.=.(#f_deal_temp.swift_telex.*.-1) ..........FROM ................f_conf..fc .........WHERE ................#f_deal_temp.f_deal.........=.fc.f_deal.........AND ................#f_deal_temp.swift_telex....=.ABS.(@commission).AND ................fc.c_conftype...............=.@c_conftype_53....AND ................fc.account..................IS.NOT.NULL /*.Проставляем.наличие.ключа.у.ForEx.*/ ........UPDATE ................#f_deal_temp ...........SET ................swift_telex.=.(#f_deal_temp.swift_telex.*.-1) ..........FROM ................f_conf..fc .........WHERE ................#f_deal_temp.f_deal.........=.fc.f_deal.........AND ................#f_deal_temp.swift_telex....=.ABS.(@commission).AND ................fc.c_conftype...............=.@c_conftype_54....AND ................fc.account..................IS.NOT.NULL /*.Удаление.не.соответствующих.*/ ........DELETE ................#f_deal_temp .........WHERE ................NOT.swift_telex.=.@commission ....END /*------------.третья.сторона.сделки.(Свич).-----------------------------------------*/ ....UPDATE ............#f_deal_temp .......SET ............#f_deal_temp.f_member_3.........=.fm.f_member, ............#f_deal_temp.c_membertype_3.....=.fm.c_membertype, ............#f_deal_temp.f_client_3.........=.fm.f_client ......FROM ............f_member..fm .....WHERE ............#f_deal_temp.f_deal.............=.fm.f_deal.................and ............fm.c_membertype.................=.@c_membertype_3...........and ............fm.f_client.....................IS.NOT.NULL /*------------.четвертая.сторона.сделки.(брокер).-----------------------------------------*/ ....UPDATE ............#f_deal_temp .......SET ............#f_deal_temp.f_member_4.........=.fm.f_member, ............#f_deal_temp.c_membertype_4.....=.fm.c_membertype, ............#f_deal_temp.f_client_4.........=.fm.f_client ......FROM ............f_member..fm .....WHERE ............#f_deal_temp.f_deal.............=.fm.f_deal.................and ............fm.c_membertype.................=.@c_membertype_4...........and ............fm.f_client.....................IS.NOT.NULL /*-----.УДАЛЕНИЕ.свич.ДА.-----------------------------------------------------------*/ ....IF.(@svich.=.1) ....BEGIN ........DELETE ................#f_deal_temp ..........FROM ................f_member...fm .........WHERE ................#f_deal_temp.f_deal.........=.fm.f_deal................AND ................#f_deal_temp.f_client_3.....IS.NULL END /*-----.УДАЛЕНИЕ.свич.НЕТ.----------------------------------------------------------*/ ....IF.(@svich.=.0) ....BEGIN ........DELETE ................#f_deal_temp ..........FROM ................f_member...fm .........WHERE ................#f_deal_temp.f_deal.........=.fm.f_deal.............AND ................#f_deal_temp.f_client_3.....>.0 ....END /*-----.УДАЛЕНИЕ.свич.(контрагент).-----------------------------------------------*/ ....IF.(@f_client_3.IS.NOT.NULL) ....BEGIN ........DELETE ................#f_deal_temp ..........FROM ................f_member...fm .........WHERE ................#f_deal_temp.f_deal.............=..fm.f_deal.........and ................(#f_deal_temp.f_client_3.is.null.....................or ................not.(#f_deal_temp.f_client_3....=.@f_client_3)) ....END /*-----.УДАЛЕНИЕ.набор.инициаторов.--------------------------------------------------*/ ....IF.@check_f_client_1.=.1 ....BEGIN ........DELETE ................#f_deal_temp .........WHERE ................#f_deal_temp.f_client_1.NOT.IN.(SELECT.DISTINCT ........................................................lm.f_client ..................................................FROM ........................................................l_memuser........lm .................................................WHERE ........................................................#f_deal_temp.f_client_1.....=.lm.f_client...........and ........................................................#f_deal_temp.c_membertype_1.=.lm.c_membertype.......and ........................................................lm.f_user.=.@f_user_id..............................and ........................................................lm.c_settype.=.@c_settype ................................................) ....................................................AND ................#f_deal_temp.f_client_2.NOT.IN.(SELECT.DISTINCT ........................................................lm.f_client ..................................................FROM ........................................................l_memuser........lm .................................................WHERE ........................................................#f_deal_temp.f_client_2.....=.lm.f_client...........and ........................................................#f_deal_temp.c_membertype_1.=.lm.c_membertype.......and ........................................................lm.f_user.=.@f_user_id..............................and ........................................................lm.c_settype.=.@c_settype ................................................) ....END ....IF.@check_f_client_1.=.-1 ....BEGIN ........DELETE ................#f_deal_temp .........WHERE ................#f_deal_temp.f_client_1.IN.(SELECT.DISTINCT ........................................................lm.f_client ..................................................FROM ........................................................l_memuser........lm .................................................WHERE ........................................................#f_deal_temp.f_client_1.....=.lm.f_client...........and ........................................................#f_deal_temp.c_membertype_1.=.lm.c_membertype.......and ........................................................lm.f_user.=.@f_user_id..............................and ........................................................lm.c_settype.=.@c_settype ...........................................) ................................................AND ................#f_deal_temp.f_client_2.IN.(SELECT.DISTINCT ........................................................lm.f_client ..................................................FROM ........................................................l_memuser........lm .................................................WHERE ........................................................#f_deal_temp.f_client_2.....=.lm.f_client...........and ........................................................#f_deal_temp.c_membertype_1.=.lm.c_membertype.......and ........................................................lm.f_user.=.@f_user_id..............................and ........................................................lm.c_settype.=.@c_settype ...........................................) ....END /*-----.УДАЛЕНИЕ.набор.контрагентов.-------------------------------------------------*/ ....IF.@check_f_client_2.=.1 ....BEGIN ........DELETE ................#f_deal_temp .........WHERE ................#f_deal_temp.f_client_2.NOT.IN.(SELECT.DISTINCT ........................................................lm.f_client ..................................................FROM ........................................................l_memuser.......lm ..................................................WHERE ........................................................#f_deal_temp.f_client_2.....=.lm.f_client...........and ........................................................#f_deal_temp.c_membertype_2.=.lm.c_membertype.......and ........................................................lm.f_user...................=.@f_user_id............and ........................................................lm.c_settype................=.@c_settype ................................................) ....END ....IF.@check_f_client_2.=.-1 ....BEGIN ........DELETE ................#f_deal_temp .........WHERE ................#f_deal_temp.f_client_2.IN.(SELECT.DISTINCT ........................................................lm.f_client ..................................................FROM ........................................................l_memuser.......lm ..................................................WHERE ........................................................#f_deal_temp.f_client_2.....=.lm.f_client...........and ........................................................#f_deal_temp.c_membertype_2.=.lm.c_membertype.......and ........................................................lm.f_user...................=.@f_user_id............and ........................................................lm.c_settype................=.@c_settype ................................................) ....END /*------------.первая.сторона.сделки.-----------------------------------------------*/ ....UPDATE ............#f_deal_temp .......SET ............#f_deal_temp.code_1.............=.fc.code, ............#f_deal_temp.rtscode_1..........=.fc.rtscode, ............#f_deal_temp.rsbcode_1..........=.fc.rsbcode, ............#f_deal_temp.c_clienttype_1.....=.fc.c_clienttype, ............#f_deal_temp.firstname_1........=.fc.firstname ......FROM ............f_client........fc .....WHERE ............#f_deal_temp.f_client_1.........=.fc.f_client /*------------.вторая.сторона.сделки.-----------------------------------------------*/ ....UPDATE ............#f_deal_temp .......SET ............#f_deal_temp.code_2.............=.fc.code, ............#f_deal_temp.rtscode_2..........=.fc.rtscode, ............#f_deal_temp.rsbcode_2..........=.fc.rsbcode, ............#f_deal_temp.c_clienttype_2.....=.fc.c_clienttype, ............#f_deal_temp.c_clientgroup_2....=.fc.c_clientgroup, ............#f_deal_temp.firstname_2........=.fc.firstname ......FROM ............f_client........fc .....WHERE ............#f_deal_temp.f_client_2.........=.fc.f_client /*------------.третья.сторона.сделки.-----------------------------------------------*/ ....UPDATE ............#f_deal_temp .......SET ............#f_deal_temp.code_3.............=.fc.code, ............#f_deal_temp.rtscode_3..........=.fc.rtscode, ............#f_deal_temp.rsbcode_3..........=.fc.rsbcode, ............#f_deal_temp.c_clienttype_3.....=.fc.c_clienttype, ............#f_deal_temp.firstname_3........=.fc.firstname ......FROM ............f_client........fc .....WHERE ............#f_deal_temp.f_client_3.........=.fc.f_client /*------------.четвертая.сторона.сделки.---------------------------------------------*/ ....UPDATE ............#f_deal_temp .......SET ............#f_deal_temp.code_4.............=.fc.code, ............#f_deal_temp.rtscode_4..........=.fc.rtscode, ............#f_deal_temp.rsbcode_4..........=.fc.rsbcode, ............#f_deal_temp.c_clienttype_4.....=.fc.c_clienttype ......FROM ............f_client........fc .....WHERE ............#f_deal_temp.f_client_4.........=.fc.f_client /*-----.УДАЛЕНИЕ.тип,вид,группа.контрагента.-----------------------------------------*/ ....IF(@c_clienttype.IS.NOT.NULL) ....BEGIN ........DELETE ................#f_deal_temp .........WHERE ................NOT.(c_clienttype_2.=.@c_clienttype) ....END ..../*.Удаление.по.виду.клиента.*/ ....IF(@c_clientkind.IS.NOT.NULL) ....BEGIN ........DELETE ................#f_deal_temp ..........FROM ................f_client.fc .........WHERE ................#f_deal_temp.f_client_2.=.fc.f_client.AND ................NOT.fc.c_clientkind.=.@c_clientkind ....END ..../*.Удаление.по.группе.клиента.*/ ....IF.@c_clientgroup.IS.NOT.NULL BEGIN ........DELETE ................#f_deal_temp .........WHERE ................NOT.c_clientgroup_2.=.@c_clientgroup ....END /*------------.первая.сумма.по.сделке.и.id.валюты.----------------------------------*/ ....UPDATE ............#f_deal_temp .......SET ............#f_deal_temp.f_sum_1............=.fs.f_sum, ............#f_deal_temp.f_sumtype_1........=.st.f_sumtype, ............#f_deal_temp.f_account_1........=.fs.f_account, ............#f_deal_temp.value_1............=.CASE.fs.c_sumkind ....................................................WHEN.@c_sumkind.........THEN.fs.value ....................................................WHEN.@c_sumkind_minus...THEN.(-fs.value) ....................................................ELSE.........................NULL END, ............#f_deal_temp.date_time_1........=.fs.date_time, ............#f_deal_temp.fs_date_pay_1......=.fs.date_pay, ............#f_deal_temp.c_currency_1.......=.fs.c_currency ......FROM ............f_sum.......fs, ............f_sumtype...st .....WHERE ............#f_deal_temp.f_deal.....=.fs.f_deal..................and ............#f_deal_temp.c_market...=.st.c_market................and ............fs.f_sumtype............=.st.f_sumtype...............and ............st.c_inout..............=.@c_inout_1 /*------------.поля.по.ценной.бумаге.-----------------------------------------*/ ....UPDATE ............#f_deal_temp .......SET ............#f_deal_temp.f_instr_1..........=.fs.f_instr, ............#f_deal_temp.f_issue_1..........=.fs.f_issue, ............#f_deal_temp.date_time_1........=.fs.date_time, ............#f_deal_temp.st_date_pay_1......=.fs.date_pay, ............#f_deal_temp.st_date_begin_1....=.fs.date_begin, ............#f_deal_temp.st_date_end_1......=.fs.date_end, ............#f_deal_temp.value_3............=.#f_deal_temp.value_1, ............#f_deal_temp.c_currency_3.......=.#f_deal_temp.c_currency_1, ............#f_deal_temp.value_1............=.CASE.fs.c_sumkind ....................................................WHEN.@c_sumkind.........THEN.fs.value ....................................................WHEN.@c_sumkind_minus...THEN.(-fs.value) ....................................................ELSE.........................NULL END ......FROM ............f_stock.........fs, ............f_stocktype.....st .....WHERE ............#f_deal_temp.f_deal.....=.fs.f_deal......and ............#f_deal_temp.c_market...=.st.c_market....and ............fs.f_stocktype..........=.st.f_stocktype.and ............st.c_inout..............=.@c_inout_1 /*------------.Получаем.номер.журнала.и.дату.---------------------------------------*/ ....UPDATE ............#f_deal_temp .......SET ............number_jur..=.fd.number.+.'.'.+.Convert.(varchar(10).,.fd.dt_make,.4.).+.'.'.+.Convert.(varchar(10),.fd.f_deal).+.'id' ......FROM ............l_jurnal....lj, ............f_deal......fd .....WHERE ............NOT.(.#f_deal_temp.c_market.=.@c_market_journal.)....and ............#f_deal_temp.f_deal.........=.lj.f_d_f_deal..........and ............fd.f_deal...................=.lj.f_deal /*------------.Получаем.количество.сделок.в.журнале.-------------------------------*/ ....UPDATE ............#f_deal_temp .......SET ............#f_deal_temp.value_1....=.(.SELECT ................................................COUNT(lj.f_deal) ..........................................FROM ...............................................l_jurnal........lj .........................................WHERE ...............................................#f_deal_temp.f_deal......=.lj.f_deal ......................................) .....WHERE ...........#f_deal_temp.c_market....=.@c_market_journal /*------------.Удаление.по.заданному.инструменту.-----------------------------------*/ ....IF.@f_instr.IS.NOT.NULL BEGIN ........DELETE ................#f_deal_temp .........WHERE ................NOT.#f_deal_temp.f_instr_1.=.@f_instr..OR ................#f_deal_temp.f_instr_1.IS.NULL END ....IF.@check_f_instr.=.1 ....BEGIN ........DELETE ................#f_deal_temp .........WHERE ................#f_deal_temp.f_instr_1.IS.NULL.OR ................#f_deal_temp.f_instr_1.not.in.(SELECT.DISTINCT ........................................................f_instr ..................................................FROM ........................................................l_instruser...lp .................................................WHERE ........................................................lp.f_user.........=.@f_user_id.and ........................................................lp.c_settype......=.@c_settype ................................................) ....END ....IF.@check_f_instr.=.-1 ....BEGIN ........DELETE ................#f_deal_temp .........WHERE ................#f_deal_temp.f_instr_1......in.(SELECT.DISTINCT ........................................................f_instr ..................................................FROM ........................................................l_instruser...lp .................................................WHERE ........................................................lp.f_user.........=.@f_user_id.and ........................................................lp.c_settype......=.@c_settype ................................................) ....END /*------------.Договор.и.заявка.по.сделке.с.ЦБ.-------------------------------------*/ ....UPDATE ............#f_deal_temp .......SET ............#f_deal_temp.do_c_dogform_1.....=.fd.c_dogform, ............#f_deal_temp.do_dognum_1........=.fd.dognum, ............#f_deal_temp.do_date_time_1.....=.fd.date_time, ............#f_deal_temp.do_descr_1.........=.fd.descr ......FROM ............f_dogovor.fd .....WHERE ............#f_deal_temp.f_deal....=.fd.f_deal......and ............fd.c_dogtype...........=.@c_dogtype_100.and ............#f_deal_temp.f_instr_1.IS.NOT.NULL UPDATE ............#f_deal_temp .......SET ............#f_deal_temp.do_dogform_name_1.......=.cd.name ......FROM ............c_dogform.cd .....WHERE ............#f_deal_temp.do_c_dogform_1....=.cd.c_dogform.and ............#f_deal_temp.do_c_dogform_1....IS.NOT.NULL UPDATE ............#f_deal_temp .......SET ............#f_deal_temp.do_c_dogform_2.....=.fd.c_dogform, ............#f_deal_temp.do_dognum_2........=.fd.dognum, ............#f_deal_temp.do_date_time_2.....=.fd.date_time, ............#f_deal_temp.do_descr_2.........=.fd.descr ......FROM ............f_dogovor.fd .....WHERE ............#f_deal_temp.f_deal....=.fd.f_deal......and ............fd.c_dogtype...........=.@c_dogtype_200.and ............#f_deal_temp.c_market.>=.@c_market_stock./*.f_instr_1.IS.NOT.NULL.*/ ..../*.Заполняем.в.пустой.комментарий.Условия.расчетов.*/ ....UPDATE ............#f_deal_temp .......SET ............#f_deal_temp.do_descr_2.=.CASE.ft1.c_order ........................................WHEN.@c_order_1....THEN.'пП.'.+ ............................................Convert.(varchar(4),.ft2.days).+.'-П,'.+ ............................................Convert.(varchar(4),.ft1.days).+.'-О' ........................................WHEN.@c_order_2....THEN.'пО.'.+ ............................................Convert.(varchar(4),.ft2.days).+.'-П,'.+ ............................................Convert.(varchar(4),.ft1.days).+.'-О' ........................................WHEN.@c_order_3....THEN.'DVP.'.+ ............................................Convert.(varchar(4),.ft2.days) ........................................ELSE....................'??.' ......................................END ......FROM ............f_term....ft1, ............f_term....ft2 .....WHERE ............#f_deal_temp.f_deal.....=.ft1.f_deal........and ............#f_deal_temp.f_deal.....=.ft2.f_deal........and ............ft1.c_sumstock..........=.@c_sumstock_1.....and ............ft2.c_sumstock..........=.@c_sumstock_2.....and ............#f_deal_temp.do_descr_2...IS.NULL...........and ............#f_deal_temp.f_instr_1....IS.NOT.NULL UPDATE ............#f_deal_temp .......SET ............#f_deal_temp.do_dogform_name_2.......=.cd.name ......FROM ............c_dogform.cd .....WHERE ............#f_deal_temp.do_c_dogform_2....=.cd.c_dogform.and ............#f_deal_temp.do_c_dogform_2....IS.NOT.NULL /*------------.вторая.сумма.по.сделке.и.краткое.(id).валюты.------------------------*/ ....UPDATE ............#f_deal_temp ......SET ............#f_deal_temp.f_sum_2............=.fs.f_sum, ............#f_deal_temp.f_sumtype_2........=.st.f_sumtype, ............#f_deal_temp.f_account_2........=.fs.f_account, ............#f_deal_temp.value_2............=.CASE.fs.c_sumkind ....................................................WHEN.@c_sumkind.........THEN.fs.value ....................................................WHEN.@c_sumkind_minus...THEN.(-fs.value) ....................................................ELSE....NULL END, ............#f_deal_temp.date_time_2........=.fs.date_time, ............#f_deal_temp.c_currency_2.......=.fs.c_currency ......FROM ............f_sum.......fs, ............f_sumtype...st .....WHERE ............#f_deal_temp.f_deal....=.fs.f_deal.................and ............#f_deal_temp.c_market..=.st.c_market...............and ............fs.f_sumtype...........=.st.f_sumtype..............and ............st.c_inout.............=.@c_inout_2 ..../*.Для.поручений.ДЕПО.сумма_2.=.номинал.*.цену.залога.*/ ....UPDATE ............#f_deal_temp .......SET ............value_2.=.CONVERT(decimal(18,6),.value_1.*.rate./.100.0) .....WHERE ............c_market.IN.(@c_market_depo_bond,.@c_market_depo_bill) ..../*.Для.облигаций.нужно.умножить.на.номинал.*/ ....UPDATE ............#f_deal_temp .......SET ............value_2.=.CONVERT(decimal(18,6),.value_2.*.fi.value) ......FROM ............f_issue.fi .....WHERE ............#f_deal_temp.f_issue_1.=.fi.f_issue.............AND ............#f_deal_temp.c_market..=.@c_market_depo_bond /*-----.Для.депо.платежа,.пустые.счета.заполняем.l_dealacc.--------------------------*/ ....UPDATE ............#f_deal_temp .......SET ............#f_deal_temp.f_account_2....=.ld.f_account ......FROM ............l_dealacc...ld, ............f_sum.......fs .....WHERE ............#f_deal_temp.f_deal.........=.fs.f_deal.............and ............#f_deal_temp.f_deal.........=.ld.f_deal.............and ............#f_deal_temp.c_market.......=.@c_market_depo_pay....and ............#f_deal_temp.f_account_1....IS.NULL.................and ............#f_deal_temp.f_account_2....IS.NULL.................and ............fs.c_sumkind................=.ld.c_sumkind..........and ............fs.f_account................IS.NULL.................and ............ld.f_account................IS.NOT.NULL /*------------.третья.сумма.по.сделке.(%%.или.НКД).--------------------------------*/ ....UPDATE ............#f_deal_temp .......SET ............#f_deal_temp.f_sum_3............=.fs.f_sum, ............#f_deal_temp.f_sumtype_3........=.st.f_sumtype, ............#f_deal_temp.f_account_3........=.fs.f_account, ............#f_deal_temp.value_2.=.(.#f_deal_temp.value_2.+.IsNull..( ....................................CASE.fs.c_sumkind ........................................WHEN.@c_sumkind.........THEN.fs.value ........................................WHEN.@c_sumkind_minus...THEN.(-fs.value) ........................................ELSE.........................NULL END.,.0.0.......................) ...................................) ......FROM ............f_sum.......fs, ............f_sumtype...st .....WHERE ............#f_deal_temp.f_deal.....=.fs.f_deal..................and ............#f_deal_temp.c_market...=.st.c_market................and ............fs.f_sumtype............=.st.f_sumtype...............and ............st.c_inout..............=.@c_inout_3 /*-----.Покупка/привлечиние.--------------------------------------------------------*/ ....IF.@date_time_11.IS.NOT.NULL..OR.@date_time_12.IS.NOT.NULL BEGIN ........DELETE ................#f_deal_temp .........WHERE ..............(.@date_time_11...................is.not.null.................and ................#f_deal_temp.date_time_1........<..@date_time_11..........).or ..............(.@date_time_12...................is.not.null.................and ................#f_deal_temp.date_time_1........>..@date_time_12..........) ....END /*-----.Дата.1.или.2.Неттинг.----------------------------------------------------*/ ....IF.@check_date_1or2.>.0 ....BEGIN ........IF.@check_date_1or2.=.1........./*.=.*/ ........BEGIN ............DELETE ....................#f_deal_temp .............WHERE ....................#f_deal_temp.date_time_2.IS.NULL................AND ....................NOT.#f_deal_temp.date_time_1.=.@date_time_1or2 ............DELETE ....................#f_deal_temp .............WHERE ....................NOT.#f_deal_temp.date_time_1.=.@date_time_1or2...AND ....................NOT.#f_deal_temp.date_time_2.=.@date_time_1or2 ........END ........ELSE.IF.@check_date_1or2.=.2..../*.>.*/ ........BEGIN ............DELETE ....................#f_deal_temp .............WHERE ....................#f_deal_temp.date_time_2.IS.NULL................AND ....................#f_deal_temp.date_time_1.<.@date_time_1or2 ............DELETE ....................#f_deal_temp .............WHERE ....................#f_deal_temp.date_time_1.<.@date_time_1or2......AND ....................#f_deal_temp.date_time_2.<.@date_time_1or2 ........END ........ELSE.IF.@check_date_1or2.=.3..../*.<.*/ ........BEGIN ............DELETE ....................#f_deal_temp .............WHERE ....................#f_deal_temp.date_time_2.IS.NULL................AND ....................#f_deal_temp.date_time_1.>.@date_time_1or2 ............DELETE ....................#f_deal_temp .............WHERE ....................#f_deal_temp.date_time_1.>.@date_time_1or2......AND ....................#f_deal_temp.date_time_2.>.@date_time_1or2 ........END ....END /*-----.УДАЛЕНИЕ.валюта.1.-------------------------------------------------------*/ ....IF(@c_currency_1.IS.NOT.NULL) ....BEGIN ........DELETE ................#f_deal_temp .........WHERE ................NOT.#f_deal_temp.c_currency_1.=.@c_currency_1...OR ................#f_deal_temp.c_currency_1.....IS.NULL END /*-----.УДАЛЕНИЕ.валюта.2.-------------------------------------------------------*/ ....IF(@c_currency_2.IS.NOT.NULL) ....BEGIN ........DELETE ................#f_deal_temp .........WHERE ................NOT.#f_deal_temp.c_currency_2.=.@c_currency_2...OR ................#f_deal_temp.c_currency_2.......IS.NULL END /*-----.УДАЛЕНИЕ.валюта.1.или.2.--------------------------------------------------*/ ....IF(@c_currency_12.IS.NOT.NULL) ....BEGIN ........DELETE ................#f_deal_temp .........WHERE ................((not.#f_deal_temp.c_currency_1.=.@c_currency_12).and ................(not.#f_deal_temp.c_currency_2.=.@c_currency_12)).or ................#f_deal_temp.c_currency_1.is.null.................or ................#f_deal_temp.c_currency_2.is.null END /*------------.iso.валюты.1.или.код.инструмента.-------------------------------------*/ ....UPDATE ............#f_deal_temp .......SET ............#f_deal_temp.currency_iso_1...=.cc.iso ......FROM ............c_currency......cc .....WHERE ............#f_deal_temp.c_currency_1.......=.cc.c_currency ....UPDATE ............#f_deal_temp .......SET ............#f_deal_temp.currency_iso_1...=.fi.code ......FROM ............f_instr.fi .....WHERE ............#f_deal_temp.f_instr_1........=.fi.f_instr..and ............#f_deal_temp.f_instr_1........IS.NOT.NULL /*------------.тип.цены.-----------------------------------------------------------*/ ....UPDATE ............#f_deal_temp .......SET ............#f_deal_temp.f_pricetype_name...=.fp.name ......FROM ............f_pricetype....fp .....WHERE ............#f_deal_temp.f_pricetype......=..fp.f_pricetype /*------------.(iso).валюты.2,3.----------------------------------------------------*/ ....UPDATE ............#f_deal_temp .......SET ............#f_deal_temp.currency_iso_2...=.cc.iso ......FROM ............c_currency......cc .....WHERE ............#f_deal_temp.c_currency_2.......=.cc.c_currency ....UPDATE ............#f_deal_temp .......SET ............#f_deal_temp.currency_iso_3...=.cc.iso ......FROM ............c_currency......cc .....WHERE ............#f_deal_temp.c_currency_3.......=.cc.c_currency ....UPDATE ............#f_deal_temp .......SET ............currency_iso_3...=.currency_iso_2 .....WHERE ............currency_iso_3.IS.NULL /*------------.Код.инструмента.1.+.номер.выпуска.------------------------------*/ ....UPDATE ............#f_deal_temp .......SET ............#f_deal_temp.f_instr_code_1...=.fi.code ......FROM ............f_instr.fi .....WHERE ............#f_deal_temp.f_instr_1........=.fi.f_instr..and ............#f_deal_temp.f_instr_1........IS.NOT.NULL UPDATE ............#f_deal_temp .......SET ............#f_deal_temp.f_instr_code_1...=.#f_deal_temp.f_instr_code_1.+.'.'.+.fis.name ......FROM ............f_issue.fis .....WHERE ............#f_deal_temp.f_issue_1........=.fis.f_issue..and ............#f_deal_temp.f_issue_1........IS.NOT.NULL /*-----.выделенные.поля.------------------------------------------------------------*/ ....UPDATE ............#f_deal_temp .......SET ............#f_deal_temp.c_sumkind..........=.@c_sumkind, ............#f_deal_temp.c_currency_sum.....=.#f_deal_temp.c_currency_1.*.1000.+.#f_deal_temp.c_currency_2, ............#f_deal_temp.netting_value_1....=.0, ............#f_deal_temp.netting_value_2....=.0, ............#f_deal_temp.journal_f_deal.....=.0, ............#f_deal_temp.journal_add........=.0, ............#f_deal_temp.selectrow..........=.0 /*-----.УДАЛЕНИЕ.валюты.------------------------------------------------------------*/ ....IF(@check_l_currencyuser.=.1) ....BEGIN ........DELETE ................#f_deal_temp .........WHERE ................#f_deal_temp.c_currency_sum.not.in.(SELECT.DISTINCT ............................................................lc.c_currency.*.1000.+.lc.c_c_c_currency ......................................................FROM ............................................................l_currencyuser...lc .....................................................WHERE ............................................................#f_deal_temp.c_currency_1.......=.lc.c_currency.........and ............................................................#f_deal_temp.c_currency_2.......=.lc.c_c_c_currency.....and ............................................................lc.c_c_c_currency...............is.not.null.............and ............................................................lc.f_user.......................=.@f_user_id............and ............................................................lc.c_settype.=.@c_settype ....................................................) ................and ................#f_deal_temp.c_currency_1...not.in.(SELECT.DISTINCT ............................................................lc.c_currency ......................................................FROM ............................................................l_currencyuser...lc .....................................................WHERE ............................................................#f_deal_temp.c_currency_1.......=.lc.c_currency.........and ............................................................lc.c_c_c_currency...............is.null.................and ............................................................lc.f_user.......................=.@f_user_id............and ............................................................lc.c_settype....................=.@c_settype ...................................................) ....END /*-----.УДАЛЕНИЕ.Категории.-------------------------------------------------------*/ ....IF.@check_f_mean.IS.NOT.NULL BEGIN ......../*.Кол-во.записей.в.запросе.*/ ........SELECT ...............@f_mean.=.count(*) ..........FROM ...............l_meanuser..lu .........WHERE ...............lu.f_user.....=.@f_user_id.AND ...............lu.c_settype..=.@c_settype ........IF.@f_mean.>.0 ........BEGIN ............/*.Курсор.по.категориям.*/ ............DECLARE.cursorb_category.CURSOR.FOR ............SELECT.DISTINCT ....................c_category ..............FROM ....................l_meanuser .............WHERE ....................f_user.=.@f_user_id.AND ....................c_settype.=.@c_settype ............/*.Открытие.курсора.*/ ............OPEN.cursorb_category ............FETCH.cursorb_category.INTO ....................@c_category ............WHILE.@@sqlstatus.=.0 ............BEGIN ................/*.Обнуление.значений.категорий.*/ ................UPDATE ........................#f_deal_temp ...................SET ........................f_mean.=.NULL /*.Проставить.значения.текущей.категории.*/ ................UPDATE ........................#f_deal_temp ...................SET ........................#f_deal_temp.f_mean.=.lm.f_mean ..................FROM ........................l_meandeal......lm .................WHERE ........................lm.f_deal.....=.#f_deal_temp.f_deal.......AND ........................lm.c_category.=.@c_category ................/*.Удалить.сделки.с.другими.значениями.категорий.*/ ................DELETE ........................#f_deal_temp .................WHERE ........................#f_deal_temp.f_mean.IS.NOT.NULL.AND ........................#f_deal_temp.f_mean.NOT.IN.(SELECT ..........................................................lu.f_mean ......................................................FROM ...........................................................l_meanuser..lu .....................................................WHERE ...........................................................lu.f_user.....=.@f_user_id....AND ...........................................................lu.c_settype..=.@c_settype....AND ...........................................................lu.c_category.=.@c_category...AND ...........................................................lu.f_mean.....IS.NOT.NULL ) ................/*.Кол-во.пустых.записей.в.запросе.*/ ................SELECT .......................@f_mean.=.count(*) ..................FROM .......................l_meanuser..lu .................WHERE .......................lu.f_user.....=.@f_user_id...AND .......................lu.c_settype..=.@c_settype...AND .......................lu.c_category.=.@c_category..AND .......................lu.f_mean.....=.NULL IF.@f_mean.=.0 ................BEGIN ....................DELETE ............................#f_deal_temp .....................WHERE ............................#f_deal_temp.f_mean.IS.NULL END ................FETCH.cursorb_category.INTO ....................@c_category ............END ............CLOSE.cursorb_category ............DEALLOCATE.CURSOR.cursorb_category ........END ....END /*-----.название.рынка.-------------------------------------------------------------*/ ....UPDATE ............#f_deal_temp .......SET ............#f_deal_temp.market_name........=.cm.name ......FROM ............c_market....cm .....WHERE ............#f_deal_temp.c_market...........=.cm.c_market ..../*.SWAP.*/ ....UPDATE ............#f_deal_temp .......SET ............market_name.=.market_name.+.'-S' .....WHERE ............c_market.=.@c_market_forex...AND ............rollover.=.1 /*------------.тип.сделки.----------------------------------------------------------*/ ....UPDATE ............#f_deal_temp .......SET ............#f_deal_temp.c_classif_name.....=.cc.name, ............#f_deal_temp.textcolor..........=.cc.textcolor ......FROM ............c_classificator........cc .....WHERE ............#f_deal_temp.c_classificator....=.cc.c_classificator /*------------.имя.автора.сделки.---------------------------------------------------*/ ....UPDATE ............#f_deal_temp .......SET ............#f_deal_temp.usermake_1..=..fu.name.+.'.'.+ ........................................CONVERT(varchar,.dt_make_1,.111).+.'.'.+ ........................................CONVERT(varchar,.dt_make_1,.111) ......FROM ............f_user........fu .....WHERE ............#f_deal_temp.f_user_1....=.fu.f_user /*-----.подсветка.первой.суммы.если.она.вошла.в.неттинг.----------------------------*/ ....UPDATE..#f_deal_temp .......SET ............netting_value_1.=.ld.l_dealsum ......FROM ............l_dealsum...ld, ............f_deal......fd .....WHERE ............#f_deal_temp.f_sum_1............=.ld.f_sum..........and ............fd.f_deal.......................=.ld.f_deal.........and ............not.fd.c_classificator..........=.@c_class_cancel /*-----.подсветка.второй.суммы.если.она.вошла.в.неттинг.---------------------------*/ ....UPDATE..#f_deal_temp .......SET ............netting_value_2.=.ld.l_dealsum ......FROM ............l_dealsum...ld, ............f_deal......fd .....WHERE ............#f_deal_temp.f_sum_2............=.ld.f_sum..........and ............fd.f_deal.......................=.ld.f_deal.........and ............not.fd.c_classificator..........=.@c_class_cancel /*-----.подсветка.первой.суммы.если.она.вошла.в.ролловер.---------------------------*/ ....UPDATE..#f_deal_temp .......SET ............rollover_value_1.=.lr.l_rollsum ......FROM ............l_rollsum...lr .....WHERE ............#f_deal_temp.f_sum_1........=.lr.f_sum..............AND ............lr.f_deal...................IS.NOT.NULL /*-----.подсветка.второй.суммы.если.она.вошла.в.ролловер.--------------------------*/ ....UPDATE..#f_deal_temp .......SET ............rollover_value_2.=.lr.l_rollsum ......FROM ............l_rollsum...lr .....WHERE ............#f_deal_temp.f_sum_2........=.lr.f_sum..............AND ............lr.f_deal...................IS.NOT.NULL /*-----.флаг.1.сделки.если.она.вошла.в.таблицу.ccылок.журнала.(l_jurnal).-----------*/ ....UPDATE..#f_deal_temp .......SET ............journal_add.=.1 ......FROM ............l_jurnal....lj .....WHERE ............lj.c_jurtype...............=.@c_jurtype.....and ............#f_deal_temp.f_deal........=.lj.f_d_f_deal /*-----.ID.сделки.если.она.вошла.в.сделку.журнал.-----------------------------------*/ ....UPDATE.#f_deal_temp .......SET ............journal_l_jurnal....=.lj.l_jurnal, ............journal_f_deal......=.lj.f_deal, ............journal_f_d_f_deal..=.lj.f_d_f_deal ......FROM ............l_jurnal....lj .....WHERE ............#f_deal_temp.f_deal........=.lj.f_d_f_deal..and ............lj.c_jurtype...............=.@c_jurtype.....and ............lj.f_d_f_deal..............is.not.null /*-----последние.изменения.сделал.--------------------------------------------------*/ ....UPDATE..#f_deal_temp .......SET ............#f_deal_temp.f_user_2.......=.fu.f_user ......FROM ............f_user....fu .....WHERE ............#f_deal_temp.usermodify_2...=.fu.name ..../*.Срок.*/ ....IF.@check_srok.>.0 ....BEGIN ......../*.Проставим.срок.=.0.для.всех,.кроме.Форекс.и.МБК.*/ ........UPDATE ................#f_deal_temp ...........SET ................srok.=.0 .........WHERE ................NOT.c_market.=.@c_market_mbk.AND ................NOT.c_market.=.@c_market_forex ......../*.Проставим.сроки.для.ЦБ.*/ ........UPDATE ................#f_deal_temp ...........SET ................date_pay......=.ISNULL(.fs_date_pay_1,.date_time_2.), ................date_delivery.=.ISNULL(.st_date_pay_1,.date_time_1.) .........WHERE ................c_market.IN.(.@c_market_stock,.@c_market_bond,.@c_market_bill.) ......../*.MIN(.дата.поставки,.дата.оплаты.).*/ ........UPDATE ................#f_deal_temp ...........SET ................date_min.=.CASE ................................WHEN.date_pay.<.date_delivery.THEN.date_pay ................................ELSE.date_delivery ...........................END .........WHERE ................c_market.IN.(.@c_market_stock,.@c_market_bond,.@c_market_bill.) ........UPDATE ................#f_deal_temp ...........SET ................srok.=.DATEDIFF(.dd,.do_date_time_1,.date_min.) .........WHERE ................c_market.IN.(.@c_market_stock,.@c_market_bond,.@c_market_bill.) ......../*.Корректировка.для.учета.выходных.дней.*/ ........UPDATE ................#f_deal_temp ...........SET ................srok.=.srok.-.( ................................SELECT ........................................COUNT(.*.) ..................................FROM ........................................f_holiday.fh .................................WHERE ........................................fh.date_time.BETWEEN.#f_deal_temp.do_date_time_1.and.#f_deal_temp.date_min.AND ........................................c_currency.=.@c_currency_national ..............................) ..........WHERE ................c_market.IN.(.@c_market_stock,.@c_market_bond,.@c_market_bill.).AND ................srok.!=.0 ......../*.Для.МБК.*/ ........UPDATE ................#f_deal_temp ...........SET ................srok.=.datediff(.dd,.date_time_1,.date_time_2.) .........WHERE ................c_market.=.@c_market_mbk ......../*.Для.ForEx.*/ ......../*.Установить.дату.создания.как.дату.перехода.статуса.(.fx_dt_make.-.заполняется.выше.).*/ ........UPDATE..#f_deal_temp ...........SET ................fx_dt_make.=.(.SELECT ........................................max(fo.date_time) .................................FROM ........................................f_oper..fo ................................WHERE ........................................#f_deal_temp.f_deal.=.fo.f_deal.....and ........................................fo.f_move..in.(select ................................................................f_move .........................................................from ................................................................f_move ........................................................where ................................................................c_dealstatus.=.2000.....and .............................................................c_d_c_dealstatus.=.3000 ......................................................) ...........................) .........WHERE ................c_market.=.@c_market_forex.AND ................NOT.#f_deal_temp.c_classificator.IN(.2,.3.) ......../*.Выбрать.максимальную.дату.валютирования.*/ ........UPDATE ................#f_deal_temp ...........SET ................fx_max_date.=.CASE ....................................WHEN.date_time_2.>.date_time_1.THEN.date_time_2 ....................................ELSE.date_time_1 ..............................END .........WHERE ................c_market.=.@c_market_forex ......../*.дата.валютирования.должны.быть.рабочим.днем.*/ ........WHILE.EXISTS( ........................SELECT ................................1 ..........................FROM ................................#f_deal_temp .........................WHERE ................................c_market.=.@c_market_forex.AND ................................fx_max_date.IN.( ........................................SELECT ................................................date_time ..........................................FROM ................................................f_holiday .........................................WHERE ................................................f_holiday.c_currency.=.@c_currency_national ...................................................) ....................) ........BEGIN ............UPDATE ....................#f_deal_temp ...............SET ....................fx_max_date.=.dateadd(.dd,.1,.fx_max_date.) .............WHERE ....................c_market.=.@c_market_forex.AND ....................fx_max_date.IN.( ........................................SELECT ................................................date_time ..........................................FROM ................................................f_holiday .........................................WHERE ................................................f_holiday.c_currency.=.@c_currency_national ......................................) ........END ......../*.Проставим.срок.*/ ........UPDATE ................#f_deal_temp ...........SET ................srok.=.datediff(.dd,.fx_dt_make,.fx_max_date.) .........WHERE ................c_market.=.@c_market_forex ......../* ............Вычесть.из.сроков.выходные.дни.(сроки.считаются.по.базовой.валюте.) ............Для.сделок.Today.этого.делать.не.нужно ........*/ ........UPDATE ................#f_deal_temp ...........SET ................srok.=.srok.-.( ................................SELECT ........................................COUNT(.*.) ..................................FROM ........................................f_holiday.fh .................................WHERE ........................................fh.date_time.BETWEEN.#f_deal_temp.fx_dt_make.and.#f_deal_temp.fx_max_date.AND ........................................c_currency.=.@c_currency_national ..............................) ..........WHERE ................c_market.=.@c_market_forex.AND ................NOT.srok.=.0 ........IF.@check_srok.=.1...../*.=.*/ ........BEGIN ............DELETE ....................#f_deal_temp .............WHERE ....................NOT.srok.=.@srok ........END ........ELSE.IF.@check_srok.=.2...../*.>.*/ ........BEGIN ............DELETE ....................#f_deal_temp .............WHERE ....................NOT.srok.>.@srok ........END ........ELSE.IF.@check_srok.=.3...../*.<.*/ ........BEGIN ............DELETE ....................#f_deal_temp .............WHERE ....................NOT.srok.<.@srok ........END ....END ..../*.Запрос.по.инициатору.*/ ....IF.@f_client12.>.0 ....BEGIN ......../*.Запрос.по.клиенту.портфеля.*/ ........IF.@f_client_4.>.0 ........BEGIN ............UPDATE ....................#f_deal_temp ...............SET ....................f_client12.=.f_client_2 .............WHERE ....................f_client_2.=.@f_client12....AND ....................( ........................( ............................f_client_2.=.f_client_1.....AND ............................fp_client_2.=.@f_client_4 ........................).OR ........................NOT.f_client_2.=.f_client_1 ....................) ........END ........ELSE ........BEGIN ............UPDATE ....................#f_deal_temp ...............SET ....................f_client12.=.f_client_2 .............WHERE ....................f_client_2.=.@f_client12 ........END ....END ....ELSE ....BEGIN ......../*.Запрос.по.клиенту.портфеля.*/ ........IF.@f_client_4.>.0 ........BEGIN ............UPDATE ....................#f_deal_temp ...............SET ....................f_client12.=.f_client_2 .............WHERE ....................fp_client_2.=.@f_client_4 ........END ....END /*-----.возвращаемые.поля.----------------------------------------------------------*/ err: ....SELECT ............f_deal, ............f_deal_reference, ............c_jurtype, ............c_market, ............c_classificator, ............c_classif_name, ............textcolor, ............c_dealstatus, ............f_path, ............number, ............number_jur, ............descr, ............rollover, ............commission, /*-----f_sum.-.первая.сумма.сделки.-------------------------------------------------*/ ............f_sum_1, ............f_sumtype_1, ............c_currency_1, ............currency_iso_1, ............date_time_1, ............value_1, /*-----f_member.-.первый.участник.сделки.-------------------------------------------*/ ............f_member_1, ............c_membertype_1, ............f_client_1, ............code_1, ............rtscode_1, ............rsbcode_1, ............firstname_1, ............f_portf_1, ............f_portf_code_1, /*-----f_sum.-.вторая.сумма.сделки.-------------------------------------------------*/ ............f_sum_2, ............f_sumtype_2, ............c_currency_2, ............currency_iso_2, ............date_time_2, ............value_2, /*-----f_member.-.второй.участник.сделки.-------------------------------------------*/ ............f_member_2, ............c_membertype_2, ............f_client_2, ............code_2, ............rtscode_2, ............rsbcode_2, ............firstname_2, ............f_portf_2, ............f_portf_code_2, /*-----f_sum.-.третья.сумма.сделки.-------------------------------------------------*/ ............f_sum_3, ............f_sumtype_3, ............c_currency_3, ............currency_iso_3, ............date_time_3, ............value_3, /*-----f_member.-.третий.участник.сделки.-------------------------------------------*/ ............f_member_3, ............c_membertype_3, ............f_client_3, ............code_3, ............rtscode_3, ............rsbcode_3, ............firstname_3, /*-----f_member.-.четвертый.участник.сделки.----------------------------------------*/ ............f_member_4, ............c_membertype_4, ............f_client_4, ............code_4, ............rtscode_4, ............rsbcode_4, ............firstname_4, /*-----создал.----------------------------------------------------------------------*/ ............f_user_1, ............usermake_1, ............userdescr_1, ............dt_make_1, /*-----последние.изменения.сделал.--------------------------------------------------*/ ............f_user_2, ............usermodify_2, ............userdescr_2, ............dt_modify_2, /*-----дополнительные.поля.---------------------------------------------------------*/ ............f_rate, ............rate, ............real_rate, ............revers, ............finans, ............market_name, ............c_opertype, ............c_metod, ............c_sumkind, ............f_account_1, ............f_account_2, ............f_account_3, ............f_pos_11, ............f_pos_12, ............f_pos_13, ............f_pos_21, ............f_pos_22, ............f_pos_23, /*-----не.возвращаемые.поля.--------------------------------------------------------*/ ............netting_value_1, ............netting_value_2, ............rollover_value_1, ............rollover_value_2, ............journal_l_jurnal, ............journal_f_deal, ............journal_f_d_f_deal, ............journal_add, ............f_instr_1, ............f_issue_1, ............f_instr_code_1, ............do_dognum_1, ............do_date_time_1, ............do_dogform_name_1, ............do_descr_1, ............do_dognum_2, ............do_date_time_2, ............do_dogform_name_2, ............do_descr_2, ............st_date_pay_1, ............st_date_begin_1, ............st_date_end_1, ............fs_date_pay_1, ............f_pricetype, ............f_pricetype_name, ............f_client12, ............@c_currency_12......c_currency_12, ............rate_pay, ............selectrow ......FROM ............#f_deal_temp ..ORDER.BY ............f_deal ..../*.Удаление.временной.таблицы.*/ ....DROP.TABLE.#f_deal_account ....DROP.TABLE.#f_deal_temp ..../*.Проставим.время.работы.процедуры.*/ END ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 17:21 |
|
||
|
Как бороться с блокировками в ASE 12.5.0.3
|
|||
|---|---|---|---|
|
#18+
После запуска: sp_sysmon '00:10:00' go Сервер ASE через несколько минут вошел в глубокий штопор и умер так, что пришлось его перезапускать компьютер на котором он работал. Последнее что он выдал перед смертью на запуск sp_who было: Failed to allocate disk space for a work table in database 'tempdb'. You may be able to free up space by using the DUMP TRANsaction command, or you may want to extend the size of the database by using the ALTER DATABASE command. Дальше, что было я думаю рассказывать не стоит, через это проходили все :) Телефон расплавился, начальство пришло лично, ..... Что еще попробовать? Как бороться с блокировками? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 18:24 |
|
||
|
Как бороться с блокировками в ASE 12.5.0.3
|
|||
|---|---|---|---|
|
#18+
>Размер tempdb 603 Mb = (3Mb Data and Log + 300 Data + 300 Log) Увеличить лог до 600Мб, вынести его на отдельный девайс. >Check - Truncate log on checkpoint Убрать, поставить порог примерно на 200Мб свободного места, а в нем dump tran tempdb with no_log. (можно просто поправит sp_tresholdaction в sybsystemprocs и поменять расположение последнего порога для tempdb) Желательно сделать отдельный кэш для tempdb. Если стартует несколько ядер, то можно поиграться с партициями кэшей. В подобной ситуации может оказаться виноват не тот процесс, который всех блокирует. Посмотри повнимательней, что делает 31-й процесс в первом примере и 61-й во втором. Часто подобная ситуация возникает когда какой-либо процесс проводит операции с большим объемом ввода-вывода в tempdb (например update больших временных таблиц), при этом все процессы, создающие временные таблицы выстраиваются в очередь и все жутко тормозит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 23:05 |
|
||
|
Как бороться с блокировками в ASE 12.5.0.3
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 31 в первом и 61 во втором это я, - кто запускает sh_who, а в остальном все очень похоже на правду. Действительно начинает тормозить если пользователь запросил операции с большим объемом ввода-вывода, в tempdb (например update больших временных таблиц). - Прямо в яблочко. А если таких, в один момент пара, тройка, то база висит 100% две и более минуты. Можно постараться, как вчера, и вообще завалить базу. :( Код: plaintext Сегодня на работу меня не пустят, но в понедельник обязательно все это проделаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2004, 14:56 |
|
||
|
Как бороться с блокировками в ASE 12.5.0.3
|
|||
|---|---|---|---|
|
#18+
>Это как сделать, а всю tempdb в кэш засунуть можно? Как обычно, создаешь кэш: sp_cacheconfig "имя_кэша", "размер_кэша" перезагружаемся. При создании кэша лучше явно указать еденицу измерения, т.е. если 50МБ, то надо писать sp_cacheconfig "имя_кэша", "50M" Всю tempdb засунуть кэш конечно можно (в предельном варианте делают виртуальный диск в ОЗУ и кладут tempdb туда, но видеть такое не приходилось), но обычно столько свободной ОЗУ нет, да это и не эффективно, в твоем случае хватит 100-150Мб. Примерно 30-40 Мб можно отвести под 16Кб пул. sp_poolconfig "имя_кэша", "30M", "16K", "2K" После этого надо привязать новый кэш к tempdb, это можно сделать в Central, папка Caches, выбираем кэш Properties->Cache Bindings или sp_bindcache "имя_кэша","имя_базы" После окончаний всех операций с кэшами и tempdb сервак лучше перезагрузить еще раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2004, 17:45 |
|
||
|
Как бороться с блокировками в ASE 12.5.0.3
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Можно попробовать не на 10 минут, а хотя бы на 1-2... Также могу посоветовать (у самого так работает) для tempdb не делать разных девайсов для лога и данных... У меня две базы 2 и 3.5 Гб, и tempdb недавно только сделал 1Гб, до этого было 512Мб... То, что блокировки висят 2 минуты на апдейтах/делитах больших объемов данных - это вполне нормально, если сервер не очень мощный, а данных и юзеров, одновременно пытающихся что-то делать, много. Процессор один? Если один процессор на 16 активных пользователей ,то это не очень хорошо... Могу посоветовать сделать индекс(ы) на временной таблице #f_deal_temp по всем ключевым/используемым в связях полям. Если данных в таблицу насасывается много, то при операциях идет сканирование всей таблицы. Как следствие, идет интенсивный ввод/вывод + загрузка процессора. Индексы могут уменьшить время операций, число операций ввода/вывода - как следствие, должно уменьшиться время ожидания остальных процессов в блокировке. RAID стоит какой? Сколько и каких дисков? Как загружена дисовая подсистема? (Хотя бы просто посмотри - сильно винтами шуршит?) Какая при этом загрузка проца? 2_Sania Код: plaintext 1. 2. У меня, например, при создании 16К-пула (от 8 до 300 Мб пробовал) начинался жуткий ввод/вывод (винтами постоянно шуршал) и любой select выполнялся раза в 4 дольше... ASE 12.0, правда... Вот 4К-пул, мегов на 150 - дело хорошее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 11:20 |
|
||
|
Как бороться с блокировками в ASE 12.5.0.3
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. Стал перечитывать внимательнее, появился вопрос. А как поставить порог на 200Мб для tempdb ? sp_addthreshold tempdb, logsegment, 200, prc_dumptransaction Это правильно? Или лучше указать свою процедуру например? sp_addthreshold tempdb, logsegment, 200, prc_dumptransaction Но тогда почему ASE выдает ошибку: This threshold is too close to one or more existing thresholds. Thresholds must be no closer than 128 pages to each other. Если на tempdb процедура создана: CREATE PROCEDURE prc_dumptransaction @dbname varchar(30), @segmentname varchar(30), @spase_left int, @status int AS DUMP TRANSACTION tempdb with no_log ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 12:04 |
|
||
|
Как бороться с блокировками в ASE 12.5.0.3
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 12:10 |
|
||
|
Как бороться с блокировками в ASE 12.5.0.3
|
|||
|---|---|---|---|
|
#18+
Код: plaintext Да я это упустил: RAID - 5 пять винчестетов Процессоров 2 Дискового простанства 135 Gb Процессор в критические моменты занят на 60 - 80%% ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 12:38 |
|
||
|
Как бороться с блокировками в ASE 12.5.0.3
|
|||
|---|---|---|---|
|
#18+
Получилось sp_sysmon '00:10:00' go DBCC.execution.completed..If.DBCC.printed.error.messages,.contact.a.user.with.System.Administrator.(SA).role. =============================================================================== ......Sybase.Adaptive.Server.Enterprise.System.Performance.Report =============================================================================== Server.Version:........Adaptive.Server.Enterprise/12.5.0.3/EBF.11449.ESD#4/P/NT Server.Name:...........Server.is.Unnamed Run.Date:..............May.17,.2004 Statistics.Cleared.at:.12:26:16 Statistics.Sampled.at:.12:31:16 Sample.Interval:.......00:05:00 =============================================================================== Kernel.Utilization ------------------ ..Your.Runnable.Process.Search.Count.is.set.to.2000 ..and.I/O.Polling.Process.Count.is.set.to.10 ..Engine.Busy.Utilization........CPU.Busy...I/O.Busy.......Idle ..------------------------.......--------...--------...-------- ....Engine.0........................0.0.%......0.0.%....100.0.% ..CPU.Yields.by.Engine............per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ....Engine.0.........................32.0.........274.3........9599.....100.0.% ..Network.Checks ....Non-Blocking....................659.7........5654.3......197901......91.2.% ....Blocking.........................64.0.........548.5.......19198.......8.8.% ..-------------------------..------------..------------..---------- ..Total.Network.I/O.Checks..........723.7........6202.8......217099 ..Avg.Net.I/Os.per.Check..............n/a...........n/a.....0.00000.......n/a ..Disk.I/O.Checks ....Total.Disk.I/O.Checks...........691.7........5928.6......207500.......n/a ....Checks.Returning.I/O..............0.0...........0.0...........0.......0.0.% =============================================================================== Worker.Process.Management ------------------------- ..................................per.sec......per.xact.......count..%.of.total .............................------------..------------..----------..---------- .Worker.Process.Requests ...Total.Requests.....................0.0...........0.0...........0.......n/a .Worker.Process.Usage ...Total.Used.........................0.0...........0.0...........0.......n/a ...Max.Ever.Used.During.Sample........0.0...........0.0...........0.......n/a .Memory.Requests.for.Worker.Processes ...Total.Requests.....................0.0...........0.0...........0.......n/a =============================================================================== Parallel.Query.Management ------------------------- ..Parallel.Query.Usage............per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ..Total.Parallel.Queries..............0.0...........0.0...........0.......n/a ..Merge.Lock.Requests.............per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ..Total.#.of.Requests.................0.0...........0.0...........0.......n/a ..Sort.Buffer.Waits...............per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ..Total.#.of.Waits....................0.0...........0.0...........0.......n/a =============================================================================== Task.Management...................per.sec......per.xact.......count..%.of.total ---------------------------..------------..------------..----------..---------- ..Connections.Opened..................0.0...........0.0...........0.......n/a ..Task.Context.Switches.by.Engine ....Engine.0..........................0.6...........5.0.........175.....100.0.% ..Task.Context.Switches.Due.To: ....Voluntary.Yields..................0.3...........2.1..........75......42.9.% ....Cache.Search.Misses...............0.0...........0.0...........0.......0.0.% ....System.Disk.Writes................0.0...........0.0...........0.......0.0.% ....I/O.Pacing........................0.0...........0.0...........0.......0.0.% ....Logical.Lock.Contention...........0.0...........0.0...........0.......0.0.% ....Address.Lock.Contention...........0.0...........0.0...........0.......0.0.% ....Latch.Contention..................0.0...........0.0...........0.......0.0.% ....Log.Semaphore.Contention..........0.0...........0.0...........0.......0.0.% ....PLC.Lock.Contention...............0.0...........0.0...........0.......0.0.% ....Group.Commit.Sleeps...............0.0...........0.0...........0.......0.0.% ....Last.Log.Page.Writes..............0.0...........0.0...........0.......0.0.% ....Modify.Conflicts..................0.0...........0.0...........0.......0.0.% ....I/O.Device.Contention.............0.0...........0.0...........0.......0.0.% ....Network.Packet.Received...........0.0...........0.0...........0.......0.0.% ....Network.Packet.Sent...............0.0...........0.0...........0.......0.0.% ....Other.Causes......................0.3...........2.9.........100......57.1.% =============================================================================== Application.Management ---------------------- ..Application.Statistics.Summary.(All.Applications) ..------------------------------------------------- ..Priority.Changes................per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ....To.High.Priority..................0.0...........0.0...........0.......0.0.% ....To.Medium.Priority................0.1...........0.4..........15......50.0.% ....To.Low.Priority...................0.1...........0.4..........15......50.0.% ..-------------------------..------------..------------..---------- ..Total.Priority.Changes..............0.1...........0.9..........30 ..Allotted.Slices.Exhausted.......per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ....High.Priority.....................0.0...........0.0...........0.......0.0.% ....Medium.Priority...................0.0...........0.0...........1.....100.0.% ....Low.Priority......................0.0...........0.0...........0.......0.0.% ..-------------------------..------------..------------..---------- ..Total.Slices.Exhausted..............0.0...........0.0...........1 ..Skipped.Tasks.By.Engine.........per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ..Total.Engine.Skips..................0.0...........0.0...........0.......n/a ..Engine.Scope.Changes................0.0...........0.0...........0.......n/a =============================================================================== ESP.Management....................per.sec......per.xact.......count..%.of.total ---------------------------..------------..------------..----------..---------- ..ESP.Requests........................0.0...........0.0...........0.......n/a =============================================================================== Housekeeper.Task.Activity ------------------------- ..................................per.sec......per.xact.......count..%.of.total .............................------------..------------..---------- Buffer.Cache.Washes ..Clean..............................0.5...........3.9.........135......99.3.% ..Dirty..............................0.0...........0.0...........1.......0.7.% .............................------------..------------..---------- Total.Washes.........................0.5...........3.9.........136 Garbage.Collections..................0.2...........1.7..........60.......n/a Pages.Processed.in.GC................0.0...........0.0...........0.......n/a Statistics.Updates...................0.0...........0.2...........6.......n/a =============================================================================== Monitor.Access.to.Executing.SQL ------------------------------- ..................................per.sec......per.xact.......count..%.of.total .............................------------..------------..----------..---------- .Waits.on.Execution.Plans............0.0...........0.0...........0.......n/a .Number.of.SQL.Text.Overflows........0.0...........0.0...........0.......n/a .Maximum.SQL.Text.Requested..........n/a...........n/a...........0.......n/a ..(since.beginning.of.sample) =============================================================================== Transaction.Profile ------------------- ..Transaction.Summary.............per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ....Committed.Xacts...................0.1...........n/a..........35.....n/a ..Transaction.Detail..............per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ....Total.Rows.Affected...............0.0...........0.0...........0.......n/a =============================================================================== Transaction.Management ---------------------- ..ULC.Flushes.to.Xact.Log.........per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ....by.Full.ULC.......................0.0...........0.0...........0.......0.0.% ....by.End.Transaction................0.0...........0.0...........0.......0.0.% ....by.Change.of.Database.............0.0...........0.0...........0.......0.0.% ....by.Single.Log.Record..............0.0...........0.0...........0.......0.0.% ....by.Other..........................0.1...........1.0..........35.....100.0.% ..-------------------------..------------..------------..---------- ..Total.ULC.Flushes...................0.1...........1.0..........35 ..ULC.Log.Records.....................0.0...........0.0...........0.......n/a ..Max.ULC.Size.During.Sample..........n/a...........n/a...........0.......n/a ..ULC.Semaphore.Requests ....Granted...........................0.5...........4.0.........140.....100.0.% ....Waited............................0.0...........0.0...........0.......0.0.% ..-------------------------..------------..------------..---------- ..Total.ULC.Semaphore.Req.............0.5...........4.0.........140 ..Log.Semaphore.Requests ....Granted...........................0.1...........1.0..........35.....100.0.% ....Waited............................0.0...........0.0...........0.......0.0.% ..-------------------------..------------..------------..---------- ..Total.Log.Semaphore.Req.............0.1...........1.0..........35 ..Transaction.Log.Writes..............0.0...........0.0...........0.......n/a ..Transaction.Log.Alloc...............0.0...........0.0...........0.......n/a =============================================================================== Index.Management ---------------- ..Nonclustered.Maintenance........per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ....Ins/Upd.Requiring.Maint...........0.0...........0.0...........0.......n/a ......#.of.NC.Ndx.Maint...............0.0...........0.0...........0.......n/a ....Deletes.Requiring.Maint...........0.0...........0.0...........0.......n/a ......#.of.NC.Ndx.Maint...............0.0...........0.0...........0.......n/a ....RID.Upd.from.Clust.Split..........0.0...........0.0...........0.......n/a ......#.of.NC.Ndx.Maint...............0.0...........0.0...........0.......n/a ....Upd/Del.DOL.Req.Maint.............0.0...........0.0...........0.......n/a ......#.of.DOL.Ndx.Maint..............0.0...........0.0...........0.......n/a ..Page.Splits.........................0.0...........0.0...........0.......n/a ..Page.Shrinks........................0.0...........0.0...........0.......n/a ..Index.Scans.....................per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ....Total.Scans.......................0.0...........0.0...........0.......n/a =============================================================================== Metadata.Cache.Management ------------------------- ..Metadata.Cache.Summary.........per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ..Open.Object.Usage ....Active............................n/a...........n/a..........35.......n/a ....Max.Ever.Used.Since.Boot..........n/a...........n/a..........35.......n/a ....Free..............................n/a...........n/a.........465.......n/a ....Reuse.Requests ......Succeeded.......................n/a...........n/a...........0.......n/a ......Failed..........................n/a...........n/a...........0.......n/a ..Open.Index.Usage ....Active............................n/a...........n/a..........12.......n/a ....Max.Ever.Used.Since.Boot..........n/a...........n/a..........12.......n/a ....Free..............................n/a...........n/a.........488.......n/a ....Reuse.Requests ......Succeeded.......................n/a...........n/a...........0.......n/a ......Failed..........................n/a...........n/a...........0.......n/a ..Open.Database.Usage ....Active............................n/a...........n/a...........8.......n/a ....Max.Ever.Used.Since.Boot..........n/a...........n/a...........8.......n/a ....Free..............................n/a...........n/a...........4.......n/a ....Reuse.Requests ......Succeeded.......................n/a...........n/a...........0.......n/a ......Failed..........................n/a...........n/a...........0.......n/a ..Object.Manager.Spinlock.Contention..n/a...........n/a..........n/a......0.0.% ..Object.Spinlock.Contention..........n/a...........n/a..........n/a......0.0.% ..Index.Spinlock.Contention...........n/a...........n/a..........n/a......0.0.% ..Hash.Spinlock.Contention............n/a...........n/a..........n/a......0.0.% =============================================================================== Lock.Management --------------- ..Lock.Summary....................per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ..Total.Lock.Requests.................0.1...........1.0..........35.......n/a ..Avg.Lock.Contention.................0.0...........0.0...........0.......0.0.% ..Deadlock.Percentage.................0.0...........0.0...........0.......0.0.% ..Lock.Detail.....................per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ..Table.Lock.Hashtable ....Lookups...........................0.0...........0.0...........0.......n/a ....Spinlock.Contention...............n/a...........n/a.........n/a.......0.0.% ..Exclusive.Table ....Total.EX-Table.Requests...........0.0...........0.0...........0.......n/a ..Shared.Table ....Total.SH-Table.Requests...........0.0...........0.0...........0.......n/a ..Exclusive.Intent ....Total.EX-Intent.Requests..........0.0...........0.0...........0.......n/a ..Shared.Intent ....Total.SH-Intent.Requests..........0.0...........0.0...........0.......n/a ..Page.&.Row.Lock.HashTable ....Lookups...........................0.0...........0.0...........0.......n/a ....Spinlock.Contention...............n/a...........n/a.........n/a.......0.0.% ..Exclusive.Page ....Total.EX-Page.Requests............0.0...........0.0...........0.......n/a ..Update.Page ....Total.UP-Page.Requests............0.0...........0.0...........0.......n/a ..Shared.Page ....Total.SH-Page.Requests............0.0...........0.0...........0.......n/a ..Exclusive.Row ....Total.EX-Row.Requests.............0.0...........0.0...........0.......n/a ..Update.Row ....Total.UP-Row.Requests.............0.0...........0.0...........0.......n/a ..Shared.Row ....Total.SH-Row.Requests.............0.0...........0.0...........0.......n/a ..Next-Key ....Total.Next-Key.Requests...........0.0...........0.0...........0.......n/a ..Address.Lock.Hashtable ....Lookups...........................0.1...........1.0..........35.......n/a ....Avg.Chain.Length..................n/a...........n/a.....0.00000.......n/a ....Spinlock.Contention...............n/a...........n/a.........n/a.......0.0.% ..Exclusive.Address ....Granted...........................0.1...........1.0..........35.....100.0.% ....Waited............................0.0...........0.0...........0.......0.0.% ..-------------------------..------------..------------..----------..---------- ..Total.EX-Address.Requests...........0.1...........1.0..........35.....100.0.% ..Shared.Address ....Total.SH-Address.Requests.........0.0...........0.0...........0.......n/a ..Last.Page.Locks.on.Heaps ....Total.Last.Pg.Locks...............0.0...........0.0...........0.......n/a ..Deadlocks.by.Lock.Type..........per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ..Total.Deadlocks.....................0.0...........0.0...........0.......n/a ..Deadlock.Detection ....Deadlock.Searches.................0.0...........0.0...........0.......n/a ..Lock.Promotions ....Total.Lock.Promotions.............0.0...........0.0...........0.......n/a ..Lock.Timeouts.by.Lock.Type......per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ..Total.Timeouts......................0.0...........0.0...........0.......n/a =============================================================================== Data.Cache.Management --------------------- ..Cache.Statistics.Summary.(All.Caches) ..------------------------------------- ..................................per.sec......per.xact.......count..%.of.total .............................------------..------------..----------..---------- ....Cache.Search.Summary ......................................0.0...........0.0...........0.......n/a ....Cache.Turnover ......Buffers.Grabbed.................0.0...........0.0...........0.......n/a ....Cache.Strategy.Summary ......................................0.0...........0.0...........0.......n/a ....Large.I/O.Usage ......................................0.0...........0.0...........0.......n/a ....Large.I/O.Effectiveness ......Pages.by.Lrg.I/O.Cached.........0.0...........0.0...........0.......n/a ....Asynchronous.Prefetch.Activity ......................................0.0...........0.0...........0.......n/a ....Other.Asynchronous.Prefetch.Statistics ......APFs.Used.......................0.0...........0.0...........0.......n/a ......APF.Waits.for.I/O...............0.0...........0.0...........0.......n/a ......APF.Discards....................0.0...........0.0...........0.......n/a ....Dirty.Read.Behavior ......Page.Requests...................0.0...........0.0...........0.......n/a ------------------------------------------------------------------------------- ..Cache:.default.data.cache ..................................per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ....Spinlock.Contention...............n/a...........n/a.........n/a.......0.0.% ....Cache.Searches ......Total.Cache.Searches............0.0...........0.0...........0.......n/a ..-------------------------..------------..------------..---------- ....Total.Cache.Searches..............0.0...........0.0...........0 ....Pool.Turnover.....................0.0...........0.0...........0.......n/a ....Buffer.Wash.Behavior ......Statistics.Not.Available.-.No.Buffers.Entered.Wash.Section.Yet ....Cache.Strategy ......Statistics.Not.Available.-.No.Buffers.Displaced.Yet ....Large.I/O.Usage ......Total.Large.I/O.Requests........0.0...........0.0...........0.......n/a ....Large.I/O.Detail ......No.Large.Pool(s).In.This.Cache ....Dirty.Read.Behavior .......Page.Requests...............0.0...........0.0...........0.......n/a =============================================================================== Procedure.Cache.Management........per.sec......per.xact.......count..%.of.total ---------------------------..------------..------------..----------..---------- ..Procedure.Requests..................0.0...........0.0...........0.......n/a =============================================================================== Memory.Management.................per.sec......per.xact.......count..%.of.total ---------------------------..------------..------------..----------..---------- ..Pages.Allocated.....................0.1...........1.1..........37.......n/a ..Pages.Released......................0.1...........1.1..........37.......n/a =============================================================================== Recovery.Management ------------------- ..Checkpoints.....................per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ..Total.Checkpoints...................0.0...........0.0...........0.......n/a =============================================================================== Disk.I/O.Management ------------------- ..Max.Outstanding.I/Os............per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ....Server............................n/a...........n/a...........0.......n/a ....Engine.0..........................n/a...........n/a...........0.......n/a ..I/Os.Delayed.by ....Disk.I/O.Structures...............n/a...........n/a...........0.......n/a ....Server.Config.Limit...............n/a...........n/a...........0.......n/a ....Engine.Config.Limit...............n/a...........n/a...........0.......n/a ....Operating.System.Limit............n/a...........n/a...........0.......n/a ..Total.Requested.Disk.I/Os...........0.0...........0.0...........0 ..Completed.Disk.I/O's ....Total.Completed.I/Os..............0.0...........0.0...........0.......n/a ..-------------------------..------------..------------..---------- ..Total.Completed.I/Os................0.0...........0.0...........0 ..Device.Activity.Detail ..---------------------- ....No.Disk.I/O.in.Given.Sample.Period =============================================================================== Network.I/O.Management ---------------------- ..Total.Network.I/O.Requests..........0.0...........0.0...........0.......n/a ..Total.TDS.Packets.Received......per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ..Total.TDS.Packets.Rec'd.............0.0...........0.0...........0.......n/a ..Total.Bytes.Received............per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ..Total.Bytes.Rec'd...................0.0...........0.0...........0.......n/a ..----------------------------------------------------------------------------- ..Total.TDS.Packets.Sent..........per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ..Total.TDS.Packets.Sent..............0.0...........0.0...........0.......n/a ..Total.Bytes.Sent................per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ..Total.Bytes.Sent....................0.0...........0.0...........0.......n/a ===============================.End.of.Report.================================= ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 12:45 |
|
||
|
Как бороться с блокировками в ASE 12.5.0.3
|
|||
|---|---|---|---|
|
#18+
А ты во время загрузки sp_sysmon дергал? а то что-то не так как-то... А почему у тебя ASE'у только один процессор отведен? Если процов 2, то и работать оба должны. 8) sp_configure 'max online engines',2 sp_configure 'min online engines',2 HyperTreading включен? Если да, то sp_configure 'max online engines',4 sp_configure 'min online engines',3 После вышеописанного надо сервер перегружать. рейд аппаратный? IMHO, лучше из пяти дисков сделать следующее - четыре диска в 10 raid, а 5-й - в hot spare (в горячую замену). Индексы не пробовал на #f_deal_temp создавать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 14:33 |
|
||
|
Как бороться с блокировками в ASE 12.5.0.3
|
|||
|---|---|---|---|
|
#18+
А это сразу после перезапуска сервера: sp_sysmon '00:10:00' go Но на первый взгляд работать лучше не стало :( DBCC.execution.completed..If.DBCC.printed.error.messages,.contact.a.user.with.System.Administrator.(SA).role. =============================================================================== ......Sybase.Adaptive.Server.Enterprise.System.Performance.Report =============================================================================== Server.Version:........Adaptive.Server.Enterprise/12.5.0.3/EBF.11449.ESD#4/P/NT Server.Name:...........Server.is.Unnamed Run.Date:..............May.17,.2004 Statistics.Cleared.at:.14:12:58 Statistics.Sampled.at:.14:22:58 Sample.Interval:.......00:10:00 =============================================================================== Kernel.Utilization ------------------ ..Your.Runnable.Process.Search.Count.is.set.to.2000 ..and.I/O.Polling.Process.Count.is.set.to.10 ..Engine.Busy.Utilization........CPU.Busy...I/O.Busy.......Idle ..------------------------.......--------...--------...-------- ....Engine.0........................1.5.%.....80.2.%.....18.3.% ....Engine.1........................3.2.%......4.8.%.....92.0.% ..------------------------.......--------...--------...-------- ..Summary...........Total...........4.7.%.....85.0.%....110.3.% ..................Average...........2.4.%.....42.5.%.....55.1.% ..CPU.Yields.by.Engine............per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ....Engine.0..........................6.2...........4.4........3716......17.2.% ....Engine.1.........................29.8..........21.1.......17874......82.8.% ..-------------------------..------------..------------..---------- ..Total.CPU.Yields...................36.0..........25.5.......21590 ..Network.Checks ....Non-Blocking.................618336.1......438536.3...371001683.....100.0.% ....Blocking.........................71.6..........50.8.......42982.......0.0.% ..-------------------------..------------..------------..---------- ..Total.Network.I/O.Checks.......618407.8......438587.1...371044665 ..Avg.Net.I/Os.per.Check..............n/a...........n/a.....0.00003.......n/a ..Disk.I/O.Checks ....Total.Disk.I/O.Checks........310912.9......220505.6...186547717.......n/a ....Checks.Returning.I/O.........307527.9......218104.9...184516719......98.9.% ....Avg.Disk.I/Os.Returned............n/a...........n/a.....0.00047.......n/a ..Tuning.Recommendations.for.Kernel.Utilization ..--------------------------------------------- ..-.Consider.decreasing.the.'runnable.process.search.count' ....configuration.parameter.if.you.require.the.CPU's.on ....the.machine.to.be.used.for.other.applications. =============================================================================== Worker.Process.Management ------------------------- ..................................per.sec......per.xact.......count..%.of.total .............................------------..------------..----------..---------- .Worker.Process.Requests ...Total.Requests.....................0.0...........0.0...........0.......n/a .Worker.Process.Usage ...Total.Used.........................0.0...........0.0...........0.......n/a ...Max.Ever.Used.During.Sample........0.0...........0.0...........0.......n/a .Memory.Requests.for.Worker.Processes ...Total.Requests.....................0.0...........0.0...........0.......n/a =============================================================================== Parallel.Query.Management ------------------------- ..Parallel.Query.Usage............per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ..Total.Parallel.Queries..............0.0...........0.0...........0.......n/a ..Merge.Lock.Requests.............per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ..Total.#.of.Requests.................0.0...........0.0...........0.......n/a ..Sort.Buffer.Waits...............per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ..Total.#.of.Waits....................0.0...........0.0...........0.......n/a =============================================================================== Task.Management...................per.sec......per.xact.......count..%.of.total ---------------------------..------------..------------..----------..---------- ..Connections.Opened..................0.0...........0.0...........8.......n/a ..Task.Context.Switches.by.Engine ....Engine.0.........................21.4..........15.2.......12867......42.9.% ....Engine.1.........................28.6..........20.3.......17146......57.1.% ..-------------------------..------------..------------..---------- ....Total.Task.Switches:.............50.0..........35.5.......30013 ..Task.Context.Switches.Due.To: ....Voluntary.Yields..................1.5...........1.0.........878.......2.9.% ....Cache.Search.Misses...............9.1...........6.4........5434......18.1.% ....System.Disk.Writes................0.1...........0.0..........35.......0.1.% ....I/O.Pacing.......................13.0...........9.2........7783......25.9.% ....Logical.Lock.Contention...........0.0...........0.0...........8.......0.0.% ....Address.Lock.Contention...........0.0...........0.0...........0.......0.0.% ....Latch.Contention..................0.0...........0.0...........1.......0.0.% ....Log.Semaphore.Contention..........0.3...........0.2.........151.......0.5.% ....PLC.Lock.Contention...............0.0...........0.0...........0.......0.0.% ....Group.Commit.Sleeps...............3.6...........2.6........2183.......7.3.% ....Last.Log.Page.Writes..............0.0...........0.0..........23.......0.1.% ....Modify.Conflicts..................0.2...........0.1.........118.......0.4.% ....I/O.Device.Contention.............0.0...........0.0...........0.......0.0.% ....Network.Packet.Received...........1.9...........1.4........1150.......3.8.% ....Network.Packet.Sent..............14.2..........10.1........8522......28.4.% ....Other.Causes......................6.2...........4.4........3727......12.4.% =============================================================================== Application.Management ---------------------- ..Application.Statistics.Summary.(All.Applications) ..------------------------------------------------- ..Priority.Changes................per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ....To.High.Priority..................0.3...........0.2.........166......13.9.% ....To.Medium.Priority................1.0...........0.7.........600......50.3.% ....To.Low.Priority...................0.7...........0.5.........427......35.8.% ..-------------------------..------------..------------..---------- ..Total.Priority.Changes..............2.0...........1.4........1193 ..Allotted.Slices.Exhausted.......per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ....High.Priority.....................0.0...........0.0...........0.......0.0.% ....Medium.Priority...................0.4...........0.3.........241.....100.0.% ....Low.Priority......................0.0...........0.0...........0.......0.0.% ..-------------------------..------------..------------..---------- ..Total.Slices.Exhausted..............0.4...........0.3.........241 ..Skipped.Tasks.By.Engine.........per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ..Total.Engine.Skips..................0.0...........0.0...........0.......n/a ..Engine.Scope.Changes................0.0...........0.0...........0.......n/a =============================================================================== ESP.Management....................per.sec......per.xact.......count..%.of.total ---------------------------..------------..------------..----------..---------- ..ESP.Requests........................0.0...........0.0...........0.......n/a =============================================================================== Housekeeper.Task.Activity ------------------------- ..................................per.sec......per.xact.......count..%.of.total .............................------------..------------..---------- Buffer.Cache.Washes ..Clean.............................26.3..........18.6.......15756......96.2.% ..Dirty..............................1.0...........0.7.........615.......3.8.% .............................------------..------------..---------- Total.Washes........................27.3..........19.4.......16371 Garbage.Collections..................0.4...........0.3.........238.......n/a Pages.Processed.in.GC................0.0...........0.0...........0.......n/a Statistics.Updates...................0.2...........0.1.........106.......n/a =============================================================================== Monitor.Access.to.Executing.SQL ------------------------------- ..................................per.sec......per.xact.......count..%.of.total .............................------------..------------..----------..---------- .Waits.on.Execution.Plans............0.0...........0.0...........0.......n/a .Number.of.SQL.Text.Overflows........0.0...........0.0...........0.......n/a .Maximum.SQL.Text.Requested..........n/a...........n/a...........0.......n/a ..(since.beginning.of.sample) =============================================================================== Transaction.Profile ------------------- ..Transaction.Summary.............per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ....Committed.Xacts...................1.4...........n/a.........846.....n/a ..Transaction.Detail..............per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ....Inserts ......APL.Heap.Table................188.0.........133.3......112794......98.2.% ......APL.Clustered.Table.............3.3...........2.4........2000.......1.7.% ......Data.Only.Lock.Table............0.1...........0.1..........85.......0.1.% ..-------------------------..------------..------------..----------..---------- ....Total.Rows.Inserted.............191.5.........135.8......114879......26.2.% ....Updates ......APL.Deferred...................35.6..........25.3.......21371.......7.1.% ......APL.Direct.In-place............23.0..........16.3.......13819.......4.6.% ......APL.Direct.Cheap..............441.9.........313.4......265141......88.3.% ......APL.Direct.Expensive............0.0...........0.0...........0.......0.0.% ......DOL.Deferred....................0.0...........0.0...........0.......0.0.% ......DOL.Direct......................0.0...........0.0...........0.......0.0.% ..-------------------------..------------..------------..----------..---------- ....Total.Rows.Updated..............500.6.........355.0......300331......68.4.% ....Data.Only.Locked.Updates ......Total.Rows.Updated..............0.0...........0.0...........0.......n/a ..-------------------------..------------..------------..----------..---------- ....Total.DOL.Rows.Updated............0.0...........0.0...........0.......0.0.% ....Deletes ......APL.Deferred....................8.2...........5.8........4942......20.9.% ......APL.Direct.....................31.0..........22.0.......18579......78.7.% ......DOL.............................0.1...........0.1..........83.......0.4.% ..-------------------------..------------..------------..----------..---------- ....Total.Rows.Deleted...............39.3..........27.9.......23604.......5.4.% ..=========================..============..============..========== ....Total.Rows.Affected.............731.4.........518.7......438814 =============================================================================== Transaction.Management ---------------------- ..ULC.Flushes.to.Xact.Log.........per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ....by.Full.ULC.....................166.4.........118.0.......99813......87.9.% ....by.End.Transaction................1.1...........0.8.........659.......0.6.% ....by.Change.of.Database.............0.0...........0.0...........5.......0.0.% ....by.Single.Log.Record.............21.4..........15.2.......12826......11.3.% ....by.Other..........................0.4...........0.3.........260.......0.2.% ..-------------------------..------------..------------..---------- ..Total.ULC.Flushes.................189.3.........134.2......113563 ..ULC.Log.Records..................1111.2.........788.1......666745.......n/a ..Max.ULC.Size.During.Sample..........n/a...........n/a........2048.......n/a ..ULC.Semaphore.Requests ....Granted........................2175.4........1542.9.....1305262.....100.0.% ....Waited............................0.0...........0.0...........0.......0.0.% ..-------------------------..------------..------------..---------- ..Total.ULC.Semaphore.Req..........2175.4........1542.9.....1305262 ..Log.Semaphore.Requests ....Granted.........................225.0.........159.6......135023......99.9.% ....Waited............................0.3...........0.2.........151.......0.1.% ..-------------------------..------------..------------..---------- ..Total.Log.Semaphore.Req...........225.3.........159.8......135174 ..Transaction.Log.Writes............120.1..........85.2.......72049.......n/a ..Transaction.Log.Alloc.............187.6.........133.0......112554.......n/a ..Avg.#.Writes.per.Log.Page...........n/a...........n/a.....0.64013.......n/a ..Tuning.Recommendations.for.Transaction.Management ..------------------------------------------------- ..-.Consider.increasing.the.'user.log.cache.size' ....configuration.parameter. =============================================================================== Index.Management ---------------- ..Nonclustered.Maintenance........per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ....Ins/Upd.Requiring.Maint...........0.2...........0.1.........102.......n/a ......#.of.NC.Ndx.Maint...............0.2...........0.1.........102.......n/a ......Avg.NC.Ndx.Maint./.Op...........n/a...........n/a.....1.00000.......n/a ....Deletes.Requiring.Maint...........0.2...........0.1..........98.......n/a ......#.of.NC.Ndx.Maint...............0.2...........0.1..........98.......n/a ......Avg.NC.Ndx.Maint./.Op...........n/a...........n/a.....1.00000.......n/a ....RID.Upd.from.Clust.Split..........0.0...........0.0...........0.......n/a ......#.of.NC.Ndx.Maint...............0.0...........0.0...........0.......n/a ....Upd/Del.DOL.Req.Maint.............0.1...........0.1..........83.......n/a ......#.of.DOL.Ndx.Maint..............0.1...........0.1..........83.......n/a ......Avg.DOL.Ndx.Maint./.Op..........n/a...........n/a.....1.00000.......n/a ..Page.Splits.........................0.0...........0.0...........0.......n/a ..Page.Shrinks........................0.0...........0.0...........0.......n/a ..Index.Scans.....................per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ....Ascending.Scans.................866.1.........614.3......519680......99.4.% ....DOL.Ascending.Scans...............4.8...........3.4........2895.......0.6.% ....Descending.Scans..................0.3...........0.2.........195.......0.0.% ....DOL.Descending.Scans..............0.0...........0.0...........0.......0.0.% .............................------------..------------..---------- ....Total.Scans.....................871.3.........617.9......522770 =============================================================================== Metadata.Cache.Management ------------------------- ..Metadata.Cache.Summary.........per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ..Open.Object.Usage ....Active............................n/a...........n/a.........197.......n/a ....Max.Ever.Used.Since.Boot..........n/a...........n/a.........197.......n/a ....Free..............................n/a...........n/a.........803.......n/a ....Reuse.Requests ......Succeeded.......................n/a...........n/a...........0.......n/a ......Failed..........................n/a...........n/a...........0.......n/a ..Open.Index.Usage ....Active............................n/a...........n/a.........313.......n/a ....Max.Ever.Used.Since.Boot..........n/a...........n/a.........313.......n/a ....Free..............................n/a...........n/a.........187.......n/a ....Reuse.Requests ......Succeeded.......................n/a...........n/a...........0.......n/a ......Failed..........................n/a...........n/a...........0.......n/a ..Open.Database.Usage ....Active............................n/a...........n/a...........7.......n/a ....Max.Ever.Used.Since.Boot..........n/a...........n/a...........7.......n/a ....Free..............................n/a...........n/a...........5.......n/a ....Reuse.Requests ......Succeeded.......................n/a...........n/a...........0.......n/a ......Failed..........................n/a...........n/a...........0.......n/a ..Object.Manager.Spinlock.Contention..n/a...........n/a.........n/a.......0.0.% ..Object.Spinlock.Contention..........n/a...........n/a.........n/a.......0.0.% ..Index.Spinlock.Contention...........n/a...........n/a.........n/a.......0.0.% ..Hash.Spinlock.Contention............n/a...........n/a.........n/a.......0.0.% =============================================================================== Lock.Management --------------- ..Lock.Summary....................per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ..Total.Lock.Requests..............4979.2........3531.4.....2987547.......n/a ..Avg.Lock.Contention.................0.0...........0.0...........8.......0.0.% ..Deadlock.Percentage.................0.0...........0.0...........0.......0.0.% ..Lock.Detail.....................per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ..Table.Lock.Hashtable ....Lookups..........................15.4..........10.9........9232.......n/a ....Avg.Chain.Length..................n/a...........n/a.....0.04528.......n/a ....Spinlock.Contention...............n/a...........n/a.........n/a.......0.0.% ..Exclusive.Table ....Granted...........................3.0...........2.1........1810......99.9.% ....Waited............................0.0...........0.0...........2.......0.1.% ..-------------------------..------------..------------..----------..---------- ..Total.EX-Table.Requests.............3.0...........2.1........1812.......0.1.% ..Shared.Table ....Granted...........................0.4...........0.3.........263.....100.0.% ....Waited............................0.0...........0.0...........0.......0.0.% ..-------------------------..------------..------------..----------..---------- ..Total.SH-Table.Requests.............0.4...........0.3.........263.......0.0.% ..Exclusive.Intent ....Granted...........................0.9...........0.6.........538......99.8.% ....Waited............................0.0...........0.0...........1.......0.2.% ..-------------------------..------------..------------..----------..---------- ..Total.EX-Intent.Requests............0.9...........0.6.........539.......0.0.% ..Shared.Intent ....Granted..........................10.7...........7.6........6395.....100.0.% ....Waited............................0.0...........0.0...........0.......0.0.% ..-------------------------..------------..------------..----------..---------- ..Total.SH-Intent.Requests...........10.7...........7.6........6395.......0.2.% ..Page.&.Row.Lock.HashTable ....Lookups........................3273.8........2321.8.....1964271.......n/a ....Avg.Chain.Length..................n/a...........n/a.....0.00021.......n/a ....Spinlock.Contention...............n/a...........n/a.........n/a.......0.0.% ..Exclusive.Page ....Granted...........................1.5...........1.1.........898......99.9.% ....Waited............................0.0...........0.0...........1.......0.1.% ..-------------------------..------------..------------..----------..---------- ..Total.EX-Page.Requests..............1.5...........1.1.........899.......0.0.% ..Update.Page ....Granted...........................1.1...........0.8.........677.....100.0.% ....Waited............................0.0...........0.0...........0.......0.0.% ..-------------------------..------------..------------..----------..---------- ..Total.UP-Page.Requests..............1.1...........0.8.........677.......0.0.% ..Shared.Page ....Granted........................3197.8........2268.0.....1918691.....100.0.% ....Waited............................0.0...........0.0...........4.......0.0.% ..-------------------------..------------..------------..----------..---------- ..Total.SH-Page.Requests...........3197.8........2268.0.....1918695......64.2.% ..Exclusive.Row ....Granted...........................0.3...........0.2.........194.....100.0.% ....Waited............................0.0...........0.0...........0.......0.0.% ..-------------------------..------------..------------..----------..---------- ..Total.EX-Row.Requests...............0.3...........0.2.........194.......0.0.% ..Update.Row ....Granted...........................0.1...........0.1..........83.....100.0.% ....Waited............................0.0...........0.0...........0.......0.0.% ..-------------------------..------------..------------..----------..---------- ..Total.UP-Row.Requests...............0.1...........0.1..........83.......0.0.% ..Shared.Row ....Granted..........................65.3..........46.3.......39154.....100.0.% ....Waited............................0.0...........0.0...........0.......0.0.% ..-------------------------..------------..------------..----------..---------- ..Total.SH-Row.Requests..............65.3..........46.3.......39154.......1.3.% ..Next-Key ....Total.Next-Key.Requests...........0.0...........0.0...........0.......n/a ..Address.Lock.Hashtable ....Lookups........................1698.1........1204.3.....1018837.......n/a ....Avg.Chain.Length..................n/a...........n/a.....0.00004.......n/a ....Spinlock.Contention...............n/a...........n/a.........n/a.......0.0.% ..Exclusive.Address ....Granted...........................0.6...........0.4.........335.....100.0.% ....Waited............................0.0...........0.0...........0.......0.0.% ..-------------------------..------------..------------..----------..---------- ..Total.EX-Address.Requests...........0.6...........0.4.........335.......0.0.% ..Shared.Address ....Granted........................1697.5........1203.9.....1018501.....100.0.% ....Waited............................0.0...........0.0...........0.......0.0.% ..-------------------------..------------..------------..----------..---------- ..Total.SH-Address.Requests........1697.5........1203.9.....1018501......34.1.% ..Last.Page.Locks.on.Heaps ....Granted.........................188.0.........133.3......112794.....100.0.% ....Waited............................0.0...........0.0...........0.......0.0.% ..-------------------------..------------..------------..----------..---------- ..Total.Last.Pg.Locks...............188.0.........133.3......112794.....100.0.% ..Deadlocks.by.Lock.Type..........per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ..Total.Deadlocks.....................0.0...........0.0...........0.......n/a ..Deadlock.Detection ....Deadlock.Searches.................0.0...........0.0...........4.......n/a ....Searches.Skipped..................0.0...........0.0...........0.......0.0.% ....Avg.Deadlocks.per.Search..........n/a...........n/a.....0.00000.......n/a ..Lock.Promotions ....Total.Lock.Promotions.............0.0...........0.0...........0.......n/a ..Lock.Timeouts.by.Lock.Type......per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ..Total.Timeouts......................0.0...........0.0...........0.......n/a ..Tuning.Recommendations.for.Lock.Management ..------------------------------------------ ..-.Consider.increasing.the.'deadlock.checking.period'.parameter ....by.50.ms. =============================================================================== Data.Cache.Management --------------------- ..Cache.Statistics.Summary.(All.Caches) ..------------------------------------- ..................................per.sec......per.xact.......count..%.of.total .............................------------..------------..----------..---------- ....Cache.Search.Summary ......Total.Cache.Hits.............5392.9........3824.7.....3235735......95.9.% ......Total.Cache.Misses............228.7.........162.2......137243.......4.1.% ..-------------------------..------------..------------..---------- ....Total.Cache.Searches...........5621.6........3987.0.....3372978 ....Cache.Turnover ......Buffers.Grabbed................17.6..........12.5.......10547.......n/a ......Buffers.Grabbed.Dirty...........0.0...........0.0...........0.......0.0.% ....Cache.Strategy.Summary ......Cached.(LRU).Buffers.........5475.8........3883.5.....3285466.....100.0.% ......Discarded.(MRU).Buffers.........0.0...........0.0...........0.......0.0.% ....Large.I/O.Usage ......Large.I/Os.Performed............0.4...........0.3.........256.....100.0.% ......Large.I/Os.Denied.due.to ......Pool.<.Prefetch.Size............0.0...........0.0...........0.......0.0.% ..-------------------------..------------..------------..---------- ....Total.Large.I/O.Requests..........0.4...........0.3.........256 ....Large.I/O.Effectiveness ......Pages.by.Lrg.I/O.Cached.........3.4...........2.4........2048.......n/a ......Pages.by.Lrg.I/O.Used...........0.0...........0.0...........0.......0.0.% ....Asynchronous.Prefetch.Activity ......APFs.Issued.....................8.1...........5.7........4857......11.0.% ......APFs.Denied.Due.To ........APF.I/O.Overloads.............0.0...........0.0...........0.......0.0.% ........APF.Limit.Overloads...........0.0...........0.0...........0.......0.0.% ........APF.Reused.Overloads..........0.0...........0.0...........0.......0.0.% ......APF.Buffers.Found.in.Cache ........With.Spinlock.Held............0.0...........0.0...........0.......0.0.% ........W/o.Spinlock.Held............65.5..........46.5.......39325......89.0.% ..-------------------------..------------..------------..---------- ....Total.APFs.Requested.............73.6..........52.2.......44182 ....Other.Asynchronous.Prefetch.Statistics ......APFs.Used.......................7.7...........5.5........4642.......n/a ......APF.Waits.for.I/O...............5.8...........4.1........3453.......n/a ......APF.Discards....................0.0...........0.0...........0.......n/a ....Dirty.Read.Behavior ......Page.Requests...................0.0...........0.0...........0.......n/a ------------------------------------------------------------------------------- ..Cache:.default.data.cache ..................................per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ....Spinlock.Contention...............n/a...........n/a.........n/a.......0.0.% ....Utilization.......................n/a...........n/a.........n/a......76.4.% ....Cache.Searches ......Cache.Hits...................4280.4........3035.8.....2568251......99.6.% .........Found.in.Wash................5.3...........3.8........3199.......0.1.% ......Cache.Misses...................16.4..........11.6........9811.......0.4.% ..-------------------------..------------..------------..---------- ....Total.Cache.Searches...........4296.8........3047.4.....2578062 ....Pool.Turnover ......2..Kb.Pool ..........LRU.Buffer.Grab............16.3..........11.6........9784.....100.0.% ............Grabbed.Dirty.............0.0...........0.0...........0.......0.0.% ..-------------------------..------------..------------..---------- ....Total.Cache.Turnover.............16.3..........11.6........9784 ....Buffer.Wash.Behavior ......Statistics.Not.Available.-.No.Buffers.Entered.Wash.Section.Yet ....Cache.Strategy ......Cached.(LRU).Buffers.........4294.4........3045.7.....2576642.....100.0.% ......Discarded.(MRU).Buffers.........0.0...........0.0...........0.......0.0.% ....Large.I/O.Usage ......Total.Large.I/O.Requests........0.0...........0.0...........0.......n/a ....Large.I/O.Detail ......No.Large.Pool(s).In.This.Cache ....Dirty.Read.Behavior .......Page.Requests...............0.0...........0.0...........0.......n/a ....Tuning.Recommendations.for.Data.cache.:.default.data.cache ....------------------------------------- ....-.Consider.using.'relaxed.LRU.replacement.policy' ......for.this.cache. ....-.Consider.adding.a.large.I/O.pool.for.this.cache. ------------------------------------------------------------------------------- ..Cache:.tempdb_cache ..................................per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ....Spinlock.Contention...............n/a...........n/a.........n/a.......0.0.% ....Utilization.......................n/a...........n/a.........n/a......23.6.% ....Cache.Searches ......Cache.Hits...................1112.5.........789.0......667484......84.0.% .........Found.in.Wash...............12.1...........8.6........7258.......1.1.% ......Cache.Misses..................212.4.........150.6......127432......16.0.% ..-------------------------..------------..------------..---------- ....Total.Cache.Searches...........1324.9.........939.6......794916 ....Pool.Turnover ......2..Kb.Pool ..........LRU.Buffer.Grab.............0.8...........0.6.........507......66.4.% ............Grabbed.Dirty.............0.0...........0.0...........0.......0.0.% ......16.Kb.Pool ..........LRU.Buffer.Grab.............0.4...........0.3.........256......33.6.% ............Grabbed.Dirty.............0.0...........0.0...........0.......0.0.% ..-------------------------..------------..------------..---------- ....Total.Cache.Turnover..............1.3...........0.9.........763 ....Buffer.Wash.Behavior ......Statistics.Not.Available.-.No.Buffers.Entered.Wash.Section.Yet ....Cache.Strategy ......Cached.(LRU).Buffers.........1181.4.........837.9......708824.....100.0.% ......Discarded.(MRU).Buffers.........0.0...........0.0...........0.......0.0.% ....Large.I/O.Usage ......Large.I/Os.Performed............0.4...........0.3.........256.....100.0.% ......Large.I/Os.Denied.due.to ......Pool.<.Prefetch.Size............0.0...........0.0...........0.......0.0.% ..-------------------------..------------..------------..---------- ....Total.Large.I/O.Requests..........0.4...........0.3.........256 ....Large.I/O.Detail .....16..Kb.Pool ........Pages.Cached..................3.4...........2.4........2048.......n/a ........Pages.Used....................0.0...........0.0...........0.......0.0.% ....Dirty.Read.Behavior .......Page.Requests...............0.0...........0.0...........0.......n/a =============================================================================== Procedure.Cache.Management........per.sec......per.xact.......count..%.of.total ---------------------------..------------..------------..----------..---------- ..Procedure.Requests..................0.6...........0.4.........336.......n/a ..Procedure.Reads.from.Disk...........0.1...........0.1..........80......23.8.% ..Procedure.Writes.to.Disk............0.0...........0.0..........17.......5.1.% ..Procedure.Removals..................0.1...........0.1..........87.......n/a ..Procedure.Recompilations............0.0...........0.0...........4.......n/a ..Recompilations.Requests: ....Execution.Phase...................0.0...........0.0...........4.....100.0.% ....Compilation.Phase.................0.0...........0.0...........0.......0.0.% ....Execute.Cursor.Execution..........0.0...........0.0...........0.......0.0.% ....Redefinition.Phase................0.0...........0.0...........0.......0.0.% ..Recompilation.Reasons: ....Table.Missing.....................0.0...........0.0...........0.......n/a ....Temporary.Table.Missing...........0.0...........0.0...........0.......n/a ....Schema.Change.....................0.0...........0.0...........4.......n/a ....Index.Change......................0.0...........0.0...........0.......n/a ....Isolation.Level.Change............0.0...........0.0...........0.......n/a ....Permissions.Change................0.0...........0.0...........0.......n/a ....Cursor.Permissions.Change.........0.0...........0.0...........0.......n/a ..Tuning.Recommendations.for.Procedure.cache.management ..----------------------------------------------------- ..-.Consider.increasing.the.'procedure.cache.size' ....configuration.parameter. =============================================================================== Memory.Management.................per.sec......per.xact.......count..%.of.total ---------------------------..------------..------------..----------..---------- ..Pages.Allocated.....................0.5...........0.4.........298.......n/a ..Pages.Released......................0.5...........0.4.........297.......n/a =============================================================================== Recovery.Management ------------------- ..Checkpoints.....................per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ....#.of.Normal.Checkpoints...........0.0...........0.0...........3.....100.0.% ....#.of.Free.Checkpoints.............0.0...........0.0...........0.......0.0.% ..-------------------------..------------..------------..---------- ..Total.Checkpoints...................0.0...........0.0...........3 ..Avg.Time.per.Normal.Chkpt.......0.00000.seconds =============================================================================== Disk.I/O.Management ------------------- ..Max.Outstanding.I/Os............per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ....Server............................n/a...........n/a.........111.......n/a ....Engine.0..........................n/a...........n/a..........49.......n/a ....Engine.1..........................n/a...........n/a.........111.......n/a ..I/Os.Delayed.by ....Disk.I/O.Structures...............n/a...........n/a...........0.......n/a ....Server.Config.Limit...............n/a...........n/a...........0.......n/a ....Engine.Config.Limit...............n/a...........n/a...........0.......n/a ....Operating.System.Limit............n/a...........n/a...........0.......n/a ..Total.Requested.Disk.I/Os.........143.9.........102.0.......86327 ..Completed.Disk.I/O's ....Engine.0........................125.5..........89.0.......75272......87.2.% ....Engine.1.........................18.4..........13.1.......11054......12.8.% ..-------------------------..------------..------------..---------- ..Total.Completed.I/Os..............143.9.........102.0.......86326 ..Device.Activity.Detail ..---------------------- ..Device: ....C:\sybase\data\akv_2003.dat ....akv_2003......................per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ..Total.I/Os..........................0.0...........0.0...........0.......n/a ..-------------------------..------------..------------..----------..---------- ..Total.I/Os..........................0.0...........0.0...........0.......0.0.% ..----------------------------------------------------------------------------- ..Device: ....C:\sybase\data\akv_2003.log ....akv_2003_log..................per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ....Reads ......APF.............................0.0...........0.0...........0.......0.0.% ......Non-APF.........................0.0...........0.0...........1.....100.0.% ....Writes............................0.0...........0.0...........0.......0.0.% ..-------------------------..------------..------------..----------..---------- ..Total.I/Os..........................0.0...........0.0...........1.......0.0.% ..----------------------------------------------------------------------------- ..Device: ....C:\sybase\data\akv_2004.dat ....akv_2004......................per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ....Reads ......APF.............................8.1...........5.7........4857......50.0.% ......Non-APF.........................8.1...........5.7........4832......49.8.% ....Writes............................0.0...........0.0..........17.......0.2.% ..-------------------------..------------..------------..----------..---------- ..Total.I/Os.........................16.2..........11.5........9706......11.2.% ..----------------------------------------------------------------------------- ..Device: ....C:\sybase\data\akv_2004.log ....akv_2004_log..................per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ....Reads ......APF.............................0.0...........0.0...........0.......0.0.% ......Non-APF.........................0.0...........0.0...........5......23.8.% ....Writes............................0.0...........0.0..........16......76.2.% ..-------------------------..------------..------------..----------..---------- ..Total.I/Os..........................0.0...........0.0..........21.......0.0.% ..----------------------------------------------------------------------------- ..Device: ....C:\sybase\data\temp_db.dat ....temp_db.......................per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ....Reads ......APF.............................0.0...........0.0...........0.......0.0.% ......Non-APF.........................0.1...........0.0..........33.......1.0.% ....Writes............................5.5...........3.9........3272......99.0.% ..-------------------------..------------..------------..----------..---------- ..Total.I/Os..........................5.5...........3.9........3305.......3.8.% ..----------------------------------------------------------------------------- ..Device: ....C:\sybase\data\temp_db.log ....temp_db_log...................per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ....Reads ......APF.............................0.0...........0.0...........0.......0.0.% ......Non-APF.........................0.7...........0.5.........439.......0.6.% ....Writes..........................119.6..........84.8.......71732......99.4.% ..-------------------------..------------..------------..----------..---------- ..Total.I/Os........................120.3..........85.3.......72171......83.6.% ..----------------------------------------------------------------------------- ..Device: ....C:\sybase\data\temp_db_log.log ....tempdb_lg.....................per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ..Total.I/Os..........................0.0...........0.0...........0.......n/a ..-------------------------..------------..------------..----------..---------- ..Total.I/Os..........................0.0...........0.0...........0.......0.0.% ..----------------------------------------------------------------------------- ..Device: ....C:\sybase\data\test_db.dat ....test_db.......................per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ..Total.I/Os..........................0.0...........0.0...........0.......n/a ..-------------------------..------------..------------..----------..---------- ..Total.I/Os..........................0.0...........0.0...........0.......0.0.% ..----------------------------------------------------------------------------- ..Device: ....C:\sybase\data\test_db.log ....test_log......................per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ..Total.I/Os..........................0.0...........0.0...........0.......n/a ..-------------------------..------------..------------..----------..---------- ..Total.I/Os..........................0.0...........0.0...........0.......0.0.% ..----------------------------------------------------------------------------- ..Device: ....c:\sybase\data\master.dat ....master........................per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ....Reads ......APF.............................0.0...........0.0...........0.......0.0.% ......Non-APF.........................0.1...........0.1..........51.......4.9.% ....Writes............................1.7...........1.2.........991......95.1.% ..-------------------------..------------..------------..----------..---------- ..Total.I/Os..........................1.7...........1.2........1042.......1.2.% ..----------------------------------------------------------------------------- ..Device: ....c:\sybase\data\sybprocs.dat ....sysprocsdev...................per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ....Reads ......APF.............................0.0...........0.0...........0.......0.0.% ......Non-APF.........................0.1...........0.1..........73......90.1.% ....Writes............................0.0...........0.0...........8.......9.9.% ..-------------------------..------------..------------..----------..---------- ..Total.I/Os..........................0.1...........0.1..........81.......0.1.% ..----------------------------------------------------------------------------- =============================================================================== Network.I/O.Management ---------------------- ..Total.Network.I/O.Requests.........16.1..........11.4........9672.......n/a ....Network.I/Os.Delayed..............0.0...........0.0...........0.......0.0.% ..Total.TDS.Packets.Received......per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ....Engine.0..........................0.2...........0.1.........110.......9.6.% ....Engine.1..........................1.7...........1.2........1040......90.4.% ..-------------------------..------------..------------..---------- ..Total.TDS.Packets.Rec'd.............1.9...........1.4........1150 ..Total.Bytes.Received............per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ....Engine.0.........................39.2..........27.8.......23527......31.3.% ....Engine.1.........................86.0..........61.0.......51620......68.7.% ..-------------------------..------------..------------..---------- ..Total.Bytes.Rec'd.................125.2..........88.8.......75147 ...Avg.Bytes.Rec'd.per.Packet..........n/a...........n/a..........65.......n/a ..----------------------------------------------------------------------------- ..Total.TDS.Packets.Sent..........per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ....Engine.0..........................1.0...........0.7.........600.......7.0.% ....Engine.1.........................13.2...........9.4........7922......93.0.% ..-------------------------..------------..------------..---------- ..Total.TDS.Packets.Sent.............14.2..........10.1........8522 ..Total.Bytes.Sent................per.sec......per.xact.......count..%.of.total ..-------------------------..------------..------------..----------..---------- ....Engine.0.......................1094.6.........776.3......656769......16.7.% ....Engine.1.......................5443.4........3860.6.....3266060......83.3.% ..-------------------------..------------..------------..---------- ..Total.Bytes.Sent.................6538.0........4636.9.....3922829 ..Avg.Bytes.Sent.per.Packet...........n/a...........n/a.........460.......n/a ===============================.End.of.Report.================================= ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 14:33 |
|
||
|
Как бороться с блокировками в ASE 12.5.0.3
|
|||
|---|---|---|---|
|
#18+
sp_configure.'max.online.engines' Parameter.Name.....Default.....Memory.Used.....Config.Value.....Run.Value.....Unit.....Type max.online.engines.......1........147...............2...............2.....number.......static На.такую.установку.выдает.ошибку sp_configure.'max.online.engines',4 go Parameter.Name.....Default.....Memory.Used.....Config.Value.....Run.Value.....Unit.....Type max.online.engines...........................1.............147...............4...............2.....number...................static Configuration.option.changed..Since.the.option.is.static,.Adaptive.Server.must.be.rebooted.in.order.for.the.change.to.take.effect............................... Changing.the.value.of.'max.online.engines'.to.'4'.increases.the.amount.of.memory.ASE.uses.by.166.K. sp_configure.'min.online.engines',3 go 2.....763..........No.matching.configuration.options...Here.is.a.listing.of.groups: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 14:50 |
|
||
|
Как бороться с блокировками в ASE 12.5.0.3
|
|||
|---|---|---|---|
|
#18+
Код: plaintext Нужно отлаживаться на процедуре, на это нужно время, а на все подряд ставить индексы нет смысла. Но вечером этим займусь. И как включить и где посмотреть HyperTreading? После всего проделанного, сервер работать стал медленнее. Я вернул sp_configure 'max online engines',2 перезапустил, но ситуация не улучшилась Вчера сложный запрос работал 35 сикунд, сейчас более 2х минут :( Лучшее враг хорошего.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 15:22 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=32519251&tid=2014062]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
157ms |
get topic data: |
8ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
| others: | 10ms |
| total: | 272ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...