Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите развести транзакции 1С и ADO!  [new]
Сергей84
Member

Откуда: Мурманск
Сообщений: 27465
Есть некая обработка в 1С загружающая данные из одной конфигурации 1С по средствам OLE и MSSQL в другую...
В начале ее работы я открываю транзакцию для ADO -> objConnection.BeginTrans() и в 1С -> НачатьТранзакцию()
после чего они пересекаются и отваливаются из-за окончания таймаута
поидее они пересекаться не должны, т.к. ADO работает с таблицами SC и др. моими таблицами, а сама 1С с таблицами DT, DH, _1SJOURN, но есть одно "НО", ADO должно иметь чтение из _1SJOURN.
так вот собственно, можно ли как-нибудь их развести путем понижения\повышения изоляции транзакции в ADO?
как в ADO с этим поковыряться?
18 окт 05, 18:14    [1981145]     Ответить | Цитировать Сообщить модератору
 Re: Помогите развести транзакции 1С и ADO!  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
автор
поидее они пересекаться не должны,

Profiler и/или sp_lock покажут Вам вашу "идею".
18 окт 05, 18:15    [1981152]     Ответить | Цитировать Сообщить модератору
 Re: Помогите развести транзакции 1С и ADO!  [new]
Сергей84
Member

Откуда: Мурманск
Сообщений: 27465
Гавриленко Сергей Алексеевич
автор
поидее они пересекаться не должны,

Profiler и/или sp_lock покажут Вам вашу "идею".

ясень пень, что идея неверна, раз затык идет :)
можно пожалуйста по сабжу про ADO?
18 окт 05, 18:21    [1981178]     Ответить | Цитировать Сообщить модератору
 Re: Помогите развести транзакции 1С и ADO!  [new]
serg08
Member

Откуда:
Сообщений: 141
ADO должно иметь чтение из _1SJOURN
Т.е. необходимо обеспечить грязное чтение.
можно пожалуйста по сабжу про ADO?
А нафига???
Обеспечение целостности данных сугубо личное дело
сервера. На другом уровне наверное возможно но , видимо, ненадёжно.

Почитать про 'Locking Hints' и их использовать в Select-ах!
18 окт 05, 18:38    [1981272]     Ответить | Цитировать Сообщить модератору
 Re: Помогите развести транзакции 1С и ADO!  [new]
Сергей84
Member

Откуда: Мурманск
Сообщений: 27465
serg08
Т.е. необходимо обеспечить грязное чтение.

Типа того, но транзакцию в ADO нужно открывать для того, чтобы в случае сбоя все откатывалось, а при открытии транзакции в ADO она цапается с 11С-ой транзакцией :(
serg08

А нафига???
Обеспечение целостности данных сугубо личное дело
сервера. На другом уровне наверное возможно но , видимо, ненадёжно.

транзакция в ADO отвечает за целостность справочников, а в 1С за целостность документов, но без 1-го мне не нужно 2-е и наоборот.
так что если понизить уровень транзакции ADO - ошибок целостности не будет, но мне нужно, что если ADO либо 1С выдало ошибку, чтоб обе транзакции откатывались.
serg08
Почитать про 'Locking Hints' и их использовать в Select-ах!

в селектах и так стоит NOLOCK.
18 окт 05, 18:48    [1981312]     Ответить | Цитировать Сообщить модератору
 Re: Помогите развести транзакции 1С и ADO!  [new]
Ivan TB
Member

Откуда:
Сообщений: 90
А если убрать хинты в процедурах _1sp_SCxxx_TLock и _1sp_SCxxx_TLockX?
18 окт 05, 19:00    [1981346]     Ответить | Цитировать Сообщить модератору
 Re: Помогите развести транзакции 1С и ADO!  [new]
serg08
Member

Откуда:
Сообщений: 141
транзакция в ADO отвечает за целостность справочников, а в 1С за целостность документов, но без 1-го мне не нужно 2-е и наоборот.
Вообще то, абсолютно надёжно, данная проблема может быть
решена через распределённые транзакции и например DTC.
Боюсь 1с это не поддерживает.
Поэтому , наверное, есть смысл одну транзакции поместить во вторую
и производить затем , после выполнения изменений, или два
Сommit или два rollback
19 окт 05, 10:26    [1982437]     Ответить | Цитировать Сообщить модератору
 Re: Помогите развести транзакции 1С и ADO!  [new]
Сергей84
Member

Откуда: Мурманск
Сообщений: 27465
2 Ivan TB
в том то и проблема, что менять механизм 1С нельзя :(
serg08
транзакция в ADO отвечает за целостность справочников, а в 1С за целостность документов, но без 1-го мне не нужно 2-е и наоборот.
Вообще то, абсолютно надёжно, данная проблема может быть
решена через распределённые транзакции и например DTC.
Боюсь 1с это не поддерживает.
Поэтому , наверное, есть смысл одну транзакции поместить во вторую
и производить затем , после выполнения изменений, или два
Сommit или два rollback

Как? 1С-ый механизм транзакций неуправляем и изменить его никак нельзя, нужно что-нибудь придумать с ADO, так чтобы он не мешал 1С, но при этом откатывался в случае, если транзакция 1С была прервана, т.е. сохранялась последовательность ввода данных...
19 окт 05, 10:34    [1982479]     Ответить | Цитировать Сообщить модератору
 Re: Помогите развести транзакции 1С и ADO!  [new]
Glory
Member

Откуда:
Сообщений: 104760
нужно что-нибудь придумать с ADO, так чтобы он не мешал 1С
Для начало неплохо бы выяснить чего ожидает ваша коннект из ADO.
А потом уже думать над тем, почему то, что он ожидает, заблокировано и каким образом эту блокировку можно обойти или изменить
19 окт 05, 10:46    [1982558]     Ответить | Цитировать Сообщить модератору
 Re: Помогите развести транзакции 1С и ADO!  [new]
Дамир1
Guest
2Сергей84 :
select-ы с хинтами nolock - это хорошо.
Ты SC апдейтишь в адошной транзакции?
Если апдейтишь - вот тут с 1С конфликт и наступает.
что могу посоветовать
1) уменьшай время транзакции в АДО, выноси код на сервер. Т.е. максимум писанины на TSQ, минимум на языке (бэйсик, 1с-бэйсик)
2) организуй АДО-транзакцию по типу проведения документа в 1С. Т.е. ТОЖЕ блокируй таблицу _1SJOURN - причём, первым оператором транзакции.
19 окт 05, 10:52    [1982582]     Ответить | Цитировать Сообщить модератору
 Re: Помогите развести транзакции 1С и ADO!  [new]
Ivan TB
Member

Откуда:
Сообщений: 90
Сергей84
2 Ivan TB
в том то и проблема, что менять механизм 1С нельзя :(

но можно восстановить его перед завершением ado транзакции.

другой вариант - обращаться к sc и своим таблицам через соединение самого 1С. правда, там odbc а не ado.
19 окт 05, 11:59    [1982989]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить