Произошла исключительная ситуация provider неопознанная ошибка

   MoGar

10.09.08 — 11:10

Есть Access 97

написал процедуру по подключению к базе

Попытка

мПодключение = Новый COMОбъект(«ADODB.Connection»);

Исключение

Сообщить(«Ошибка создания объекта ADODB.Connection: » + ОписаниеОшибки());

Результат = Ложь;

мПодключение = Неопределено

КонецПопытки;

мПодключение.ConnectionString = СтрокаСоединенияИБ();

Попытка

мПодключение.Open();

Исключение

Сообщить(«Ошибка подключения файла базы данных: » + ОписаниеОшибки());

Результат = Ложь;

мПодключение = Неопределено;

КонецПопытки;

СтрокаСоединения = «Provider=Microsoft.Jet.OLEDB.4.0;»+

«Data Source=» + СокрЛП(ИмяФайлаБазыДанных) + «;» +

«Persist Security Info=False;»+

«Jet OLEDB:System database=» + СокрЛП(ИмяФайлаНастроек) + «;»+

«Mode=ReadWrite;»+

«User ID=» + СокрЛП(Пользователь) + «;»

+ «Password=» + СокрЛП(Пароль) + «;»

+ «Jet OLEDB:Database Password=» + СокрЛП(ПарольБазы) + «;»;

При вызове мПодключение.Open(); выдает ошибку: Произошла исключительная ситуация (Provider): Разрушительный сбой

Что делаю не так или что надо поставить?

   MoGar

1 — 10.09.08 — 11:11

Пробывал

Provider=Microsoft.Jet.OLEDB.3.51 (сказали что 97-го надо этот использовать)

выдает такую ошибку

Произошла исключительная ситуация (ADODB.Connection): Не удается найти указанного поставщика. Вероятно, он установлен неправильно.

   774816

2 — 10.09.08 — 11:16

Driver={Microsoft Access Driver (*.mdb)};Dbq=C:mydatabase.mdb;Uid=Admin;Pwd=;

на будующее http://connectionstrings.com

   MoGar

3 — 10.09.08 — 11:22

(2) от туда же

Workgroup (system database) specifying username and password

   
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:mydatabase.mdb;Jet OLEDB:System Database=system.mdw;User ID=myUsername;Password=myPassword;

   774816

4 — 10.09.08 — 11:30

используй ODBC

«Driver={Microsoft Access Driver (*.mdb)};Dbq=C:mydatabase.mdb;Uid=Admin;Pwd=;»

   MoGar

5 — 10.09.08 — 11:34

Какую строку в Новый COMОбъект(«») надо писать для ODBC

   774816

6 — 10.09.08 — 11:41

в эту

СтрокаСоединения =»Driver={Microsoft Access Driver (*.mdb)};Dbq=C:mydatabase.mdb;Uid=Admin;Pwd=;»

строка соединения меняеться а объект тот же ADODB.Connection

   MoGar

7 — 10.09.08 — 11:43

Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Provider): Неопознанная ошибка

   774816

8 — 10.09.08 — 11:44

покажи код

   MoGar

9 — 10.09.08 — 11:51

мПодключение = Новый COMОбъект(«ADODB.Connection»);

мПодключение.ConnectionString = СтрокаСоединенияИБ();

мПодключение.Open();

СтрокаСоединенияИБ() — возвращает эту строку:

   СтрокаСоединения = «Driver={Microsoft Access Driver (*.mdb)};

       |Dbq=» + СокрЛП(ИмяФайлаБазыДанных) + «;

       |SystemDB=» + СокрЛП(ИмяФайлаНастроек) + «;

       |Uid=» + СокрЛП(Пользователь) + «;

       |Pwd=» + СокрЛП(Пароль) + «;»;

   774816

10 — 10.09.08 — 11:57

у тебя Workgroup? файл SystemDB=mydatabase.mdw есть?

   MoGar

11 — 10.09.08 — 12:00

System.mdw — есть

   MoGar

12 — 10.09.08 — 12:03

я создавал новую базу без *.mdw, к ней тоже не подключается

   Ashtray

13 — 10.09.08 — 12:04

DAO_Engine = CreateObject(«DAO.DBEngine.36»);
cn = DAO_Engine.OpenDatabase(КаталогИБ() + «EditElements.mdb»);

   Ashtray

14 — 10.09.08 — 12:07

+(13) с учетом (11)
DAO_Engine = CreateObject(«DAO.DBEngine.36»);
DAO_Engine.SystemDB = «\Acruxaccess_dbPSW.mdw»;
DAO_Engine.DefaultUser = «user»;
DAO_Engine.DefaultPassword = «111»;
dbNom = DAO_Engine.OpenDatabase(КаталогИБ() + «Numerator.mdb»);

   MoGar

15 — 10.09.08 — 12:38

(14)

у dbNom есть TableDefs — там я вижу свои таблицы, как мне прочитать необходимую?

   Ashtray

16 — 10.09.08 — 12:42

