Ошибка при вызове метода контекста open sql

   Румата

15.09.16 — 13:46

Доброго времени суток. Подскажите почему не получается подключиться к базе SQL по ip адресу.

Если локально, то получается :

ИмяСервераSQL = «TS1985»;

Если пытаюсь по IP обратиться с этого же компьютера на котором установлен SQL, пишет ошибку :

ИмяСервераSQL = «хх.ххх.ххх.хххTS1985»;

Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server не существует, или доступ запрещен.

Порт 1433 админа попросил открыть, он сказал что сделал …

   Господин ПЖ

1 — 15.09.16 — 13:48

у тебя протоколы на sql вырублены

   Господин ПЖ

2 — 15.09.16 — 13:48

   Румата

3 — 15.09.16 — 13:54

(Господин ПЖ) Подскажи пожалуйста как их включить, я не сисадмин (

   Румата

4 — 15.09.16 — 13:58

SQL Server не ожидает на протоколе или порте, который используется для подключения. Средство Server Network Utility на сервере определяет протоколы и TCP/IP-порты, используемые сервером SQL Server, а средство Client Network Utility, имя источника данных (DSN) MDAC или строка подключения – протоколы и порт, используемые клиентом при подключении

Вот это надо сделать ?

   Господин ПЖ

5 — 15.09.16 — 14:02

ну хотя бы посмотреть что включено

может у тебя только named pipe включен

   trad

6 — 15.09.16 — 14:02

на клиенте cliconfg.exe

на сервере svrnetcn.exe

проверь включенные протоколы

   Румата

7 — 15.09.16 — 14:11

cliconfg.exe запустил на сервере, там слева был TCP IP и  named pipe. Переместил TCP IP вправо (включил его).

а svrnetcn.exe не нашел на сервере

   Румата

8 — 15.09.16 — 14:14

операционка на сервере windows server 2012 R2

   Румата

9 — 15.09.16 — 14:16

Попробовал с сервера опять подключиться по IP адресу, ошибка все та же

Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server не существует, или доступ запрещен.

   trad

10 — 15.09.16 — 14:20

(7) почему на сервер то?

на клиенте cliconfg.exe

   Румата

11 — 15.09.16 — 14:22

(trad) Я хочу сначала с самого сервера подключиться по ip адресу.

Вот так подключается ИмяСервераSQL = «TS1985»; (локально)

А вот так ИмяСервераSQL = «хх.ххх.ххх.хххTS1985»; нет

svrnetcn.exe не могу найти, может как-то по другому она называется на Windows server 2012 ?

   Румата

12 — 15.09.16 — 14:29

А порт в строке имени сервера надо указывать ?

ИмяСервераSQL = «127.0.0.1:1433TS1985» ?

   Румата

13 — 15.09.16 — 14:30

Если указал порт, то вот такая ошибка :

Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][ODBC SQL Server Driver][DBNETLIB]Недопустимое соединение

   Румата

14 — 15.09.16 — 14:47

Мужики, помогите )

   Господин ПЖ

15 — 15.09.16 — 15:44

нужно не имя компа, а ql instance name

   Господин ПЖ

16 — 15.09.16 — 15:44

sql

  

Господин ПЖ

17 — 15.09.16 — 15:45

оно может с компом не совпадать

Я
   Румата

15.09.16 — 13:46

Доброго времени суток. Подскажите почему не получается подключиться к базе SQL по ip адресу.

Если локально, то получается :

ИмяСервераSQL = «TS1985»;

Если пытаюсь по IP обратиться с этого же компьютера на котором установлен SQL, пишет ошибку :

ИмяСервераSQL = «хх.ххх.ххх.хххTS1985»;

Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server не существует, или доступ запрещен.

Порт 1433 админа попросил открыть, он сказал что сделал …

   Господин ПЖ

1 — 15.09.16 — 13:48

у тебя протоколы на sql вырублены

   Господин ПЖ

2 — 15.09.16 — 13:48

https://support.microsoft.com/ru-ru/kb/328306

   Румата

3 — 15.09.16 — 13:54

