powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ERP и учетные системы [игнор отключен] [закрыт для гостей] / 1С 8.0 + MSSQL 2005 Express
4 сообщений из 4, страница 1 из 1
1С 8.0 + MSSQL 2005 Express
    #33924590
ShuraComp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите решить проблему, плиз :)

Используется следующая архитектура:
- Клиентские приложения 1С;
- 1ПК = Сервер 1С:Предприятия 8.0 + сервер терминалов;
- 1ПК = Microsoft SQL Server 2005 Express Edition.

Очень часто возникает следующая ошибка:
{Задача.новЗадача(47)}: Ошибка при вызове метода контекста (ВыполнитьЗадачу): Конфликт блокировок при выполнении транзакции: Microsoft OLE DB Provider for SQL Server: Transaction (Process ID 54) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction. HRESULT=80004005, SQLSTATE=40001, native=1205

Причем заблокированными оказываются в среднем 4 – 5 пользователей (работает при этом одновременно до 20 человек из них 10 – 15 в терминальном режиме). Отследить в отладчике не представляется возможным, т.к. данный процесс выполняется на сервере приложений (в 1С отладке подвластны только процессы, исполняемые на клиенте).

В Express Edition в свою очередь нет возможности использования SQL Profiler, чтобы отследить инструкции, которые сервер 1С шлет на SQL Server (в Express его просто нет, а попытка использовать от MSSQL 2000 вызывает ошибку).

Имеются интуитивные подозрения, что причина в том, что 1С при работе с необъектными сущностями – задачи относятся к ним – использует уровень изоляции транзакции: SERIALIZABLE, поэтому при выполнении задачи, а при этом происходит ее запись, блокируется диапазон записей, в которые попадают задачи других пользователей, также .

Еще одна сложность в том, что язык 1С не позволяет проверить заблокирована ли запись другими пользователями перед выполнением задачи, есть идея попытаться сделать это средствами T-SQL через ADO из 1С, либо триггерами или ХП, но пока нет идеи, как получить из 1С значение ключевого поля, для того чтобы обратиться к записи средствами SQL, а уникальное в таблице только оно:

_IDRRef
----------------------------------
0xB9EE00112F07A62A11DB2D8F90F85015

Я не прошу готового решения, но может, кто-либо решал уже что-нибудь подобное, благодарен буду за любую помощь по вопросу, включая ссылки по теме, идеи и т.п. А также, буду очень признателен помощи в вопросе того, каким образом можно отследить, что происходит на сервере SQL в этот момент, чтобы пользоваться не интуицией, а фактической информацией для анализа.

З.Ы. Предвосхищая критику, что вопрос не по теме форума: меня интересует мнение по этому вопросу именно специалистов по SQL.
...
Рейтинг: 0 / 0
1С 8.0 + MSSQL 2005 Express
    #34613169
Nick. Zhebrun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я тоже столкнулся с такой проблемой. Посмотри http://sqlprofiler.googlepages.com
...
Рейтинг: 0 / 0
1С 8.0 + MSSQL 2005 Express
    #34613904
vogenut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для исключения deadlock используй FOR UPDATE
...
Рейтинг: 0 / 0
1С 8.0 + MSSQL 2005 Express
    #34613969
mazzy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эх. нет у меня возможности перекинуть в специализированный подфорум по 1С.
А вопрос хорошо задан.

Закрыл ветку.
ShuraComp, пожалуйста, откройте ее в разделе про 1С.
http://sql.ru/forum/actualtopics.aspx?bid=63
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / ERP и учетные системы [игнор отключен] [закрыт для гостей] / 1С 8.0 + MSSQL 2005 Express
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]