можно sql инструкцией, например
dbNom.Execute(«Insert Into EditElements (VIDD, Nomer, Data, IDD, TIP) Values (‘» + Вид +»‘,'» + ИзмененыйОбъект.Код + «‘,'» + ТекущаяДата() + «‘, ‘» + ИзмененыйОбъект.IDD + «‘,'» + ВидОбъекта + «‘)»);
или
dbNom.Execute(«Delete from EditElements Where VIDD = ‘» + ИзмененыйОбъект.Вид() + «‘ and Nomer = ‘» + ИзмененыйОбъект.IDD + «‘»);

можно рекордсетом
rs = dbNom.OpenRecordset(«Select max(Nomer) from Numerator»);
If rs.RecordCount > 0 Then
   rs.MoveFirst();
   ii = rs.Fields(0).Value;
EndIf;
ii = ii + 1;                        
rs.Close();

  

MoGar

17 — 10.09.08 — 12:46

(16) спасибо

Помогите, пожалуста, решить проблему:

Подключаюсь через ODBC драйвера к базе данных.

На некоторых компьютерах все отрабатывает несколько раз, а на других выдает ошибку

при вызове метода MoveFirst() сразу или на 2-й итерации.

При вызове метода контекста (MoveFirst): Произошла исключительная ситуация (Provider): Неопознанная ошибка

Кусок кода ниже

   олеКом = Новый COMОбъект(«ADODB.Command»);

   олеКом.ActiveConnection = олеглСоединениеSQL;

   олеКом.CommandTimeOut=600;

   олеКом.CommandType = 1;

   олеКом.CommandText = сТекстЗапроса;

   олеНаборДанных = олеКом.Execute();

   чКолСтрок = олеНаборДанных.Recordcount();

   чКолПолей = олеНаборДанных.Fields().Count;

   тз.Очистить();

   Если (чКолСтрок = 0) или (чКолПолей < 1) Тогда

    олеНаборДанных.Close();

   КонецЕсли;

   чСтрока = 0;

   // Заполняем заголовки колонок…

   Для чКол = 1 По чКолПолей Цикл

       тз.Колонки.Добавить(олеНаборДанных.Fields(чКол-1).Name,,);

   КонецЦикла;

   Если (олеНаборДанных.EOF() <> 0) и (олеНаборДанных.BOF() <> 0) Тогда

   олеНаборДанных.Close();

   Возврат (0);

   КонецЕсли;

   олеНаборДанных.MoveFirst();

   Пока олеНаборДанных.EOF() = 0 Цикл

    чСтрока = чСтрока + 1;

    ТекСтр = тз.Добавить();

     Для чКол = 1 По чКолПолей Цикл

      ТекСтр.Установить(чКол — 1,олеНаборДанных.Fields(чКол-1).Value);

     КонецЦикла;

     олеНаборДанных.MoveNext();

   КонецЦикла;

   // Закрываем набор…

   олеНаборДанных.Close();

Есть Access 97 написал процедуру по подключению к базе Попытка мПодключение = Новый COMОбъект(«ADODB.Connection»); При вызове мПодключение.Open; выдает ошибку: Произошла исключительная ситуация (Provider): Разрушительный сбой Что делаю не так или что надо поставить?

Пробывал Provider=Microsoft.Jet.OLEDB.3.51 (сказали что 97-го надо этот использовать) выдает такую ошибку Произошла исключительная ситуация (ADODB.Connection): Не удается найти указанного поставщика. Вероятно, он установлен неправильно.

Driver={Microsoft Access Driver (*.mdb)};Dbq=C:mydatabase.mdb;Uid=Admin;Pwd=; на будующее

от туда же Workgroup (system database) specifying username and password     Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:mydatabase.mdb;Jet OLEDB:System Database=system.mdw;User ID=myUsername;Password=myPassword;

Какую строку в Новый COMОбъект(«») надо писать для ODBC

СтрокаСоединения =»Driver={Microsoft Access Driver (*.mdb)};Dbq=C:mydatabase.mdb;Uid=Admin;Pwd=;» строка соединения меняеться а объект тот же ADODB.Connection

Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Provider): Неопознанная ошибка

СтрокаСоединенияИБ — возвращает эту строку:    СтрокаСоединения = «Driver={Microsoft Access Driver (*.mdb)};

у тебя Workgroup? файл SystemDB=mydatabase.mdw есть?

я создавал новую базу без *.mdw, к ней тоже не подключается

у dbNom есть TableDefs — там я вижу свои таблицы, как мне прочитать необходимую?

можно sql инструкцией, например или If rs.RecordCount > 0 Then

Тэги:

Комментарии доступны только авторизированным пользователям

На ИТС часто даются описания кодов ошибок, но они не всегда исчерпывающие. В этой статье мы будем пытаться продолжать «исчерпывать» 🙂

При эсклуатации баз данных 1С вы можете сталкнуться с такой ситуацией:

Сеанс работы завершен администратором.
по причине:
Соединение с сервером баз данных разорвано администратором
Microsoft OLE DB Provider for SQL Server: Неопознанная ошибка
HRESULT=80004005

Признаки проблемы: нельзя выгрузить в dt

Внимание! Ошибок с кодом 80004005 уйма, более подробно классофикацию я описал здесь http://www.gilev.ru/1c/mssql/errsql.htm . Здесь же мы говорим именно о «неопознанной ошибке» 🙂

Сотрудники 1С рекомендуют решать проблему так:

1. Проверить конфигурацию на наличие некорректной информации (мусора). Для этого следует выполнить команду «Проверка конфигурации» с установленным флажком «Проверка логической целостности конфигурации». При выявлении проблем будет выдано сообщение. Некорректная информация при этом будет удалена автоматически, однако следует обеспечить доступность для изменения корневого объекта конфигурации (напимер, при работе с хранилищем его следует захватить).

2. Если Ваша конфигурация находится на поддержке, следует подобным образом проверить конфигурацию поставщика. Для этого в настройке поддержки следует сохранить конфигурацию поставщика в cf файл, загрузить его в новую базу и выполнить описанную в пункте 1 процедуру. В случае, если было получено сообщение об исправлении, значит конфигурация поставщика содержит некорректную информацию. В этом случае следует снять Вашу конфигурацию с поддержки и заново поставить путем объединения со свежим релизом конфигурации поставщика. В настоящее время все релизы выпускаемые 1С проходят проверку и выпускаются без данной проблемы.

Нюансы: обратите внимание, что «Стандартные проверки» платформой (chdbfl, в конфигураторе) упорно говорят, что с базой все ОК.  

Также с этой ситуацией пересекается следующая ситуация:

10007066  Запись данных, содержащих колонки типа ХранилищеЗначения
Проблема:
При использовании СУБД MS SQL SERVER при записи объекта базы данных, содержащего несколько колонок типа ХранилищеЗначения, данные для которых получены из файлов, может происходить ошибка
Ошибка СУБД:Microsoft OLE DB Provider for SQL Server: String data length mismatchHRESULT=80004005и аварийное завершение работы программы.
Дата публикации: 2008-11-13

http://users.v8.1c.ru/ErrCS_8_1_12_101.aspx

Суть проблемы: важно, что под это сообщение об ошибке могут подпадать разные причины, но у них есть общая часть для 1С — это не достаточно оперативной памяти. А еще точнее неэффектиное использование ресурсов памяти. Отсюда косвенные способы победить проблему: путем рестарта сервера (на некотрое время становиться больше доступной памяти) или перейти на 64-разрядный сервер приложений. По опыту проблема связана с хранением данных в реквизите хранилище значений либо наличием в таблице config двоичных данных БОЛЬШЕ  120 mb.

Обобщенные рекомендации, если рекомендации от 1С не помогли (проделать следующие действия в указанном порядке):
1. Выключить все фоновый задачи у всех баз

В 8.1.11 появился переключатель «запрет на фоновые задания» в
момент создания базы.

Готов пояснить, фоновые задания сами по себе не зло, но регламентные процедуры
с полнотекстовым поиском — вещь в себе — и память она может через какое время
съедать ресурсы rphost.exe, что на другие операции не останеться, и просто
базу блокировать
т.е. другими словами, после первого шага уже можно проверять — возможно проблема «уйдет».

2. Перезапустить сервер

Второй шаг является частным случаем для вашего случая и после него тоже
есть смысл проверять работоспособность. Однако поскольку существуют утечки памяти http://www.gilev.ru/1c/memleak, то через некоторое время после рестарта пролема может вернуться.

3) делаем бэкап средствами sql

Делать резервное копирование рекомендую при любых действиях, когда может потребоваться «возврат» к предыдущему состоянию данных

4) снимаем базу с поддержки, выгружаем cf

  убиваем в менежмент консоли базе данных в таблице config запись более 120Мб,  делаем «загрузить конфигурацию» (не объединение)  убиваем в менежмент консоли базе данных в таблице config запись более 120Мб,  делаем «загрузить конфигурацию» (не объединение)

вот пример работоспособности этого приема

http://partners.v8.1c.ru/forum/thread.jsp?id=543293

можно попробывать и более радикальный шаг здесь:
удаляем (в менежмент консоли) в базе данных таблицу «config»

DROP TABLE [dbo].[Config]

5) делаем «загрузить конфигурацию» (не объединение) из cf

после этого проверяем, проблема уходит.

P.S. Если у Вас есть возможность поделиться своим опытом, то давайте расширим данный материал.

Пользуясь базами данных любой программы 1С, сотрудники предприятий и организаций часто сталкиваются с непредвиденными ситуациями. Пожалуй, одна из самых частых — когда работа программы внезапно завершается по причине того, что администратор разорвал контакт с сервером.

В данном случае Microsoft OLE DB Provider for SQL Server выдаёт такую информацию: «Неопознанная ошибка hresult 80004005». При этом главным признаком проблемы является невозможность выгрузить информацию в базу.

Следует отметить, что ошибки, содержащие именно код 80004005, встречаются постоянно. У них есть особая классификация, которую при желании можно найти в соответствующей литературе.

Ошибка выделения памяти hresult 80004005

Для начала нужно провести проверку конфигурации. Там может содержаться мусор (иными, словами, информация, которая является некорректной). Необходимо проверить конфигурацию с помощью соответствующей команды. Вы увидите флажок, предназначенный для того, чтобы проверить её логическую целостность. Если имеются проблемы, пользователь будет уведомлен об этом с помощью сообщения.

Данные, являющиеся неверными, система удалит в автоматическом режиме, но для этого нужно дать ей доступ, чтобы она изменила главный объект. К примеру, если вы работаете в облачном хранилище, его надо просто захватить.

Поддержка конфигурации требует её проверки и у поставщиков. С этой целью:

  • нужно сохранить данные о конфигурации поставщиков. Для этого используйте CF-файл;
  • теперь необходимо провести загрузку файла в обновлённую базу;
  • выполните операцию, которая описана в п.1.

При получении сообщения об исправлении ошибки имейте в виду то, что конфигурация, имеющаяся у поставщика, содержала неправильные данные. Если такое произошло, снимите свою конфигурацию с поддержки и установите её снова. При этом её надо объединить с новой (от поставщика).

Сейчас уже любой релиз, который выпускает 1С, не имеет таких сложностей.

Ошибка hresult 80004005

Сопутствующая проблема и методы её решения

С ситуацией, описанной ранее, тесно связана ещё одна, происходящая параллельно. Выглядит она так: 10007066.

Суть проблемы: когда используется СУБД MS SQL SERVER, во время записи объекта из базы с несколькими колонками (например, «Значения» и «Хранилища»), часто случается другой тип ошибки.

Выглядит она таким образом:

Ошибка СУБД:Microsoft OLE DB Provider for SQL Server: String data length mismatchHRESULT=80004005.

Когда происходит ошибка 1с hresult clr 80004005, программа завершает свою работу в аварийном режиме.

Если вы ознакомитесь во время загрузки программы со специальным журналом (речь идёт о технологическом журнале), там есть табличка, содержащая информацию об этих хранилищах.

С помощью средств MS SQL Server Query Analizer нужно найти в табличке несколько колонок image и сделать для каждой следующий запрос

