|
v7: Подключиться к SQL базе | ☑ | ||
---|---|---|---|---|
0
Slypower
26.03.20
✎
15:30
|
Доброго дня.
Есть сторонняя база скуля, 1с. Лежит в папке расшаренной по сети. На компах установлен sql 2008. Нужно вытягивать данные оттуда в 1с. Пытаюсь способами как описано здесь: https://helpf.pro/faq7/view/348.html, DB = СоздатьОбъект("ODBCDatabase"); DB.Соединение("DRIVER={MySQL ODBC 5.1 Driver}; SERVER=IP_Супер_мега_сервера; DATABASE=Мега_база; USER=Супер_юзер; PASSWORD=пароль_супер_мега_юзера; OPTION=3;"); RS = СоздатьОбъект("ODBCRecordSet"); RS.SetDatabase(DB); Если RS.Выполнить("set names cp1251") = 0 Тогда Сообщить("Ошибка подключения к MySQL" + РазделительСтрок + RS.ПолучитьОписаниеОшибки()); СтатусВозврата(0); Возврат; КонецЕсли; но выдает ошибку: "[Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию" Вопрос. правильно ли я делаю? Что имеется: путь к базе, сама база, логин и пароль к пользователя виндовс компа. Какие параметры мне еще нужны? Спасибо. |
|||
1
Djelf
26.03.20
✎
15:43
|
(0) Оригинальная попытка решения... "установлен sql 2008", а подключение через драйвер "MySQL"?
MSSQL <> MySQL |
|||
2
Slypower
26.03.20
✎
15:52
|
Так, полагаю,: DRIVER={SQL Server}? А версию нужно указывать?
|
|||
3
Slypower
26.03.20
✎
15:54
|
А с другой стороны, вот пример, как у меня: https://forum.infostart.ru/forum9/topic158940/
Тема: Подключение MS SQL базе из 1С и запрос данных. Решение такое же: Соединение = Новый COMОбъект("ADODB.Connection"); Драйвер="{SQL Server}";// Сервер="ip";//"DRIVER={MySQL ODBC 3.51 Driver};SERVER=ip;UID=УИД;pwd=пароль;DATABASE=имяБД;TABLE=имяТаблицы;" Юзер="Пользователь"; Пароль=""; БД="ИмяБД"; Таблица="ИмяТаблицы1"; ТаблицаРасширенная="ИмяТаблицы2"; //Новый Драйвер важно чтобы был на 32-битах ConnectionString="DRIVER={MySQL ODBC 3.51 Driver};SERVER=ip;UID=УИД;pwd=пароль;DATABASE=имяБД;TABLE=имяТаблицы;"; //"DRIVER="+Драйвер+";SERVER="+Сервер+";UID="+Юзер+";pwd="+Пароль+";DATABASE="+БД+";";// Соединение.CursorLocation=3; |
|||
4
Djelf
26.03.20
✎
17:44
|
Пример, это всего лишь пример. Он не должен и не обязан работать ;)
Тут: https://www.connectionstrings.com есть все варианты подключений. |
|||
5
HawkEye
26.03.20
✎
18:02
|
(0) лови кусок из продакшена
ТекстЗапроса = "Select InformationBaseName, | MetadataName, | convert(varchar, [Time], 112) AS Date, | Cast (Max(Speed)/1000.0 as char(10)) as ""MAX"", | Cast (MIN(Speed)/1000.0 as char(10)) as ""MIN"", | COUNT(Speed) as ""Cnt"", | Cast (AVG(Speed)/1000.0 as char(10)) as ""AVG"", | SUM(case when Speed > 5000 and Speed <10000 then 1 else 0 end) as cnt5_10, | SUM(case when Speed > 10000 then 1 else 0 end) as cnt10 | From [Alpha_Auto_FileStore].[dbo].[Monitoring_Proizvoditelnosti] | Where Time >= '" + НачалоПериода + "' AND Time <= '" + КонецПериода + "' | and Speed >= 0 | and Speed < 60000 | group by InformationBaseName, MetadataName, convert(varchar, [Time], 112) | ORDER BY InformationBaseName, avg desc"; Connection = СоздатьОбъект("ADODB.Connection"); ConnectionString = "Provider=SQLOLEDB;Driver={SQL Server}; Deleted=No; Data Source = sql6chelny.tts.org;Trusted_Connection=yes;"; Connection.ConnectionTimeOut = 50; Connection.Open(ConnectionString); ADODBCommand = СоздатьОбъект("ADODB.Command"); ADODBCommand.ActiveConnection = Connection; ADODBCommand.CommandText = ТекстЗапроса; Рекордсет = СоздатьОбъект("ADODB.RecordSet"); Попытка Состояние("Выполнение запроса..."); Рекордсет = ADODBCommand.Execute; Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; //Для Инд = 0 по Рекордсет.Fields.Count - 1 Цикл // Сообщить(Рекордсет.Fields.Item(Инд).Name); итог //КонецЦикла; Попытка Рекордсет.MoveFirst(); Исключение Сообщить("Нет записей на дату: " + НачалоПериода); Возврат; КонецПопытки; //Рекордсет.Open(); Пока Рекордсет.EOF()=0 цикл ИмяДокумента = Рекордсет.Fields("MetadataName").Value; ИмяБазы = Рекордсет.Fields("InformationBaseName").Value; |
|||
6
Slypower
30.03.20
✎
08:37
|
(5) а есть где прочитать про ADODB.Connection? Хотелось бы по параметрам понять
|
|||
7
ДенисЧ
30.03.20
✎
08:38
|
(6) НА MSDN, разумеется.
|
|||
8
Slypower
30.03.20
✎
12:56
|
Почему тогда отличается строка подключения на MSDN и в примере?
"Provider='SQLOLEDB';Data Source='MySqlServer'; Initial Catalog='Northwind';Integrated Security='SSPI';" против "Provider=SQLOLEDB;Driver={SQL Server}; Deleted=No; Data Source = sql6chelny.tts.org;Trusted_Connection=yes;"; |
|||
9
ДенисЧ
30.03.20
✎
13:03
|
Data Source='MySqlServer'
против Driver={SQL Server} Ничего, что это подключения к разным серверам? Первый - к мусклю, второй к мсскл |
|||
10
ДенисЧ
30.03.20
✎
13:03
|
||||
11
Sserj
30.03.20
✎
13:32
|
(0) Вообще то правильнее использовать ПрисоединитьИБ(), в таком случае при выполнении запросов парсер будет работать с метаданными
этой сторонней базы: DB = СоздатьОбъект("ODBCDataBase"); DB.ПрисоединитьИБ("\\server\КаталогИБ\", Пользователь1С, Проль1С); RS= СоздатьОбъект("ODBCRecordset"); RS.УстБД(DB); Результат = RS.ВыполнитьИнструкцию(ТекстЗапроса); |
|||
12
Slypower
30.03.20
✎
15:47
|
(11) вторая база не 1с-овская, я понимаю, ее не присоединить так
|
|||
13
Slypower
30.03.20
✎
16:17
|
(10) тогда вопрос, чем лучше подключаться к файлу .mdf? И нужно еще какие доп драйвера устанавливать, например, Драйвер Microsoft ODBC, и ставить его в по умолчанию?
|
|||
14
acht
30.03.20
✎
16:27
|
(13) Без MSSQL сервера ты этот файл не прочитаешь. Делегируй задачу тому, кто разбирается.
|
|||
15
Slypower
30.03.20
✎
17:09
|
(14) так у меня интерес есть разобраться. Скуль стоит и с компа, с которого идет запрос, и там, где хочу прочитать данные, 2008. На дальнем компе нет sql managementa, но он и не нужен. Есть база, мне нужно прочитать данные.
|
|||
16
Djelf
30.03.20
✎
18:17
|
(15) И что? До сих пор не смог подключится? За 4 дня? оО
Ну... это только для Оракла такое возможно, у него долбанутые провайдеры, но для MSSQL, как то чудно... Элементарные же строки подключения, вот тебе 3, через разные провайдеры к MSSQL (выдернутые из http://devtool1c.ucoz.ru). Provider=SQLOLEDB; Data Source="!БазаСервер!"; Initial Catalog="!БазаИмя!"; User Id="!Пользователь!"; Password="!Пароль!"; Driver={SQL Server}; Server=!БазаСервер!; DataBase=!БазаИмя!; UID="!Пользователь!"; PWD="!Пароль!"; Provider=SQLNCLI10; Server=!БазаСервер!; DataBase=!БазаИмя!; UID="!Пользователь!"; PWD="!Пароль!"; Кавычки "могут" быть значимы!!! |
|||
17
Slypower
30.03.20
✎
19:08
|
(16) я за эти 4 дня пробовал только в сумме 30 минут и плюс 30 на чтение. Это я пока на досуге иногда пробую))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |