1С 7.7 и SQL 2005 (ошибка блокировки открытия базы данных)

NatalySt

Помогите, пжалуста!На терминальном сервере работает 1с 7.7 (7.70.027) на sql 2005 (Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86) Oct 14 2005 00:33:37 Copyright (c) 1988-2005 Microsoft Corporation Standard Edition on Windows NT 5.2 (Build 3790: Service Pack 2). Как только какой-нибудь пользователь запускает массовое проведение документов, другие пользователи не могут уже делать какие-либо изменения. Выдается ошибка "При выполнении транзакции произошла ошибка SQL State: NYT00 Native: 0 Message: MS ODBC SQL Server Driver Время ожидания истекло"Те пользователи, которые пытаются залогиниться в базу в это время, вообще не могут зайти. Запрашивается логин и пароль, а на этапе установки соединения с сервером базы данных выдается ошибка "Ошибка блокировки открытия базы данных"
24 ответа

NatalySt

Время ожидания - это настройка клиента. А что, что нехватает времени при большой нагрузке на сервер - так это "в порядке вещей".


NatalySt

а что-нибудь сделать с этим можно?и то, что другие не могут войти - это тоже "в порядке вещей"?


NatalySt

а что-нибудь сделать с этим можно?и то, что другие не могут войти - это тоже "в порядке вещей"?
Делать что-то придется с теми запросами, что 1С выполняет "массовом проведении документов"


NatalySt

а может кто0то монопольно засел?


NatalySt

а может кто0то монопольно засел?
С "монопольно засел" было бы соответствующее сообщение об ошибке.


NatalySt

а можно для чайника объяснить, что можно сделать с запросами?и получается, что 2000 sql нас не спасет (а то во франчевой фирме нам сказали, что такие глюки у нас именно из-за 2005 sql)


NatalySt

а можно для чайника объяснить, что можно сделать с запросами?
Самое печальное, что именно с запросами - ничего.
и получается, что 2000 sql нас не спасет (а то во франчевой фирме нам сказали, что такие глюки у нас именно из-за 2005 sql)
Естественно, виноват SQL Server, а не конфигурасты, которые сконфигурили конфигурацию (сорри) для работы с ним.


NatalySt

так что никак нельзя решить эту проблему? хотя бы, чтобы пользователи могли заходить в базу???


NatalySt

так что никак нельзя решить эту проблему? хотя бы, чтобы пользователи могли заходить в базу???
Давайте попробуем законнектиться к серверу и бд когда в ней перепроводят документы из студии, например, вместо 1С.


NatalySt

угу. 1с 7.7...насколько помню(2 года назад закончилась 1с в моей жизни) это реакция на заблокированность таблицы Журналы.решение проблемы - чисто организационное - найти ту тварь которая запускает массовую проводку в рабочее время и уничтожить :) Главбуху обьяснить что делать такое надо в обед или после 6ти(или когда там у вас...)кстати - та же ошибка - сигнал о том что ктото вылетел или завис в 1с при проведении - решение - ровно такоеже


NatalySt

да - забыл - решение - искать блокирующую транзакцию через ActivityMonitor и убивать-убивать....


NatalySt

угу. 1с 7.7...насколько помню(2 года назад закончилась 1с в моей жизни) это реакция на заблокированность таблицы Журналы.решение проблемы - чисто организационное - найти ту тварь которая запускает массовую проводку в рабочее время и уничтожить :) Главбуху обьяснить что делать такое надо в обед или после 6ти(или когда там у вас...)кстати - та же ошибка - сигнал о том что ктото вылетел или завис в 1с при проведении - решение - ровно такоеже
да, точно блокируется таблица Журналыно ведь я правильно понимаю, что 2000 sql здесь не поможет (и то, что сказали нам наши франчи - чистая отмаза)


NatalySt

но ведь я правильно понимаю, что 2000 sql здесь не поможет (и то, что сказали нам наши франчи - чистая отмаза)
Ага.


NatalySt

а можно ли как-нибудь ускорить выполнение процедуры Операция.Записать() (в sql варианте), а то при проведении документа "Формирование записей книги продаж" (документ на 5300 строк) запись операции занимает 80% времени


NatalySt

а можно ли как-нибудь ускорить выполнение процедуры Операция.Записать() (в sql варианте), а то при проведении документа "Формирование записей книги продаж" (документ на 5300 строк) запись операции занимает 80% времени
Если ваш вопрос о наличии у сервера кнопочки "Работать быстро", то такой кнопки нет.Оптимизация начинается с поиска узкого места. Если узким местом является запрос(ы), то его придется переписать.


NatalySt

Оптимизация начинается с поиска узкого места. Если узким местом является запрос(ы), то его придется переписать.
Узким местом является запись операции - вызов процедуры Операция.Записать() после формирования всех проводок


NatalySt

Узким местом является запись операции - вызов процедуры Операция.Записать() после формирования всех проводок
Только вот Операция.Записать() - это не команда MSSQL. Нужно выяснять какие команды при этом отправляются серверу.


NatalySt

Нужно выяснять какие команды при этом отправляются серверу.
А как это можно выяснить?


NatalySt

А как это можно выяснить?
Использовать утилиту для трассировки - SQL Profiler


NatalySt

Только вот Операция.Записать() - это не команда MSSQL. Нужно выяснять какие команды при этом отправляются серверу.
а что в этом случае придется переписывать? хранимые процедуры?


NatalySt

а что в этом случае придется переписывать? хранимые процедуры?
Сначала ищется узкое место. Потом - метод его устранения. А не наоборот.


NatalySt

а что в этом случае придется переписывать? хранимые процедуры?
Где Вы их там увидели?! Ничего у Вас переписывать не выйдет. Не можете Вы с стандартной 1С контроллировать и управлять кодом, который отсылается на сервер в резултате вызовов методов "птичьего языка" 1С.


NatalySt

а можно ли как-нибудь ускорить выполнение процедуры Операция.Записать() (в sql варианте), а то при проведении документа "Формирование записей книги продаж" (документ на 5300 строк) запись операции занимает 80% времени
а думаете документ на 5300 строк записать легко (это не 5300 строк а гдето тысяч 15-20 строк в табилцах вашей базы)??можно ускорить. легко причом. купить крутое железо, когда его станет мало - еще более крутое железо, когда ваш сервер попадет в топ100 - понять что железом тут не спасешся :)Вариант 1 - я вам его уже писал. Организационно разнести обычную работу и тяжелые операции. выполнять тяжелые транзакции монопольно. выполнять их на сервере.Вариант 2 - слыхал что в 1С 8й серии блокируется не вся таблица, а только строка (достижение, ага). но точно сказать не могу - не работал.


NatalySt

Давайте попробуем законнектиться к серверу и бд когда в ней перепроводят документы из студии, например, вместо 1С.
из студии вроде коннектится