select top 10 DATALENGTH(_Fld4044 from _InfoReg4038  order by DATALENGTH(_Fld4044) desc

При этом, со стороны стандартных проверок, проводимых платформой (chdbfl), поступит информация о том, что база полностью в порядке.

Ошибка выделения памяти hresult 80004005 (на английском это out of memory for query result 1с) может происходить вследствие различных причин, имеющей общую черту. Для системы 1С это, прежде всего, недостаток оперативной памяти. Если говорить точнее, речь идёт о некорректном применении возможностей памяти, поэтому для решения задачи лучше использовать несколько косвенных алгоритмов.

Необходимо сделать рестарт (перезапуск) сервера. Таким образом памяти, которая доступна для работы, временно станет больше. Также есть возможность воспользоваться сервером в 64 разряда, содержащем приложения.

Исходя из опыта, ошибка СУБД hresult 80004005 чаще определяется двумя факторами:

  • данные хранятся в хранилище значений (реквизите);
  • в таблице конфигураций содержатся двоичные данные объёмом более 120 мегабайт.

Когда советы от сотрудников 1С не приносят результата (ошибка 1с hresult 80004005 остаётся), попробуйте воспользоваться другой пошаговой инструкцией:

Наши постоянные клиенты по 1С:

Корона Лифт

Гознак

Накфф

Рембаза

Rozara

  • используйте все базы, включив у них все фоновые задачи;
  • в 8.1.11. должен появиться переключатель о запрете на фоновые задачи (во время создания базы);
  • сделайте перезапуск сервера.

Имеет смысл проверки работоспособности. Тем не менее вследствие утечек памяти проблема может возникнуть снова — после перезапуска. В этом случае целесообразно:

  • воспользоваться инструментами sql и сделать бэкап;
  • снять базу с поддержки;
  • выгрузить  cf.

Во время любых действий следует копировать файлы в резерв, так как в любой момент может возникнуть необходимость возвращения к исходному статусу информации. Далее надо убрать в менеджменте консоли (config) запись «более 120 мегабайт» и провести загрузку конфигурации (не объединять, а загрузить).

Есть ещё один способ, с помощью которого неопознанная ошибка субд hresult 80004005 может быть исправлена. Нужно открыть конфигуратор и снять конфигурацию, не сохраняя её. Далее, сохранив, нужно поместить её в отдельный файл без сохранения её изменённого вида.

Выполните в SQL операцию, предназначенную для конкретной базы:

DELETE FROM dbo.Config WHERE DataSize > 125829120

После выполнения этой команды проведите загрузку сохранённой конфигурации.

Что касается радикальных шагов, используемых в особо трудных ситуациях, иногда помогает такая схема:

  • удалите таблицу config из базы данных, воспользовавшись менеджментом консоли DROP TABLE [dbo].[Config];
  • проведите загрузку конфигурации (не «объединить»,а именно «загрузить»).

После проведения проверки проблема должна уйти.

  • Стоимость работ специалистов IT Rush — 2000 руб./час
  • Абонемент от 50 часов в месяц – 1900 руб./час
  • Абонемент от 100 часов в месяц – 1800 руб./час

Нам доверяют:

На ИТС часто даются описания кодов ошибок, но они не всегда исчерпывающие. В этой статье мы будем пытаться продолжать «исчерпывать» 🙂

При эсклуатации баз данных 1С вы можете сталкнуться с такой ситуацией:

Сеанс работы завершен администратором.
по причине:
Соединение с сервером баз данных разорвано администратором
Microsoft OLE DB Provider for SQL Server: Неопознанная ошибка
HRESULT=80004005

Признаки проблемы: нельзя выгрузить в dt

Внимание! Ошибок с кодом 80004005 уйма, более подробно классофикацию я описал здесь http://www.gilev.ru/1c/mssql/errsql.htm . Здесь же мы говорим именно о «неопознанной ошибке» 🙂

Сотрудники 1С рекомендуют решать проблему так:

1. Проверить конфигурацию на наличие некорректной информации (мусора). Для этого следует выполнить команду «Проверка конфигурации» с установленным флажком «Проверка логической целостности конфигурации». При выявлении проблем будет выдано сообщение. Некорректная информация при этом будет удалена автоматически, однако следует обеспечить доступность для изменения корневого объекта конфигурации (напимер, при работе с хранилищем его следует захватить).

2. Если Ваша конфигурация находится на поддержке, следует подобным образом проверить конфигурацию поставщика. Для этого в настройке поддержки следует сохранить конфигурацию поставщика в cf файл, загрузить его в новую базу и выполнить описанную в пункте 1 процедуру. В случае, если было получено сообщение об исправлении, значит конфигурация поставщика содержит некорректную информацию. В этом случае следует снять Вашу конфигурацию с поддержки и заново поставить путем объединения со свежим релизом конфигурации поставщика. В настоящее время все релизы выпускаемые 1С проходят проверку и выпускаются без данной проблемы.

3. Также с этой ситуацией пересекается следующая ситуация:

10007066 Запись данных, содержащих колонки типа ХранилищеЗначения
Проблема:
При использовании СУБД MS SQL SERVER при записи объекта базы данных, содержащего несколько колонок типа ХранилищеЗначения, данные для которых получены из файлов, может происходить ошибка
Ошибка СУБД:Microsoft OLE DB Provider for SQL Server: String data length mismatchHRESULT=80004005и аварийное завершение работы программы.
Дата публикации: 2008-11-13

Включив технологический журнал на время загрузки, можно определить таблицу, в которой содержатся такие хранилища. Найдите средствами MS SQL Server Query Analizer в этой таблице колонки типа image. Для каждой колонки типа image выполните запрос вида:

select top 10 DATALENGTH(_Fld4044)
from _InfoReg4038
order by DATALENGTH(_Fld4044) desc

 
Нюансы: обратите внимание, что «Стандартные проверки» платформой (chdbfl, в конфигураторе) упорно говорят, что с базой все ОК.

Суть проблемы: важно, что под это сообщение об ошибке могут подпадать разные причины, но у них есть общая часть для 1С — это не достаточно оперативной памяти. А еще точнее неэффектиное использование ресурсов памяти. Отсюда косвенные способы победить проблему: путем рестарта сервера (на некотрое время становиться больше доступной памяти) или перейти на 64-разрядный сервер приложений.

1С:Предприятие 8.2. Лицензия на сервер (x86-64)

По опыту проблема связана с хранением данных в реквизите хранилище значений либо наличием в таблице config двоичных данных БОЛЬШЕ 120 mb.

Обобщенные рекомендации, если рекомендации от 1С не помогли (проделать следующие действия в указанном порядке):
1. Выключить все фоновый задачи у всех баз

В 8.1.11 появился переключатель «запрет на фоновые задания» в
момент создания базы.

Готов пояснить, фоновые задания сами по себе не зло, но регламентные процедуры
с полнотекстовым поиском — вещь в себе — и память она может через какое время
съедать ресурсы rphost.exe, что на другие операции не останеться, и просто
базу блокировать
т.е. другими словами, после первого шага уже можно проверять — возможно проблема «уйдет».
2. Перезапустить сервер

Второй шаг является частным случаем для вашего случая и после него тоже
есть смысл проверять работоспособность. Однако поскольку существуют утечки памяти http://www.gilev.ru/1c/memleak, то через некоторое время после рестарта пролема может вернуться.
3) делаем бэкап средствами sql

Делать резервное копирование рекомендую при любых действиях, когда может потребоваться «возврат» к предыдущему состоянию данных

4) снимаем базу с поддержки, выгружаем cf

убиваем в менежмент консоли базе данных в таблице config запись более 120Мб, делаем «загрузить конфигурацию» (не объединение) убиваем в менежмент консоли базе данных в таблице config запись более 120Мб, делаем «загрузить конфигурацию» (не объединение)

вот пример работоспособности этого приема

http://partners.v8.1c.ru/forum/thread.jsp?id=543293

или

1. Открыть конфигратор;
2. Снял конфигурацию с поддержки, ПРИ ЭТОМ КОНФИГУРАЦИЮ НЕ СОХРАНЯЛ!
3. Далее Сохранить конфигурацию в файл (не сохраняя измененной конфигурации);
4. В SQL для требуемой базы выполнил следующую команду:
DELETE FROM dbo.Config WHERE DataSize > 125829120
5. Загрузить сохраненную конфигурацию обратно.

Взято с http://www.forum.mista.ru/topic.php?id=465608

можно попробывать и более радикальный шаг здесь:
удаляем (в менежмент консоли) в базе данных таблицу «config»

DROP TABLE [dbo].[Config]
5) делаем «загрузить конфигурацию» (не объединение) из cf

после этого проверяем, проблема уходит.

Оглавление

  • Проблема
  • Какая версия MySQL ODBC ANSI Driver нужна?
  • Установка MySQL ODBC ANSI Driver
  • Настройка соединения 1С 8.2/8.3 с внешней базой данных MySQL
  • Пару слов в заключение

В данной статье я не буду подробно расписывать как писать обработку для 1С чтобы приконнектиться к MySQL. У меня уже была обработка и я столкнулся с проблемой именно из-за отсутствия драйвера.

Пункт 1. Проблема

При переезде на другой сервер столкнулся со следующей проблемой (Произошла исключительная ситуация Microsoft OLE DB Provider for ODBC Drivers): не работал обмен 1С с внешней базой данных MySQL. Оно то и правильно что не работал. Он не должен, ведь я не установил ODBC Connector MySQL
и как следствие при попытке обмена видел ошибку (у вас наверняка что-то подобное выползает на экран, если вы сюда попали гугля аналогичную проблему 😉)

{ОбщаяФорма.СР_ФормаОбменСВнешнейБазой.Форма(84)}: Ошибка при вызове метода контекста (Open)
	Соединение.Open();
по причине:
Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию

Пункт 2. Какая версия MySQL ODBC ANSI Driver нужна?