(Господин ПЖ) Подскажи пожалуйста как их включить, я не сисадмин (

   Румата

4 — 15.09.16 — 13:58

SQL Server не ожидает на протоколе или порте, который используется для подключения. Средство Server Network Utility на сервере определяет протоколы и TCP/IP-порты, используемые сервером SQL Server, а средство Client Network Utility, имя источника данных (DSN) MDAC или строка подключения – протоколы и порт, используемые клиентом при подключении

Вот это надо сделать ?

   Господин ПЖ

5 — 15.09.16 — 14:02

ну хотя бы посмотреть что включено

может у тебя только named pipe включен

   trad

6 — 15.09.16 — 14:02

на клиенте cliconfg.exe

на сервере svrnetcn.exe

проверь включенные протоколы

   Румата

7 — 15.09.16 — 14:11

cliconfg.exe запустил на сервере, там слева был TCP IP и  named pipe. Переместил TCP IP вправо (включил его).

а svrnetcn.exe не нашел на сервере

   Румата

8 — 15.09.16 — 14:14

операционка на сервере windows server 2012 R2

   Румата

9 — 15.09.16 — 14:16

Попробовал с сервера опять подключиться по IP адресу, ошибка все та же

Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server не существует, или доступ запрещен.

   trad

10 — 15.09.16 — 14:20

(7) почему на сервер то?

на клиенте cliconfg.exe

   Румата

11 — 15.09.16 — 14:22

(trad) Я хочу сначала с самого сервера подключиться по ip адресу.

Вот так подключается ИмяСервераSQL = «TS1985»; (локально)

А вот так ИмяСервераSQL = «хх.ххх.ххх.хххTS1985»; нет

svrnetcn.exe не могу найти, может как-то по другому она называется на Windows server 2012 ?

   Румата

12 — 15.09.16 — 14:29

А порт в строке имени сервера надо указывать ?

ИмяСервераSQL = «127.0.0.1:1433TS1985» ?

   Румата

13 — 15.09.16 — 14:30

Если указал порт, то вот такая ошибка :

Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][ODBC SQL Server Driver][DBNETLIB]Недопустимое соединение

   Румата

14 — 15.09.16 — 14:47

Мужики, помогите )

   Господин ПЖ

15 — 15.09.16 — 15:44

нужно не имя компа, а ql instance name

   Господин ПЖ

16 — 15.09.16 — 15:44

sql

  

Господин ПЖ

17 — 15.09.16 — 15:45

оно может с компом не совпадать

Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс, 1996 г.

ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.

Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.

После установки новой версии серверной платформы (8.3.10.2375).
После строки кода:

1C
1
Соединение = Новый COMОбъект("ADODB.Connection");

В Соединение.DefaultDatabase лежит вот это:
произошла исключительная ситуация (adodb.connection) операция не допускается если объект закрыт

Старая версия платформы была 8.3.7

Соотвественно дальнейший код:

1C
1
2
3
4
5
6
7
8
9
10
11
12
    Соединение.ConnectionString = СтрокаПодключения; 
    Соединение.ConnectionTimeout = 180;
    Соединение.CursorLocation = 3;
    Попытка
        Соединение.Open();
    Исключение
        Сообщение = Новый СообщениеПользователю;
        Сообщение.Текст = ОписаниеОшибки();
        Сообщение.Сообщить();
        Возврат Неопределено;
    КонецПопытки;
    Возврат Соединение;

Не работает

А при попытке

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

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

Прошу помочь с решением проблемы.

Добавлено через 33 минуты
Проблема была в том что был установлен mysql-connector-odbc-5.3.6-winx64, сменил на mysql-connector-odbc-5.3.6-winx32 и заработало.

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

Здравствуйте!

Ситуация следующая. Имели MS Server 2008 R2, MS SQL 2008, 1С предприятие 8.2 x64 (клиент серверный вариант). Excel 2007. Сервер в домен не входит. В 1С создали регламентное задание которое с ftp загружало в 1С файлы. Все замечательно
работало без ошибок.

Перешли на MS Server 2012. Также перенес  MS SQL 2008, 1С предприятие 8.2 x64 (клиент серверный вариант). Excel 2007. Сервер в домен не входит.  Режим расширенного рабочего стола отключен.  Также добавил служебного пользователя
1с от которого запускаются серверные процессы  usr1cv82 в группу Пользователи DCOM . Регламентные задания стали выполняться с ошибкой.

В ошибках MS увидел:

