В базе выполняется синхронизация со свободными таблицами dbf (запись, обновлние, удаление) с помощью "Advantage OLE DB Provider" v.11
СтрокаПодключения="Provider=Advantage OLE DB Provider; Data Source=D:\BASE; ServerType = ADS_LOCAL_SERVER; TableType = ADS_ANSI ; CharType = ADS_VFP; LockMode = ADS_COMPATIBLE_LOCKING";
Соединение = Новый COMОбъект("ADODB.Connection");
Соединение.Open(СтрокаПодключения);
СтрокаЗапрос = "SEL ECT * FR OM spz";
Command = Новый COMОбъект("ADODB.Command");
Command.ActiveConnection = Соединение;
Command.CommandText = СтрокаЗапрос;
RecordSet = Новый COMОбъект("ADODB.RecordSet");
RecordSet = Command.Execute();
//работа с RecordSet (помещение результата выполнения запроса в ТЗ)
RecordSet.close();
Соединение.close();
Показать
В версии 8.3.16.1026 все отрабатывало нормально, при переходе на версию 8.3.19.1150/1229 отрабатывает один раз либо ни разу, останавливаясь на строке "RecordSet = Command.Execute();".
При этом ошибки не выдает.
(10) установил параметр ServerType в значение "ADS_REMOTE_SERVER", только сервер Advantage, агент 1с и базы dbf должны быть на одном сервере
Если будут на разных временами на больших базах будут те-же проблемы
(5) Видимо поэтому и ошибки не выдаёт, потому что зависает...
А если запрос изменить на "SEL ECT * FR OM spzqqq" ? Если тоже зависает, может переустановить "Advantage OLE DB Provider" ?
(6) Не помогло
полностью удалили и поставили драйвер, пере удалением драйвера, остановил агент-сервер, после удалил драйвер, вновь поставил и запустил агент сервер
(9) новость конечно, собираемся переходить на эту версию на этой неделе - на тестах проблем вроде нет
Спорным решением является установка параметра ServerType в значение "ADS_REMOTE_SERVER"
Спорное оно т.к. сервер Advantage, агент сервер 1с и базы должны находится физически на одном сервере
Если Advantage с базами будет находится на одном сервере а агент 1с на другом возникают риски все тех же зависаний
А попробуйте выполнить какой-нибудь другой запрос, обычно такие зависания бывают когда система пытается на запрос ответить каким-то интерактивным действием и просто ждет реакции. Надо убедиться что проблема не в запросе для начала. Если проблема не в нем, то скорей всего в параметрах подключения. Вы сами пишите что запрос 1 раз выполняется, возможно вы открываете файл не только на чтение.
(10) установил параметр ServerType в значение "ADS_REMOTE_SERVER", только сервер Advantage, агент 1с и базы dbf должны быть на одном сервере
Если будут на разных временами на больших базах будут те-же проблемы
Написал в техподдержку 1с по поводу этой проблемы advantage, ответ ниже
Ответ 1с 0: "Посмотрели дамп. Платформа 1С запустила COM Advantage 11.10 и вызвала "ЗагрузкаНакладныхНаСервере". После чего компонента Advantage выдала диалоговое окно (DialogBox). Что именно она там спрашивает установить не удалось, данных по этой компоненте у нас нет. Но никаких диалоговых окон быть не должно, это же серверный процесс, именно из-за этого и "висит" соединение."
После этого попробовал на файловой версии на платформе 8.3.20.1710, при открытии соединения выводится ошибка, прикрепил к сообщению.
Ответ 1с 1:
"Вот, теперь есть ясность. В процессе работы компоненты произошла критическая ошибка (исключение).
При этом платформа 1С ожидает от неё ответ, но ответа соответственно нет. Поэтому с данной проблемой стоит обратиться к разработчику компоненты.
Как вариант, стоит проверить обрабатываемые компонентой данные. Возможно падение происходит именно из-за данных. Или попробуйте обновить (или понизить) версию Advantage."
В общем, ясности по-прежнему нет. Проверял так же на advantage 12, ошибки такие же
Всё равно не понятно почему тогда на платформе 8.3.18.1208 при той же версии advantage на том же сервере ошибок никаких нет
В общем, техподдержка не признала косяк в платформе, хотя я снял видео как одновременно работает на платформе 8.3.20.1789 при разрядности запуска х86 и не работает на той же платформе при разрядности запуска х64. Сообщили, что косяк у провайдера и отправили к разработчику advantage
(15) Драйвер провадера установлен и под х86 и под х64, естественно. На 8.3.18.1208 работает при любой разрядности, если установлен драйвер провайдера соответствующей разрядности