И так. У нас для решения проблемы с подключением 1С 8.2/8.3 к промежуточной базе MySQL нам нужен, как я уже писал выше, ODBC Connector MySQL! И не простой, а именно тот, что у нас прописан в модуле обмена. Идём в Конфигуратор 1С,
находим там модуль в котором прописано подключение и смотрим какой же чудесный драйвер и какой версии используется для подключения к внешней базе данных! И о чудо — это MySQL ODBC 5.3 ANSI Driver! В моём случае, конечно
у вас он может быть другой версии. И на всякий случай вот код (смотрите ниже), можете сравнить со своим или вообще написать заново. Как вам больше нравится 🙂! И да, я тут пару фишек сделал. Вы можете вписать свои данные
в поля и они сразу же отобразятся в коде, после чего вам остаётся скопипастить его себе прямо с сайта. Удобно? Ну да ладно. Код:

Функция ОткрытьСоединение()

	Сервер="127.0.0.1";
	БазаДанных="MySQLdbname";
	Пользователь="sa";
	Пароль="P@ssW0rD123!";
	
	Соединение = Новый COMОбъект("ADODB.Connection");
	СтрокаСоединения = "Provider=MSDASQL;DRIVER={MySQL ODBC 5.3 ANSI Driver};SERVER="+Сервер+";DataBase="+БазаДанных+";UID="+Пользователь+";PWD="+Пароль+";";
	Соединение.ConnectionString = СтрокаСоединения;
	Соединение.Open();
	Возврат Соединение;

Пункт 3. Установка MySQL ODBC ANSI Driver

Но всё это чудо не будет работать собственно без драйвера, так что идём по этой ссылке и скачиваем себе драйвер подходящей версии и разрядности. Копируем на сервер и устанавливаем его. Думаю с этим
у вас проблем не возникнет, а если будут, то дальше можете не читать 🙂.

Пункт 4. Настройка соединения 1С 8.2/8.3 с внешней базой данных MySQL

Дальше нам понадобится программа odbcad32. Её устанавливать не нужно, она у вас уже есть! Ищите её в Администрирование или Ctrl + R odbcad32 Enter

Для 32 битных систем программа расположена:

%windir%system32odbcad32.exe

А для 64 битных систем программа лежит тут:

%windir%syswow64odbcad32.exe

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

Переходим во вкладку Системный DSN и жмем кнопку Добавить… выбираем MySQL ODBC 5.3 ANSI Driver
или какой у вас там версии коннектор. Готово. После чего переходим в настройки, выделяем системный источник данных и кликаем Настройка…. Тут
совсем всё просто, даже писать не буду, подставляете свои данные

И конечно стоит разок прожать кнопку Test дабы убедиться что вы всё вписали верно. Если вы увидите сообщение: «Connection Successful«, жмите ОК и можете спать спокойно.

Пункт 5. Пару слов в заключение

Действительно тут нет ничего сложного, однако решил записать, так как дело это нехитрое и если ты не занимаешься настройкаой соединения базы 1С с внешней MySQL базой данных каждый день, то через N месяцев
ты успешно можешь забыть всю процедуру и будешь заново гуглить. Я записал для себя, но если это пригодится и тебе, то будет просто здорово! Спасибо что дочитал до конца. А то обычно пользователи только успешно копипастят куски кода
и ничего не читают 😒 !

«ADODB.Connection: Не удается найти указанный поставщик» — перешли на новый сервер

Может, кто-нибудь сталкивался с подобной ситуацией:
Перешли с Server 2008 на 2016, оба 64-х разрядные. База SQL.
Есть регламентное задание — обмен данными с базой Access. На новом сервере регл.задание выдаёт ошибку:

<ОбщийМодуль.NNNNN.Модуль(68)>: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (ADODB.Connection): Не удается найти указанный поставщик. Вероятно, он установлен неправильно.

К специалисту не отправляйте, пожалуйста: если бы я могла обратиться, обратилась бы, корону не ношу.

Проверить легко, нужно в самом SQL сделать импорт/экспорт через выбранный провайдер.
Если ругается, дальше ищем по ошибке. Инструкции в интернете есть.

(6) Проверь Объекты сервера — Связанные сервера — Поставщики

(8) В системном реестре есть строки с Microsoft.ACE.OLEDB.12.0 и Microsoft.ACE.OLEDB.16.0
Это значит, что они установлены?
Когда прописываю их в 1С, обмен ругается как в (0). Значит, не установлены.
Завтра попробую. Думаю, при установке AccessDatabaseEngine скорее всего надо будет перегружать сервер, я не всегда могу это сделать.

Спасибо всем за подсказки!

(10) Возможно банально поменялась строка подключения.
Или учетка от которой стартует SQl и 1С.

Я бы проверил на самом sql
EXEC sp_configure ‘show advanced option’,’1′
RECONFIGURE
GO
EXEC sp_configure ‘Ad Hoc Distributed Queries’,’1′
RECONFIGURE
GO

SELECT TableNo, TableName FROM OPENDATASOURCE(‘Microsoft.ACE.OLEDB.16.0’, ‘Data Source=C:TempTestSQL.mdb;Jet OLEDB:System database=C:TempSystem.mdw;User OLEDB:Database Password=password’)

EXEC sp_configure ‘Ad Hoc Distributed Queries’,’0′
RECONFIGURE
GO
EXEC sp_configure ‘show advanced option’,’0′
RECONFIGURE
GO

если у вас файл нового формата accdb, будет немного отличаться, уже не помню как )

Источник

Соединение из 1С с Oracle через ADODB

На сервере установлена 64-разрядная Windows Server Enterprise SP2
Установлен ODAC121012_x64
Настроен DSN для ODBC x64, — тестирование подключения проходит успешно

Для соединения использую код:

Connection.Open(СтрокаПодключения);
Command.ActiveConnection = Connection;
Command.CommandText = ЗапросSQL;
RecordSet = Command.Execute();

Connection.Close();
Connection = Неопределено;

Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;

Валится на строке:

<Форма.Форма.Форма(84)>: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): Не удается загрузить указанный драйвер из-за системной ошибки 127 (Oracle in OraClient12Home2).

При чем через внешние источники данных для такой же строки подключения — соединение выполняется успешно, проблема именно при соединении через ADODB

1. Пробовали разные строки подключения — соединение не работает
2. Переустановили ODAC — не помогло
3. Переустанавили ODAC и Сервер 1С (Сразу после переустановки ODAC и Сервера 1С соединение через ADO заработало, на следующий день перестало работать с той же ошибкой)

Что не так делаю?

Зачем все это нужно:

Есть учетная система на СУБД Oracle из которой надо как читать, так и записывать в нее данные

Данные на чтение получаю через Внешние источники данных (через ADO возникала проблема с кодировками, а через ВИД проблем нет)
Записывать хочу через ADODB (потому что значения некоторых полей нужно генерировать на лету с помощью SEQUENCE оракла)

Тоже 2-ю неделю вожусь.

Содержимое PATH: (путь до клиента на первом месте)
F:Oracleproduct12.1.0client_1bin; F:Oracleproduct12.1.0client_1

При попытке соединения через ADO вываливается с ошибкой:

<Форма.Форма.Форма(92)>: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию

тк в ней есть 32 64 битные версии.

Все равно ошибка:

<Форма.Форма.Форма(95)>: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): Не удается загрузить указанный драйвер из-за системной ошибки 127 (Oracle in OraClient12Home2).

Если указываю строку, как в (11), пишет следующее:

<Форма.Форма.Форма(99)>: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Provider): Разрушительный сбой

Если подключаешься через клиента 1С — то он ведь 32битный, и надо ставить 32битного клиента Oracle.

А вот если надо чтобы к примеру фоновый процесс лез в оракл — то тут я не смог победить ораклового клиента))).

И настраивать надо через свои утилиты для каждой версии:

The 32-bit version of the Odbcad32.exe file is located in the %systemdrive%WindowsSysWoW64 folder.
The 64-bit version of the Odbcad32.exe file is located in the %systemdrive%WindowsSystem32 folder.

@Есть учетная система на СУБД Oracle из которой надо как читать, так и записывать в нее данные @

Надо читать фоновым серверным процессом?

1. Создал файловую базу

Запускаю внешнюю обработку с кнопкой, по которой должно устанавливаться соединение через ADO из файловой базы 1с — в результате соединение нормально устанавливается

1. На сервер 1С устанавливаем еще один «сервер предприятия 1с»(32-разрядного) запускаем службу по другому порту.

2. В консоли «Администрирование серверов 1С» для нашего локального кластера добавляем 32-разрядный сервер 1С. Т.е. кластер серверов теперь состоит из 64-разрядного сервера(основной) и из 32-разрядного(дополнительный).

3. В «Требования назначения функциональности» основного сервера добавляем новое требование. В «объекте требования» выбираем «Сервис работы с внешними источниками данных через ODBC» (т.к. мне необходимо было чтобы работа с ВИД велась через 32-разрядный сервер 1С. Для запуска рег. задания необходимо выбрать объект требования «Клиентское соединение с ИБ» и указать в значение доп. параметра что-то типа «BackgroundJob.CommonModule.РегламентныеЗадания.ЗагрузитьОстатки»), тип требования — не назначать.