1) Параметры разрешений application-specific не дают разрешения Local Activation для приложения COM-сервера с CLSID 
{D63B10C5-BB46-4990-A94F-E40B9D520160}
и APPID
{9CA88EE3-ACB7-47C8-AFC4-AB702511C276}
пользователю NT AUTHORITYSYSTEM с ИД безопасности (S-1-5-18) и адресом LocalHost (Using LRPC), выполняемого в контейнере приложения Unavailable с ИД безопасности (Unavailable). Это разрешение безопасности можно изменить с помощью
средства администрирования служб компонентов.

2)  Не удалось установить связь DCOM с компьютером BUH2-PC через какой-либо из настроенных протоколов; запрос от PID 16c3c (C:WindowsSYSTEM32rundll32.exe).

В ошибках 1с увидел:

1) Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Office Excel): Нет доступа к файлу ‘C:base_1ЗаявкиОтработанные19_03_2013_Литвинова.xls’. Это может быть вызвано одной из следующих причин.

• Имени файла или пути не существует.
• Файл используется другой программой.
• Имя книги, которую вы пытаетесь сохранить, совпадает с именем открытой в данный момент книги.

На форумах нашел как можно исправить http://help1c.com/help/view/3921.html

Создать папку C:WindowsSysWOW64configsystemprofileDesktop

Создал, текст ошибки в логах 1с поменялся на

2) Ошибка при вызове метода контекста (Open): Неизвестная ошибка

Помогите решить данные проблемы

Не удалось подключиться к СУБД.

Модераторы: Дмитрий Юхтимовский, Лысиков Денис

Не удалось подключиться к СУБД.

При попытке подключиться к SQL серверу (MS SQL), выдает вот такое сообщение:
{ОбщийМодуль.РаботаССУБД.Модуль(15)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Недопустимый атрибут строки соединения,

а при попытке подключится к сервеу 1С:Предприятие вот такое:
Не удалось подключиться к базе 1С.{ОбщийМодуль.РаботаССервером1С.Модуль(37)}: Ошибка при вызове конструктора (COMОбъект): Класс не зарегистрирован: Класс не зарегистрирован

В чем проблема? В версии платформы? (8.2.17.169)

mixail.brz
 
Сообщений: 4
Зарегистрирован: 31 окт 2013, 08:32

Re: Не удалось подключиться к СУБД.

Сообщение Дмитрий Юхтимовский » 31 окт 2013, 09:20

Ну так по первому пункту — проверьте строку соединения, там где-то ошибка. Даже если эта же строка работает на другом компьютере — для текущего что-то не подходит.

По второму — зайдите на сервере 1С в «панели управления» Windows в «добавление/удаление программ», там выберите сервер 1С Предприятия нужной версии, нажмите «Изменить», и там установите пункт «COM-соединение»
Изображение

Дмитрий Юхтимовский
 
Сообщений: 731
Зарегистрирован: 11 фев 2013, 19:28
Откуда: gilev.ru

Re: Не удалось подключиться к СУБД.

Сообщение mixail.brz » 31 окт 2013, 09:46

Спасибо огромное!
По первому пункту — все дело в пароле :), там содержался символ ; который как я предполагаю и путал строку подключения!
Поменял строку на — СтрокаСоединения = «Provider=SQLOLEDB.1;Password=»»» + Настройка.SQLПароль + «»»;Persist Security Info=True;User ID=» + Настройка.SQLЛогин + «;Initial Catalog=» + Настройка.SQLБаза + «;Data Source=» + Настройка.SQLServer; и все заработало.

По второму пункту все сделал как вы сказали — заработало!

mixail.brz
 
Сообщений: 4
Зарегистрирован: 31 окт 2013, 08:32


Вернуться в SQLSize

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

█ 19.03.2010 11:08

Вот код, которым пытаюсь подключиться

Цитата:

СтрокаСоединения = «DRIVER={MySQL ODBC 3.51 Driver};OPTION=3;DATABASE=UKM_Server;PWD=***;PORT=4567;SERVER=192.168.1.102;UID=****»;
SQL = new COMОбъект(«ADODB.Connection»);
SQL.ConnectionString = СтрокаСоединения;
Попытка SQL.Open() Исключение Сообщить(ОписаниеОшибки());возврат;
КонецПопытки;

Есть сомнения по поводу правильного указания параметров:

DATABASE, PORT

Эти данные беру из УКМ-4 в разделе Администрирование — Сервер

█ 19.03.2010 11:09

При отладке ошибка:

Цитата:

