|
15.05.2008, 12:24 | #1 |
Участник
|
Добрый День! Подскажите, формирую отчет на базе хранимой процедуры SQL
имеем SQL Server 2005, Nav4 ADOConnection.Open('Provider=SQLOLEDB.1;Persist Security Info=False;User ID=MyUser; Password=a;Initial Catalog=mybase;Data Source=myserver'; SQL=' exec mybase.selectvalue'; В хранимой процедуре mybase.selectvalue выполняется выбока из [Value entry] + left join нескольких таблиц ADORecordset.Open(SQL,ADOConnection,3,3,-1); Сам запрос выполняется несколько минут. Но после открытия ADORecordset блокируется таблица [Value Entry], следовательно пользователи не могут учесть заказ пока формирую отчет. Подскажите, как можно с этим бороться? Я думал, что уж если используешь выборку , без всяких update, то проблем быть не должно с блокировками... |
|
15.05.2008, 15:00 | #2 |
Участник
|
Цитата:
Сообщение от andtorino
Добрый День! Подскажите, формирую отчет на базе хранимой процедуры SQL
имеем SQL Server 2005, Nav4 ADOConnection.Open('Provider=SQLOLEDB.1;Persist Security Info=False;User ID=MyUser; Password=a;Initial Catalog=mybase;Data Source=myserver'; SQL=' exec mybase.selectvalue'; В хранимой процедуре mybase.selectvalue выполняется выбока из [Value entry] + left join нескольких таблиц ADORecordset.Open(SQL,ADOConnection,3,3,-1); Сам запрос выполняется несколько минут. Но после открытия ADORecordset блокируется таблица [Value Entry], следовательно пользователи не могут учесть заказ пока формирую отчет. Подскажите, как можно с этим бороться? Я думал, что уж если используешь выборку , без всяких update, то проблем быть не должно с блокировками... Ну а если что-то более корректное - пробуй оптимизировать стредвами 2005 (если знаешь как - собвери статистику и вперед..) |
|
15.05.2008, 15:05 | #3 |
Участник
|
|
|
19.05.2008, 09:31 | #4 |
Участник
|
Цитата:
Сообщение от msdn
adLockBatchOptimistic (4) - Indicates optimistic batch updates. Required for batch update mode.
adLockOptimistic (3) - Indicates optimistic locking, record by record. The provider uses optimistic locking, locking records only when you call the Update method. adLockPessimistic (2) - Indicates pessimistic locking, record by record. The provider does what is necessary to ensure successful editing of the records, usually by locking records at the data source immediately after editing. adLockReadOnly (1) - Indicates read-only records. You cannot alter the data. adLockUnspecified (-1) - Does not specify a type of lock. For clones, the clone is created with the same lock type as the original. |
|
19.05.2008, 11:30 | #5 |
Участник
|
Добавьте в хранимке:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED и ADORecordset.CursorLocation := 3; //на клиенте перед открытием рекордсета. |
|