4.В «Требования назначения функциональности» дополнительного сервера делаем тоже самое что и в п.3,только тип требования — назначать.

5.В «Требования назначения функциональности» дополнительного сервера добавляем еще одно требование: объект требования «для всех»,тип требования — не назначать.

6. В свойствах локального кластера нажимаем кнопку применить требования назначения функциональности

Источник

Моя война с Adodb.connection «Microsoft.Jet.OLEDB.4.0» на 64-х битных серверных ОС (86х)

При миграции приложений с MSSQL 2005 и Server 2003 в MSSQL 2008 x64 и Server 2008 x64, я столкнулся с проблемой с ODBC-соединения. Приложение использует системный DSN для подключения к ODBC . Настройки были идентичны , в пределах менеджера ODBC работал.

Оказывается, что 32-разрядные приложения не видят уведомления о доставке данных созданных в 64-битном менеджере ODBC, и будет выполнена одна из ошибок описаных ниже.

32-разрядный ODBC Manager находится в C: Windows SysWOW64 odbcad32.exe

При выполнении кода подключения на сервере

Возникала исключительная ситуация

(Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

Причем на файловой базе все происходило без проблем.

Схема базы:
Серверная 1С «крутилась» на отдельном физическом сервере. Подключение происходило через терминальный сервер (Так же отдельный физический)

Суть проблемы и решение:

Оказывается Сервер на котором крутился SQL не хотел давать доступ напрямую к реестру и *.dll, которые находились удаленно, а пытался поднять эти библиотеки не пользователь терминального сервера на клиенте, а пользователь от которого была запущена служба сервера 1С на SQL-e (USR1CV82 по дефолту).

Для адекватной работы нам необходимо дать права на чтение по ключу реестра HKLMSOFTWAREODBCODBC.INI для everyone или конкретного пользователя.

Потом зарегистрировать DSN

Ну и провести подключение к Adodb.Connection:

После этого подключение взлетело и по аналогии можно подключить любой драйвер.

Источник

Настройка соединения 1С 8.2/8.3 с базой данных MySQL

Оглавление

В данной статье я не буду подробно расписывать как писать обработку для 1С чтобы приконнектиться к MySQL. У меня уже была обработка и я столкнулся с проблемой именно из-за отсутствия драйвера.

Пункт 1. Проблема

При переезде на другой сервер столкнулся со следующей проблемой (Произошла исключительная ситуация Microsoft OLE DB Provider for ODBC Drivers): не работал обмен 1С с внешней базой данных MySQL. Оно то и правильно что не работал. Он не должен, ведь я не установил ODBC Connector MySQL и как следствие при попытке обмена видел ошибку (у вас наверняка что-то подобное выползает на экран, если вы сюда попали гугля аналогичную проблему 😉)

Пункт 2. Какая версия MySQL ODBC ANSI Driver нужна?

И так. У нас для решения проблемы с подключением 1С 8.2/8.3 к промежуточной базе MySQL нам нужен, как я уже писал выше, ODBC Connector MySQL! И не простой, а именно тот, что у нас прописан в модуле обмена. Идём в Конфигуратор 1С, находим там модуль в котором прописано подключение и смотрим какой же чудесный драйвер и какой версии используется для подключения к внешней базе данных! И о чудо — это MySQL ODBC 5.3 ANSI Driver! В моём случае, конечно у вас он может быть другой версии. И на всякий случай вот код (смотрите ниже), можете сравнить со своим или вообще написать заново. Как вам больше нравится 🙂! И да, я тут пару фишек сделал. Вы можете вписать свои данные в поля и они сразу же отобразятся в коде, после чего вам остаётся скопипастить его себе прямо с сайта. Удобно? Ну да ладно. Код:

Пункт 3. Установка MySQL ODBC ANSI Driver

Но всё это чудо не будет работать собственно без драйвера, так что идём по этой ссылке и скачиваем себе драйвер подходящей версии и разрядности. Копируем на сервер и устанавливаем его. Думаю с этим у вас проблем не возникнет, а если будут, то дальше можете не читать 🙂.

Пункт 4. Настройка соединения 1С 8.2/8.3 с внешней базой данных MySQL

Дальше нам понадобится программа odbcad32. Её устанавливать не нужно, она у вас уже есть! Ищите её в Администрирование или Ctrl + R odbcad32 Enter

Для 32 битных систем программа расположена:

А для 64 битных систем программа лежит тут:

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

Переходим во вкладку Системный DSN и жмем кнопку Добавить. выбираем MySQL ODBC 5.3 ANSI Driver или какой у вас там версии коннектор. Готово . После чего переходим в настройки, выделяем системный источник данных и кликаем Настройка. . Тут совсем всё просто, даже писать не буду, подставляете свои данные

И конечно стоит разок прожать кнопку Test дабы убедиться что вы всё вписали верно. Если вы увидите сообщение: «Connection Successful«, жмите ОК и можете спать спокойно.

Пункт 5. Пару слов в заключение

Действительно тут нет ничего сложного, однако решил записать, так как дело это нехитрое и если ты не занимаешься настройкаой соединения базы 1С с внешней MySQL базой данных каждый день, то через N месяцев ты успешно можешь забыть всю процедуру и будешь заново гуглить. Я записал для себя, но если это пригодится и тебе, то будет просто здорово! Спасибо что дочитал до конца. А то обычно пользователи только успешно копипастят куски кода и ничего не читают 😒 !

Источник

ADODB Строка подключения

Я очень люблю SQL, иногда слишком сильно и поэтому бываю предвзятым. Создать запрос к базе данных из 1С через ADODB не просто, а очень просто. Но есть одно обстоятельство, которое мне всегда мешало жить — это ConnectionString. Конечно, есть сайт http://www.connectionstrings.com/, но.

Однако вчера я нашел решение данной проблемы и оно оказалось очень простым (впрочем, как и все гениальное):

1С 8:

1С 7.7:

Подключив этот код к кнопке вы получите автоматическую генерацию строки подключения.

Специальные предложения

в обработке по обмену сделал кнопку — тестовое соединение
на случай отладки при изменении строки соединения и прописал так:

Попытка
Соединение = Новый COMОбъект(«ADODB.Connection»);
Соединение.ConnectionString = «Provider=SQLOLEDB.1;Password=»+СокрЛП(Объект.ПарольADODB)+»;Persist Security Info=True;User ;Initial Catalog=BGNAT-SS;Data Source=bgnat-ss.database.windows.net,1433;Connection Timeout=30″;
// ВНИМАНИЕ! Установка точект остановки при отладке до этой строки даст сбой — что бы не делали будет: Provider=MSDASQL.1 вместо Provider=SQLOLEDB.1
ДатаЛ = Новый COMОбъект(«DataLinks»);
ДатаЛ.PromptEdit(Соединение);

Соединение.Open();
Сообщить(Соединение.ConnectionString);
Соединение.Close();
Исключение
Предупреждение(«Не удалось создать подключение!»);
КонецПопытки;

методом тыка выяснено что если точку останова поставить на любой из этих 2 строк — работать не будет даже этот мастер подключения
Соединение = Новый COMОбъект(«ADODB.Connection»);
Соединение.ConnectionString = «Provider=. «;

на любой далее все работает, в комментарии написал памятку что не так

Источник

Я думаю каждый хоть раз, но сталкивался с ошибкой 1С Соединение с сервером баз данных разорвано администратором Microsoft SQL Server Native Client 10.0: Неопознанная ошибка HRESULT=80004005

Вот некоторые способы, которые помогут решить данную проблему:

1. Проверить конфигурацию на наличие некорректной информации (мусора). Для этого следует выполнить команду “Проверка конфигурации” с установленным флажком “Проверка логической целостности конфигурации”. При выявлении проблем будет выдано сообщение. Некорректная информация при этом будет удалена автоматически, однако следует обеспечить доступность для изменения корневого объекта конфигурации (напимер, при работе с хранилищем его следует захватить).

2. Если Ваша конфигурация находится на поддержке, следует подобным образом проверить конфигурацию поставщика. Для этого в настройке поддержки следует сохранить конфигурацию поставщика в cf файл, загрузить его в новую базу и выполнить описанную в пункте 1 процедуру. В случае, если было получено сообщение об исправлении, значит конфигурация поставщика содержит некорректную информацию. В этом случае следует снять Вашу конфигурацию с поддержки и заново поставить путем объединения со свежим релизом конфигурации поставщика. В настоящее время все релизы выпускаемые 1С проходят проверку и выпускаются без данной проблемы.

3. Также с этой ситуацией пересекается следующая ситуация:
10007066 Запись данных, содержащих колонки типа ХранилищеЗначения
Проблема:
При использовании СУБД MS SQL SERVER при записи объекта базы данных, содержащего несколько колонок типа ХранилищеЗначения, данные для которых получены из файлов, может происходить ошибка
Ошибка СУБД:Microsoft OLE DB Provider for SQL Server: String data length mismatchHRESULT=80004005и аварийное завершение работы программы.

Включив технологический журнал на время загрузки, можно определить таблицу, в которой содержатся такие хранилища. Найдите средствами MS SQL Server Query Analizer в этой таблице колонки типа image. Для каждой колонки типа image выполните запрос вида:

S_elect top 10 DATALENGTH(_Fld4044)
from _InfoReg4038
order by DATALENGTH(_Fld4044) desc

Нюансы: обратите внимание, что ”Стандартные проверки” платформой (chdbfl, в конфигураторе) упорно говорят, что с базой все ОК.

Суть проблемы: важно, что под это сообщение об ошибке могут подпадать разные причины, но у них есть общая часть для 1С – это не достаточно оперативной памяти. А еще точнее неэффектиное использование ресурсов памяти. Отсюда косвенные способы победить проблему: путем рестарта сервера (на некотрое время становиться больше доступной памяти) или перейти на 64-разрядный сервер приложений.

1С:Предприятие 8.2. Лицензия на сервер (x86-64)

По опыту проблема связана с хранением данных в реквизите хранилище значений либо наличием в таблице config двоичных данных БОЛЬШЕ 120 mb.

Обобщенные рекомендации, если рекомендации от 1С не помогли (проделать следующие действия в указанном порядке):

1. Выключить все фоновый задачи у всех баз
В 8.1.11 появился переключатель “запрет на фоновые задания” в
момент создания базы.

Готов пояснить, фоновые задания сами по себе не зло, но регламентные процедуры
с полнотекстовым поиском – вещь в себе – и память она может через какое время
съедать ресурсы rphost.exe, что на другие операции не останеться, и просто
базу блокировать
т.е. другими словами, после первого шага уже можно проверять – возможно проблема “уйдет”.

2. Перезапустить сервер
Второй шаг является частным случаем для вашего случая и после него тоже
есть смысл проверять работоспособность. Однако поскольку существуют утечки памяти http://www.gilev.ru/1c/memleak, то через некоторое время после рестарта пролема может вернуться.

3) делаем бэкап средствами sql
Делать резервное копирование рекомендую при любых действиях, когда может потребоваться “возврат” к предыдущему состоянию данных