{Форма.Форма(8)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [MySQL][ODBC 3.51 Driver]Can’t connect to MySQL server on ‘192.168.1.102’ (10061)

█ 19.03.2010 11:12

А

Цитата:

telnet 192.168.1.102 4567

получается?

█ 19.03.2010 11:15

Цитата:

OlegON ➤ А получается?

О, это из командной строки?

█ 19.03.2010 11:16

На telnet ругается, не удалось подключиться.

Хм, где посмотреть имя базы и порт на УКМ-4?

█ 19.03.2010 11:17

Да, самый простой и надежный способ попробовать подключиться на удаленный порт — протелнетить его. Заодно и скажет, что за ошибка. Порт, кстати, нестандартный, я не знаю, какой он у УКМа, но по умолчанию у мускула 3306

█ 19.03.2010 11:18

Зайди на сервер с базой и скажи

еще не вариант, что у тебя настроены удаленные подключения к базе.

█ 19.03.2010 11:23

Цитата:

OlegON ➤ Зайди на сервер с базой и скажи
еще не вариант, что у тебя настроены удаленные подключения к базе.

netstat -a выдал список активных подключений их там масса. Что дает эта инфорация?

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

█ 19.03.2010 11:25

поменял порт на 3306. Теперь выдает

Цитата:

{Форма.Форма(8)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [MySQL][ODBC 3.51 Driver]Access denied for user ‘expert’@’WINXPSP3-PC’ (using password: YES)

█ 19.03.2010 11:28

Кстати на telnet 192.168.1.102 3306 выдает абрукадабру, потом пауза и подключение утеряно

Часовой пояс GMT +3, время: 12:57.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.

Доброго времени суток. Подскажите почему не получается подключиться к базе SQL по ip адресу. Если локально, то получается : Если пытаюсь по IP обратиться с этого же компьютера на котором установлен SQL, пишет ошибку : Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server не существует, или доступ запрещен. Порт 1433 админа попросил открыть, он сказал что сделал …

у тебя протоколы на sql вырублены

(Господин ПЖ) Подскажи пожалуйста как их включить, я не сисадмин (

SQL Server не ожидает на протоколе или порте, который используется для подключения. Средство Server Network Utility на сервере определяет протоколы и TCP/IP-порты, используемые сервером SQL Server, а средство Client Network Utility, имя источника данных (DSN) MDAC или строка подключения – протоколы и порт, используемые клиентом при подключении Вот это надо сделать ?

ну хотя бы посмотреть что включено может у тебя только named pipe включен

на клиенте cliconfg.exe на сервере svrnetcn.exe проверь включенные протоколы

cliconfg.exe запустил на сервере, там слева был TCP IP и  named pipe. Переместил TCP IP вправо (включил его). а svrnetcn.exe не нашел на сервере

операционка на сервере windows server 2012 R2

Попробовал с сервера опять подключиться по IP адресу, ошибка все та же Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server не существует, или доступ запрещен.

(trad) Я хочу сначала с самого сервера подключиться по ip адресу. Вот так подключается ИмяСервераSQL = «TS1985»; (локально) А вот так ИмяСервераSQL = «хх.ххх.ххх.хххTS1985»; нет svrnetcn.exe не могу найти, может как-то по другому она называется на Windows server 2012 ?

А порт в строке имени сервера надо указывать ? ИмяСервераSQL = «127.0.0.1:1433TS1985» ?

Если указал порт, то вот такая ошибка : Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][ODBC SQL Server Driver][DBNETLIB]Недопустимое соединение

нужно не имя компа, а ql instance name

оно может с компом не совпадать

Тэги:

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

В статье описывает практический пример того, как в коде 1С 8 реализовать подключение к MS SQL на другом сервере (рабочем месте) из удаленного рабочего стола Linux не только для чтения данных в базе СУБД, но и для добавления таблиц, создания/изменения записей таблиц.

Нажатие на изображении увеличит его
подключение к MS SQL из 1С 8.3 под Debian
Рис. 1. Пример конфигурации СУБД MS SQL Server, к которой настраивалось подключение из 1С 8.

В рамках практической задачи возникла необходимость работать из 1С 8.3, размещенной в Linux Debian, с данными которые хранятся на стороннем сервере с СУБД MS SQL Server.

Можно в принципе ограничиться информацией, если необходимо только читать, считывать, получать информацию по данным базы на MS SQL в 1С 8 посредством использования объекта конфигурации внешний источник данных: внешние источники данных 1с linux на windorez.ru

Но если задача заключается в том, чтобы изменять данные таблиц, создавать их в базе в MS SQL, то подключение должно производиться по-другому. 

Во-первых, должны быть установлены соответствующие компоненты на самом сервере (по данным информации с сайта pikabu «Работа с данными на MS SQL из 1С 8.3 под Debian«):

Нажатие на изображении увеличит его
как настроить подключение к MS SQL из 1С 8.3 под Debian, руководство, инструкция
Рис. 2. Руководство, инструкция, рекомендации по настройке на рабочем месте
для создания соединения между 1С 8 на Debian и MS SQL

Далее важно правильно написать строку подключения. Благодаря обсуждению на форуме forum.mista.ru «Linux: подключение 1С 8 к базе MySQL» и «Подключение к внешним источникам данных из 1С (ODBC)» с сайта gee12.space —  был подобрано следующее решение:

Нажатие на изображении увеличит его

Рис. 3. Пакет SDK средств для связи клиента SQL.

Таким образом код, выполняющий подключение из 1С из под Linux Debian к MS SQL с помощью ODBC будет выглядеть примерно так:

ПараметрыСоединения = Новый ПараметрыСоединенияВнешнегоИсточникаДанных;
ПараметрыСоединения.СтрокаСоединения = «
|DRIVER={MySQL ODBC 5.1 Driver};
|SERVER=192.168.1.10;
|DATABASE=bitrix;
|UID=root;
|PWD=dbpassword;»;
ВнешниеИсточникиДанных.Сайт.УстановитьОбщиеПараметрыСоединения(ПараметрыСоединения);
ВнешниеИсточникиДанных.Сайт.УстановитьСоединение();

Последняя ссылка содержит переходы на развернутое описание процесса как «Настройка доступа к Microsoft SQL Server через ODBC» так и «Запись во внешний источник данных из 1С 8.3 используя хранимые процедуры MS SQL Server»

Важно, чтобы было установлено на удаленном сервере (Linux).
• ODBC
• FreeTDS — это набор библиотек которые позволяют работать с MS SQL и Sybase.

Рабочей оказалась строка подключения с актуальным свойством «Provider»:

SQL = Новый COMОбъект(«ADODB.Connection»);
SQL.Provider = «SQLOLEDB»;
СтрокаСоединения = «Data Source=[адрес_сервера,порт]; // или IP сервера
|Initial Catalog=[имя_базы];
|User ID=[пользователь_sql]; // по умолчанию «sa»
|Password=[пароль_sql];»;
SQL.Open(СтрокаСоединения);

тогда на примере с произвольными данными код строки соединения будет содержать «Provider = «SQLOLEDB»»:

Data Source=111.111.111.111,4444;  — адрес сервера или его IP с портом через «,»;
Initial Catalog=1C;  — имя базы на сервере MS SQL;
User ID=sa; — имя пользователя с достаточными правами для подключения и чтения/изменения данных MS SQL;
Password=passSQL;

Параметры строки подключения разделяются между собой с помощью «;».

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

обработки для тестирования соединения из 1С 8 с MS SQL Server под Linux Debian
Рис. 3. Внешний вид обработки для тестирования соединения из 1С 8 с MS SQL Server.

Небольшое стороннее замечание. На этом рисунке можно заметить, что закомментирована строка «SQL.Provider = «SQLEXPRESS»;» — которая отвечает за подключение к СУБД MS SQL Express. При переборе свойств «Provider» за основу исходно был использован код подключения к указанной СУБД, но он оказался не подходящим в данной задаче. Как в коде организовать подключение из 1С 8 для считывания данных из СУБД MS SQL Express ссылка на инструкцию будет представлена ниже.

А пока вернемся к текущей задаче:

Пример обработки (ссылка для скачивания) тестирования соединения, подключения к SQL из интерфейса 1С 8 приложен ниже. После открытия обработки необходимо заменить параметры в поле ввода. По кнопке «Тест подключения» выполняется тест. Если успешно, то будет выведено сообщение «Открытие выполнено успешно». Если возникнут проблемы и ошибки при попытке соединения с SQL из 1С при выполнении метода Open(), то будет выведено сообщение «Строка соединения: » с продолжением — указанием ошибки, которая должна позволить идентифицировать проблему, как например, на скриншоте — проблема в указании имени базы.

Скачать файл обработки
 

Так, например, на практике столкнулся с тем, что мне предоставили данные для строки соединения, я их копировал, вставлял, но получал ошибку, приведенную ниже на рис.4. Как оказалось в результате долгих разбирательств —  строке соединения для «Initial Catalog=» при предоставлении была использована русская буква «С» вместо английской «C» (очень странно, хотя мне данные подключения предоставлял технический специалист, а не какой-то простой пользователь).

Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Не удается открыть базу данных «1С», запрашиваемую именем входа. Не удалось выполнить вход.


Рис. 4. Ошибка, возникающая при попытке подключения к MS SQL из 1С 8 из-за русских символов в названии базы.

Можно было бы подумать, что «Port» можно выделить отдельно. Но это не будет работать. Будет возникать ошибка. Которая приведена ниже и на рис. 5.

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


Рис. 5. Ошибка возникающая при попытке подключения из 1С 8 к MS SQL в Linux,
если порт указан отдельным параметром строки соединения.

На рис. 3. читатель мог заметить, что закомментирован «Provider = «SQLEXPRESS»». Это частный случай практического подключения к базе MS SQL Express из 1С описан в другой статье. 

Оцените, оказалась ли эта публикация полезна для Вас?




© www.azhur-c.ru 2013-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.

23-02-2023

Журавлев А.С.
(Сайт azhur-c.ru)

Назад

Студворк — интернет-сервис помощи студентам

Добрый день, всем.
Буду признателен за советы, мысли, как решить неожиданно возникшую проблему с 1С 8.3. Имеем 1С 8.3.5.15.17, через MSSQL2008, MSOffice 2007. Всё лицензионное.
Недавно перешли с 8.2 на 8.3 . До переход использовалась специальная процедура: записать в file MSAccess2007 некоторую информацию, выглядело это так:

1C
1
2
3
4
5
6
7
8
9
10
    СтрокаПодключения="Provider=Microsoft.Ace.OLEDB.12.0;Data Source=E:MyDBMyFile.accDB;Persist Security Info=False;";
    Connection=Новый ComObject("ADODB.Connection");
    // Подключение
    Попытка
        Connection.Open(СтрокаПодключения);
    Исключение
        Сообщить("Ошибка подключения к Access: " + ОписаниеОшибки());
        Вовзрат;
    КонецПопытки;
    // работаем с accDB

И всё работало на ура без всяких проблем.
После перехода на 8.3 столкнулся с проблемою, что Open не даёт соединения — просто упорно выдаёт ошибку.

Ошибка подключения к Access: {ОбщийМодуль.АС_ОСЧ.Модуль(212)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Office Access Database Engine): ‘E:MyDBMyFile.accDB’ is not a valid path. Make sure that the path name is spelled correctly and that you are connected to the server on which the file resides.

Ошибки на создания ComObject нет. Появляется на любой машине с любыми правами.
Естественно (для тестов) диск Е взят локальный (не сетевой) к базе вообще (MyFile.accDB) вообще никто не подключен; запускается от имени администратора — т.е. все полные права. Если взять запустить через WIndows->RUN «E:MyDBMyFile.accDB», то всё открывается, всё видно. Для тестов вообщен сделал E:MyDBMyFile.accDB как простой file без каких-либо ограничений.
Пробовал совершенно разные варианты команды «СтрокаПодключения» в различных исполнениях — ничего, всё в одном и том же: не открвает accDB никак.
Пробовал установить с Microsoft’а «AccessDatabaseEngine» — не помогает.

Самое интересное… При этом код

1C
1
2
3
4
5
6
7
8
9
10
11
12
    СтрокаПодключения="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=e:MyDBbook1.xlsx;Extended Properties=Excel 12.0;";
    // создание соединения
        Connection=Новый ComObject("ADODB.Connection");
    // Подключение
    Попытка
        Connection.Open(СтрокаПодключения);
    Исключение
        Возврат
        Сообщить("Ошибка подключения к EXCEL: " + ОписаниеОшибки());
        Возврат
    КонецПопытки;
    сообщить("УСПЕШНО EXCEL");

работает успешно.

Большое спасибо за комментарии.

Содержание:

1.       Формирование объекта ADOdb.Connection

2.       Отправка команды серверу

3.       Получение и обработка результата работы команды

В данной статье будет рассмотрено взаимодействие 1С и ADOdb. Но вначале вкратце опишем, что из себя представляет ADOdb. Итак, ADOdb – это библиотека-функция для программного обеспечения, которая создает прикладной интерфейс для способа доступа к базам данных таких языков, как Python и PHP. Данная библиотека даёт разработчику инструменты, которые позволяют делать приложения не программируя каждый возможный тип источника данных. Также используя ADOdb, программист 1С получает возможность перемены в СУБД (Система управления базами данных), не внося исправлений в главную часть кода.

ADOdb может применяться совместно с системами 1С, например, для получения доступа к таблицам в базе данных 1С при помощи методов ADO. Методы ADO и SQL-DMO разрешают исполнять командование доступом и модификацию данных при помощи функций T-SQL (расширение SQL). В обоих случаях порядок действий будет одинаковым. Рассмотрим же его подробнее!  


1.     Формирование объекта ADOdb.Connection

формирование объекта в ADOdb.Connection

Формирование объекта ADOdb.Connection

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

2.     Отправка команды серверу

Для того чтобы сформировать команду, необходимо создать объект ADOdb.Command, после чего привязываем его к нынешнему соединению:

Привязка объекта ADOdb.Connection к соединению

Привязка объекта ADOdb.Connection к соединению

Далее задаётся непосредственно команда:

 ADOdb.Connection тип команды

Команда для объекта ADOdb.Connection

Текст в команде – это некий оператор из T-SQL или имя процедуры из нашей базы данных.

Чтобы работа программы стала быстрее? можно отметить для объекта ADOdb тип команды (функция «ТипКомандыАдо()»).

Как отметить для объекта ADOdb.Connection тип команды

Как отметить для объекта ADOdb.Connection тип команды

Примечание: по внутренним настройкам при создании объекта ADOdb.Command стоит тип adCmdUnknow.

Тип команды по умолчанию для объекта ADOdb.Connection

В случае, когда используем процедуру с параметрами, которую храним – нужно внести их в собрание «Parameters» в объекте ADOdb.Command. Создание параметров происходит через функцию CreateParameter в объекте ADOdb.Command:

«CreateParamerer (Name, Value Type, Param type, Param Value)», где:

·        Name – название параметра (точно так же, как указано в процедуре, в которой он хранится);

·        Value Type – значение параметра по типу, определяем при помощи КонстантаАДО();

·        Param Type – тип в параметре («Output» или «Input»), определяем при помощи функции ТипПарамедраАДО();

·        Param Value – само значение.

создание в объекте ADOdb.Command

Создание параметров в объекте ADOdb.Command

Функция CreateParameter в объекте ADOdb.Command

Функция CreateParameter в объекте ADOdb.Command

работа в ADOdb.Command

Пример создания параметров в объекте ADOdb.Command

Для того чтобы передать параметры в процедуру для хранения, нужно сделать описание каждого параметра в том же порядке, как они записаны в процедуре, где хранятся.

Примечание: параметры с типом Numeric нужно будет конвертировать в строки, а только потом передавать.  

3.     Получение и обработка результата работы команды

Можно вывести результаты двумя способами:

·        как набор с данными, который возвращаем функцией «Execute» из объекта ADOdb.Command;

·        как обособленные значения, которые можно передать из той процедуры, где они хранятся, по параметрам с типом OUTPUT.

Выведение результатов работы ADOdb.Command

Выведение результатов работы ADOdb.Command

Стоит обратить внимание, что параметры нумеруются начиная со значения «0». Параметры можно использовать ещё раз, если присвоить им значения через опцию Value.

Конечный набор с записями сможет проходить обработку с начала и до конца цикла и будет обращаться к полям по их названиям. Например:

Обработка набора с начала и до конца года

Обработка набора с начала и до конца года

Когда записи стали не нужными, закрываем их с помощью Rs.Close.

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

Специалист компании «Кодерлайн»

Айдар Фархутдинов

  • Ошибка при вызове метода контекста initialize
  • Ошибка при вызове метода контекста getcellrangebyposition
  • Ошибка при вызове метода контекста execute слишком длинный строковый параметр
  • Ошибка при вызове метода контекста execute произошла исключительная ситуация 0x80020005
  • Ошибка при вызове метода контекста createobject