4) снимаем базу с поддержки, выгружаем cf
убиваем в менеджмент консоли базе данных в таблице config запись более 120Мб, делаем “загрузить конфигурацию” (не объединение) убиваем в менеджмент консоли базе данных в таблице config запись более 120Мб, делаем “загрузить конфигурацию” (не объединение)

вот пример работоспособности этого приема
http://partners.v8.1c.ru/forum/thread.jsp?id=543293

или

1. Открыть конфигратор;
2. Снял конфигурацию с поддержки, ПРИ ЭТОМ КОНФИГУРАЦИЮ НЕ СОХРАНЯЛ!
3. Далее Сохранить конфигурацию в файл (не сохраняя измененной конфигурации);
4. В SQL для требуемой базы выполнил следующую команду:
DELETE FROM dbo.Config WHERE DataSize > 125829120
5. Загрузить сохраненную конфигурацию обратно.

Взято с http://www.forum.mista.ru/topic.php?id=465608

можно попробовать и более радикальный шаг здесь:
удаляем (в менеджмент консоли) в базе данных таблицу “config”
D_rop TABLE [dbo].[Config]

5) делаем “загрузить конфигурацию” (не объединение) из cf
после этого проверяем, проблема уходит.

6) Ошибка :»Соединение с сервером баз данных разорвано администратором
Microsoft OLE DB Provider for SQL Server: Неопознанная ошибка
HRESULT=80004005″

Имеем : 1C 8.1.13.41 УПП 1.2.19.21 на MS SQL 2005 SP3 на Win2003 Server Enterprise на компе 4Gb физ. памяти (SQL настроен на Max Memory 2Gb)

Решение в моем случае:
Виндовс по-умолчанию 2Гб берет себе, а 2 отдает нам. SQL почти всю остальную память поедал (в настройках стоит 2Gb) и оставлял для всех остальных только 128Мб физ. памяти(как и положено SQL- он не должен забирать ВСЁ, должен 128 оставить). Ошибка 1С начала проявляться после перехода на релиз 1.2.21.1. Да, действительно, в релизе 1.2.19.1 в файле dbo.Config не было записей больше 120Мб. А вот после обновления на 1.2.21.1 такая запись (примерно 135мб )появляется. При снятии с поддержки запись исчезает сама, и ничего удалять не приходится. При постановке на поддержку -снова появляется… Я так понял, что это и есть конфигурация поставщика.
Если SQL оставляет всего 128, а надо целых 135, то вывод- надо дать рабочим процессам живую физическую память. Moжно урезать SQL. А можно винды. Установив в boot.ini ключ /3GB я тем самым отдал виндам 1Gb, а всему остальному 3Gb, а не 2/2 как по умолчанию. После перезагрузки — все ОК.

У Вас есть свое решение!? оставьте его в комментариях)

Содержание

  • Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты ‘comcntr’ отличается от версии корневого модуля ‘core83’
    • Заполнение внешней таблицы
    • Выборка данных и запись
    • Использование хранимых процедур
  • Новые записи:

Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты ‘comcntr’ отличается от версии корневого модуля ‘core83’

Часто бывает, что при настроенной синхронизации после обновления платформы появляется ошибка «Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты ‘comcntr’ отличается от версии корневого модуля ‘core83′». Так происходит потому, что автоматически не зарегистрировалась компонента comcntr.dll из-за проблем с правами пользователя на компьютере.

Решить данную проблему можно двумя способами.

Способ №1.

Переустановить платформу под правами Администратора или под пользователем, у которого есть такие права.

Способ №2.

Если не получилось как в способе №1, то можно вручную зарегистрировать самому эту компоненту.

Перед этим нам необходимо изменить Параметры контроль учетной записи.

Для Windows 7 нам необходимо зайти в Пуск затем в Панель управления.

Для Windows 10 нам необходимо в левом нижнем углу панели задач в строке поиска набрать Панель управления и перейти по открывшейся ссылке.

В правом верхнем углу Панели управления выбрать Просмотр-Мелкие значки и затем в списке перейти в Учетные записи пользователей.

Там выбрать Изменить параметры контроля учетных записей.


Затем поставить ползунок в самом нижнем положении.

И перезапустить компьютер.

После перезагрузки необходимо:

Для Windows 7 надо перейти в Пуск, затем в строке поиска ввести cmd.exe,нам покажет что найдена Командная строка и, щелкнув по ней правой клавишей мыши, выбрать «Запуск от имени администратора».

Для Windows 10 нам необходимо в левом нижнем углу панели задач в строке поиска набрать Командная панель или cmd.exe и, щелкнув по ней правой клавишей мыши, выбрать «Запуск от имени администратора».

У нас откроется Командная строка, где нам необходимо ввести команду:

1.Для платформы x86

2.Для платформы х64

Затем нажать клавишу Enter.

Если все сделали правильно, то увидите вот такое окно.

После этого необходимо перезагрузить компьютер. Как включится, пробуйте снова сделать синхронизацию.

Пришлось недавно ближе поработать с объектами ADODB. Давно этого не делал, так что пришлось снова смотреть в старый код, а что-то и в интернете поискать. Решил скомпоновать базу здесь, в блоге — для дальнейшего возвращения.
Работа с ADODB производится через несколько объектов:
ADODB.Connection — Объект производит подключение к источнику данных, а так же трансляцию команд и наборов данных
ADODB.RecordSet — Объект предоставляющий механизмы работы с набором данных, такие как получение, модификация, удаление или добавление данных.
ADODB.Command — Объект, так же предоставляющий механизмы работы с наборами данных, но, в отличие от RecordSet, не возвращает данные на клиента.
ADODB.Connection

Перед тем как начать работать с данными из внешнего источника необходимо установить с ним связь, для этого вызывается функция Open объекта Connection, в единственный параметр этой функции передается строка ConnectionString с описанием параметров подключения.
Попытка ADOСоединение = Новый COMОбъект(«ADODB.Connection»); ADOСоединение.Open(«Provider=SQLOLEDB.1; |Persist Security Info=False; |User ID=»+Пользователь+»; |Password=»+ Пароль+»; |Initial Catalog=»+ База+»; |Data Source=»+ Сервер); Возврат ADOСоединение; Исключение КонецПопытки;
Provider — Имя драйвера источника данных (к примеру SQLOLEDB.1 для MS SQL server)
Persist Security Info — необходимость использования шифрованого канала
User ID — Имя пользователя внешнего источника
Password — Пароль пользователя
Initial Catalog — Имя базы внешного источника
Data Source — Имя сервера
ADODB.RecordSet
Открытие набора данных для всей таблицы. Этот вариант хорош тем, что есть возможность указания дополнительных параметров набора данных.
RecordSet.Open(Источник, Соединение, ТипКурсора, ТипБлокировки, Параметры)
В приведенном ниже примере набор данных открывается с параметрами
Источник — «IMPORT_PRODUCTS»
Соединение — мADOСоединение
ТипКурсора — «0» (adOpenForwardOnly)
ТипБлокировки — «2» (adLockPessimistic)
Параметры — «2» (adCmdTable)
ADOНаборДанныхТовары = Новый COMОбъект(«ADODB.RecordSet»); ADOНаборДанныхТовары.Open(«IMPORT_PRODUCTS», мADOСоединение, 0, 2, 2);
Открытие набора данных по запросу (использование дополнительных параметров вызывает исключения)
ТекстЗапросаТоваров = «SELECT * | FROM | where in (SELECT FROM where (( = ») |or ( = ‘NULL’) or( = ‘1’)))»; ADOНаборДанныхТовары = Новый COMОбъект(«ADODB.RecordSet»); ADOНаборДанныхТовары .Open(ТекстЗапросаТоваров, мADOСоединение);

Заполнение внешней таблицы

При необходимости очистить таблицу внешнего источника данных, и загрузить туда обновленные данные.
Подключаемся к внешней базе
Попытка СтрокаСоединения = «Provider=SQLOLEDB.1; |Persist Security Info=False; |User ID=»+Пользователь+»; |Password=»+ Пароль+»; |Initial Catalog=»+ База+»; |Data Source=»+ Сервер); Connection = Новый COMОбъект(«ADODB.Connection»); Connection.Open(СтрокаСоединения); Исключение Возврат; КонецПопытки; С помощью объекта ADODB.Command выполняем запрос по удалению данных из таблицы по определенному условию. При этом, в CommandText прописываем сам запрос, и важно указать CommandType равным 1.
Command = Новый COMОбъект(«ADODB.Command»); Command.CommandTimeout = 100; Command.CommandText = «DELETE FROM .. WHERE PERIOD_ID = Convert(datetime,’»+Лев(Строка(ДатаНач),10)+»‘,103)»; Command.CommandType = 1; Command.ActiveConnection = Connection; Command.Execute();
Устанавливаем новый запрос, который запишет в таблицу отобранные данные, и выполняем его.
// Выборка данных за прошлый месяц Выборка = Запрос.Выполнить.Выбрать(); Пока Выборка.Следующий() Цикл Command.CommandText = «INSERT INTO ..(PERIOD_ID, CO_ID, ART_ID, S ) VALUES (» + » Convert(datetime,’»+Лев(Строка(ДатаНач),10)+»‘,103)» + «,NULL» + «,»+Формат(Выборка.Код, «ЧГ=») + «,»+Строка(?(Сумма = 0,»0″,Формат(Сумма,»ЧРД=.; ЧГ=; ЧО=»))) +»)»; Попытка Command.Execute(); Исключение Сообщить(«Ошибка записи данных в базу: «+ОписаниеОшибки()); КонецПопытки; КонецЦикла;

Выборка данных и запись

Вариант ситуации, когда необходимо выполнить выборку данных, и записать результат для дальнейшей обработки. (Не забываем создавать объект Connection)
В данном случае используется объект ADODB.Recordset, который позволяет получить набор записей.
CommandText = «select g_id, saledate, sqty, scost from dbo.»+НастройкиADODB.dbo+»(‘»+Формат(НачПериода,»ДФ=yyyyMMdd»)+»‘,’»+Формат(КонПериода,»ДФ=yyyyMMdd»)+»‘) where g_id in («+СтрокаКодовТМЦ+»)»; Попытка rsRES = NEW COMObject(«ADODB.Recordset»); rsRES.Open(CommandText, Connection); Исключение Connection.Close(); Возврат; КонецПопытки Пока не rsRES.eof() Цикл НоваяЗапись = НаборЗаписей.Добавить(); Для х = 0 по 3 Цикл НоваяЗапись = rsRES.Fields(х).Value; КонецЦикла; rsRES.MoveNext(); КонецЦикла; НаборЗаписей.Записать(Истина); rsRES.Close(); Connection.Close();
Кстати, советую пользоваться функцией EOF вместо RecordCount, так как последняя очень не надежна, неопределенная во времени выполнения и может привести к «залипанию» процесса — подробнее можно почитать на форумах.

Использование хранимых процедур

Хранимые процедуры можно вызвать просот из запроса, вписав в начале текста слово «exec», либо указав соответствующий CommandType и название хранимой процедуры в CommandText.
Command = Новый COMОбъект(«ADODB.Command»); Command.CommandTimeout = 100; Command.ActiveConnection = Connection; Command.CommandText = «add_image»; Command.CommandType = 4; Создаем параметр посредством объекта Parameter (на перевес этому можно воспользоваться методом CreateParameter), и добавляем его методом Append в наше подключение.
Парам = Новый COMОбъект(«ADODB.Parameter»); Парам.Name = «@code»; Парам.Direction = 1; //1 — adParamInput Парам.Type = 201; // Парам.Size = 255; Парам.Value = ВнутреннийКод; Command.Parameters.Append(Парам);
Переводим файл, который хотим передать в двоичный поток, создаем и добавляем параметр
Поток = Новый COMОбъект(«ADODB.Stream»); Поток.Type = 1; //StreamTypeEnum.adTypeBinary = 1 StreamTypeEnum.adTypeText = 2 Поток.Open(); Поток.LoadFromFile(ПолноеИмяФайла); локПотокБайт = Новый ComSafeArray(Поток.Read()); Парам = Новый COMОбъект(«ADODB.Parameter»); Парам.Name = «@file_data»; Парам.Direction = 1; //1 — adParamInput Парам.Type = 205; //205 — adLongVarBinary Парам.Size = локПотокБайт.GetLength(); Парам.Value = локПотокБайт; Command.Parameters.Append(Парам); Command.Execute();

Есть Access 97 написал процедуру по подключению к базе Попытка мПодключение = Новый COMОбъект(«ADODB.Connection»); При вызове мПодключение.Open; выдает ошибку: Произошла исключительная ситуация (Provider): Разрушительный сбой Что делаю не так или что надо поставить?

Пробывал Provider=Microsoft.Jet.OLEDB.3.51 (сказали что 97-го надо этот использовать) выдает такую ошибку Произошла исключительная ситуация (ADODB.Connection): Не удается найти указанного поставщика. Вероятно, он установлен неправильно.

Driver={Microsoft Access Driver (*.mdb)};Dbq=C:mydatabase.mdb;Uid=Admin;Pwd=; на будующее

от туда же Workgroup (system database) specifying username and password     Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:mydatabase.mdb;Jet OLEDB:System Database=system.mdw;User ID=myUsername;Password=myPassword;

Какую строку в Новый COMОбъект(«») надо писать для ODBC

СтрокаСоединения =»Driver={Microsoft Access Driver (*.mdb)};Dbq=C:mydatabase.mdb;Uid=Admin;Pwd=;» строка соединения меняеться а объект тот же ADODB.Connection

Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Provider): Неопознанная ошибка

СтрокаСоединенияИБ — возвращает эту строку:    СтрокаСоединения = «Driver={Microsoft Access Driver (*.mdb)};

у тебя Workgroup? файл SystemDB=mydatabase.mdw есть?

я создавал новую базу без *.mdw, к ней тоже не подключается

у dbNom есть TableDefs — там я вижу свои таблицы, как мне прочитать необходимую?

можно sql инструкцией, например или If rs.RecordCount > 0 Then

Тэги:

Комментарии доступны только авторизированным пользователям

Автор Katish, 13 сен 2011, 12:16

0 Пользователей и 1 гость просматривают эту тему.

Пытаюсь вытащить данные из БД MS SQL:

СтрокаСоединения="Provider=SQLNCLI10.1;Persist Security Info=False;User ID=ASUI_Test;PWD=Qwerty1!;Initial Catalog=Lite;Data Source=id-test3;";
Соединение=Новый ComObject("ADODB.Connection");
Соединение.ConnectionString=СтрокаСоединения;
Соединение.Open();

Если запускаю это вручную (например, внешней обработкой), то всё работает, если же запускается регламентное задание, то в журнале вижу:

Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (ADODB.Connection): Provider cannot be found. It may not be properly installed.

Может, на сервере что-то не установлено?
Подскажите, у меня совсем немного опыта.


Ну ты пытешься ADODB-драйвер запустить на сервере как процесс. Проверь права и есть ли там вообще такой драйвер.

Если долго всматриваться в учебник…то в голову может прийти мысль его открыть!


1. Проверяю наличие драйвера.
В «Установке и удалении» программ не вижу такого драйвера, но ветка «HKEY_LOCAL_MACHINESOFTWAREMicrosoftDataAccess» есть.
Не подскажете, где можно однозначно посмотреть — есть драйвер этот или нет.

2. Проверяю права.
Как узнать от имени какого пользователя запускается регламентное задание? Где это настраивается? В журнале регистрации в событии запуска задания строчка «Пользователь» пустая.


1. В ветке реестра — HKEY_CLASSES_ROOT
2. по умолчанию USR1CV82 — это если платформа 8.2, для 8.1 — USR1CV81

Если долго всматриваться в учебник…то в голову может прийти мысль его открыть!


Я обычно просто с сайта microsoft скачиваю Native Client и устанавливаю


Проблема решилась по-другому.
Я создала источник данных ODBC — asui и через него подключилась:

СтрокаСоединения = «Provider=MSDASQL.1;Persist Security Info=False;User ID=ASUI_Test;PWD=Qwerty1!;Data Source=asui;Initial Catalog=Lite»;

Всем спасибо за ответы!


  1. Доброго времени суток!

    Пытаюсь подключиться к БД oracle:

        СтрокаПодключения = "Driver=OraClient11g_home1_32bit;Server=Serv;DataBase=DEMO;Uid=usr;Password=pass;";
        Connection = Новый COMОбъект("ADODB.Connection");
       
        Попытка
            Connection.Open(СтрокаПодключения);
            Сообщить("Подключился");
        Исключение
            Сообщить(ОписаниеОшибки());
            Возврат;
        КонецПопытки;
    

    Получаю ошибку:


  2. nomad_irk

    Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.901
    Симпатии:
    1.035
    Баллы:
    204

  3.     stringConnect1 = "Provider=OraOLEDB.Oracle;Data Source=NameBD;User Id=usr;Password=123;";
    

    Ту же ошибку выдает.


  4. nomad_irk

    Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.901
    Симпатии:
    1.035
    Баллы:
    204

    NameBD — это у вас что?
    Нужно название в файле TNSnames.ora

  5. Имя моей БД. А что должно быть?

    Вот в файле как:

    CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = NameBD)

    — Объединение сообщений, 24 мар 2017

    Правда теперь изменилась ошибка:

    {ВнешняяОбработка.Загрузка.Форма.Форма.Форма(392)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (ADODB.Connection): Provider cannot be found. It may not be properly installed.

  6. nomad_irk

    Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.901
    Симпатии:
    1.035
    Баллы:
    204

    В файле все остальное прописано: IP адрес, порт, имя базы?

    Провайдер именно так называется в списке провайдеров: OraClient11g_home1_32bit?

    Переменные окружения настраивали?

  7. Дело в том, что мне всё настраивал админ.
    Но точно знаю, в файле всё прописано, я посмотрел. Более того мы, успешно, подключались через командную строку. И в списках(клиента) есть все нужные мне БД, в том числе и так к которой я пытаюсь подключиться. Про провайдера затрудняюсь ответить. После того как админ мне клиента поставил я посмотрел в некий файл:
    Но если создать текстовый файл udl.Получим

    upload_2017-3-24_16-4-57.png

    Причём, если кликнуть первый или третий, то выскакивает ошибка, поставщики более не доступны

    — Объединение сообщений, 24 мар 2017

    Но я так понимаю, если я конечно правильно понимаю. В моём первом варианте я использовал не провайдера, а драйвер:

        СтрокаПодключения = "Driver=OraClient11g_home1_32bit;Server=Serv;DataBase=DEMO;Uid=usr;Password=pass;";

    А во втором как раз через провайдера:

     stringConnect1 = "Provider=OraOLEDB.Oracle;Data Source=NameBD;User Id=usr;Password=123;";

  8. TrasserZero

    Offline

    TrasserZero
    Опытный в 1С

    Регистрация:
    26 окт 2016
    Сообщения:
    69
    Симпатии:
    4
    Баллы:
    29

    должен стоять провайдер (оракл-клиент). его можно тупо скопировать в любую папку. скачать можно на сайте оракла. Далее идем в системные переменные среды и там рисуем следующее (корректируя пути, ессно):
    LD_LIBRARY_PATH=C:instantclient_11_2
    ORACLE_HOME=C:instantclient_11_2
    SQL_PATH=C:instantclient_11_2
    TNS_ADMIN=C:instantclient_11_2networkadmin
    Path=;C:instantclient_11_2
    NLS_LANG= american_america.cl8mswin1251

    на стороне базы должен быть настрое листенер (прослушивальщик). ннада знать айпишник сервака и порт (по дефолту 1521). Пихаем эти знания в tnsnames.ora в таком примерно виде:
    имя =
    (DESCRIPTION =
    (ADDRESS =
    (PROTOCOL = TCP)
    (HOST = хх.хх.х.ххх)
    (PORT = 1521)
    )
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = имя)
    )
    )

    как-то так..


  9. Вот всё выше перечисленное мне админ и делал.(


  10. nomad_irk

    Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.901
    Симпатии:
    1.035
    Баллы:
    204

    Переменных сред достаточно:

    ORACLE_HOME=C:instantclient_11_2
    NLS_LANG= RUSSIAN_CIS.CL8MSWIN1251

    Судя по скриншоту со списком установленных ODBC драйверов, нужного нет.

    Строка соединения:

    100% рабочая при условии корректности остальных настроек.

    Список драйверов ODBC при этом:
    upload_2017-3-24_16-54-13.png


  11. nickpugachev

    Offline

    nickpugachev
    Профессионал в 1С
    Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.398
    Симпатии:
    156
    Баллы:
    104

    вот такое работает у нас
    DRIVER={Oracle in OraClient11g_home1};UID=***;PWD=***;DBQ=dbserver.dns.name:1530/DATABASE.dns.name

    это прямое подключение к конкретному серверу

    Клиент оракла нужен той же разрядности что и сервер

  12. И снова, доброго времени суток, коллеги!

    И так. Администратор БД, мне сказал, что технология ODBC надежная, но старая и через неё подключаться не айс. Надо подключаться через Ole провайдера.
    Моя ошибка, что я настраивал провайдеров, драйвера и клиента для Оракла, на машине, где стоит клиент, а директива была &НаСервере. Т.е. всё это надо было поставить на сервер 1С-ки. Что я и сделал. И ура! У меня появился Ole провайдер Оракла:

    upload_2017-3-29_11-40-18.png

    Дальше, добавляем среду «ORACLE_HOME=путь к клиенту» делаем тест:

    upload_2017-3-29_11-44-6.png

    Видим, что тест «Ok». Значит делаем вывод, что на сервере все установлено и настроено верно.

    Строка соединения:

        stringConnect1 = "Provider=OraOLEDB.Oracle;Data Source=DEMO;User Id=login;Password=123;";
    

    И в результате всё равно получаем ошибку:

    P.S.
    Статья которая мне помогла:
    http://info-comp.ru/sisadminst/551-linked-server-oracle-in-ms-sql-server.html
    Может кому пригодится

  13. Через отладчик посмотрел, что строка коннекта какая-то лажа. Делаю так:

    Connection = Новый COMОбъект("ADODB.Connection");
        Connection.ConnectionString  = "Provider=OraOLEDB.Oracle;Data Source=DEMO;User Id=login;Password=123;";  
    

    Т.е. задаю напрямую значение ConnectionString, но в отладчике вижу что ConnectionString =
    Почему провайдер подставляется другой?

    — Объединение сообщений, 29 мар 2017

    Если явно указать:

        Connection.Provider ="OraOLEDB.Oracle";
    

    Получаю ошибку:

    Последнее редактирование: 29 мар 2017

  14. nomad_irk

    Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.901
    Симпатии:
    1.035
    Баллы:
    204

    Вам уже 2 человека написали 100% рабочие строки соединения, которые работают годами, но вы дальше можете экспериментировать…..

  15. Если бы эти строки работали, то я бы наверное не писал бы и не экспериментировал.
    Плюс ко всему я уже писал выше, что админ «КРАЙНЕ» не рекомендует подключаться через ODBC, т.е. как раз через драйвер никак.

  16. Ура заработало!!! Всё было элементарно: надо было не так:

    Connection.Open(ConnectString);
    

    а вот так:

    Connection.ConnectionString =  stringConnect1;
    Connection.Open();

    Чёрт. Наврал и первый вариант работает, ошибка валится если идти пошагово, в отладчике. Почему так я не знаю.

    Последнее редактирование: 29 мар 2017

  17. nickpugachev

    Offline

    nickpugachev
    Профессионал в 1С
    Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.398
    Симпатии:
    156
    Баллы:
    104

    Посоветуйте админу почитать сайт микрософта :)
    Они таки решили уходить от OLEDB
    Либо odbc как универсальная технология доступа и для windows и для linux, либо native библиотеки, что для 1С никак

    На самом деле без разницы как вы будете подключаться, через OLEDB или через ODBC, вы получите одни и те же библиотеки доступа к Oracle, просто через разные прокладки.

  18. Я не думаю, что мне стоит что-то советовать админу. Тем более что после его прихода, в эту компанию, 1С стала хоть более менее нормально работать.
    Человек уже много лет работает админом БД, причём разных и Oracle и MSSQL и др.
    Этот человек оптимизировал работу MSSQL серверов, с БД в довольно больших объемов, а значит я ему склонен доверять.
    Потом, в работе админов, не мне им советовать что и как дело и что читать.


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

  • Произошла исключительная ситуация microsoft word ошибка команды save as
  • Произошла критическая ошибка directx call of duty ww2 unable to find
  • Произошла временная ошибка dns попробуйте обновить страницу код ошибки inet e resource not found
  • Произошла критическая ошибка directx call of duty infinite warfare
  • Произошла внутрисистемная ошибка при установке directx