Ошибка не удается найти указанного поставщика

Hi it is my first time that I publish a project deveolped with entity framework in a remote server. The pages work fine but when I try to access in my reserved area and so, reading a dabatase, I obtain this error

Unable to find the requested .Net Framework Data Provider. It may not be installed.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.ArgumentException: Unable to find the requested .Net Framework Data Provider. It may not be installed.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:

[ArgumentException: Unable to find the requested .Net Framework Data
Provider. It may not be installed.]
System.Data.Common.DbProviderFactories.GetFactory(String
providerInvariantName) +1402071
System.Data.EntityClient.EntityConnection.GetFactory(String
providerString) +35

[ArgumentException: The specified store provider cannot be found in
the configuration, or is not valid.]
System.Data.EntityClient.EntityConnection.GetFactory(String
providerString) +62
System.Data.EntityClient.EntityConnection.ChangeConnectionString(String
newConnectionString) +263
System.Data.EntityClient.EntityConnection..ctor(String
connectionString) +81
System.Data.Objects.ObjectContext.CreateEntityConnection(String
connectionString) +42
System.Data.Objects.ObjectContext..ctor(String connectionString,
String defaultContainerName) +16
shield_trust.db_shieldtrustEntities..ctor() in
D:trust-companyshield_trustshield_trustPOCO.Context.cs:23
shield_trust.user_login.check_login() in
D:trust-companyshield_trustshield_trustuser_login.aspx.cs:65
shield_trust.user_login.entraButton_Click(Object sender, EventArgs e)
in D:trust-companyshield_trustshield_trustuser_login.aspx.cs:25
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +118
System.Web.UI.WebControls.Button.RaisePostBackEvent(String
eventArgument) +112
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String
eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler
sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
+36 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
+5563

I have to copy some dll into my bin folder or modify my web.config?

asked Jan 16, 2014 at 8:48

P_R's user avatar

1

Try running this to get a list of installed providers, and check yours is there:

// This example assumes a reference to System.Data.Common.
static DataTable GetProviderFactoryClasses()
{
    // Retrieve the installed providers and factories.
    DataTable table = DbProviderFactories.GetFactoryClasses();

    // Display each row and column value.
    foreach (DataRow row in table.Rows)
    {
        foreach (DataColumn column in table.Columns)
        {
            Console.WriteLine(row[column]);
        }
    }
    return table;
}

UPDATE: You need to have the MySQL Provider installed on the target machine, it’s called something like «MySQL Connector Net x.x.x» Which you can get from this website

Update 09/06/2022: As this is still looked at for an answer I thought I would just point out that Nuget packages are almost an industry standard, and as such, for newer non-legacy applications I would recommend looking at the MySqlConnector Nuget package which is currently supported, and had an update as recently as 6/5/2022, See mysqlconnector.net for more information.

answered Jan 16, 2014 at 9:12

Paul Zahra's user avatar

Paul ZahraPaul Zahra

9,5008 gold badges52 silver badges75 bronze badges

16

With our applications (ASP.NET, Test, Windows Service), we’ve had to add the below to our app.config or web.config files (inside the configuration node) to make this work:

<system.data>
        <DbProviderFactories>
            <remove invariant="MySql.Data.MySqlClient" />
            <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
        </DbProviderFactories>
    </system.data>

answered Oct 23, 2014 at 22:19

udog's user avatar

udogudog

1,4902 gold badges17 silver badges30 bronze badges

1

If you receive a dialog as follows…

«Unable to Find the Requested .NET Framework Data Provider. It may Not be Installed»

Look in the machine.config files in the following locations…

C:WindowsMicrosoft.NETFrameworkv4.0.30319Config
C:WindowsMicrosoft.NETFramework64v4.0.30319Config

Remove any empty

"DbProviderFactories" nodes.

answered Nov 9, 2015 at 14:36

Thomas's user avatar

ThomasThomas

511 silver badge1 bronze badge

1

For us it was 32 vs. 64 bit process.
The server is 64 bit.
The ODP.NET (Oracle Client) installed is also 64 bit.
Our application compiled with the Target platform «Any CPU» and «Prefer 32-bit» flag SET:

http://grab.by/v5ki

was running as 32 bit process.
Once recompiled with the flag un-checked everything started to work.

answered Mar 12, 2014 at 18:54

Greg Z.'s user avatar

Greg Z.Greg Z.

1,32614 silver badges17 bronze badges

I know this is old but as explained by udog this section of the error message «The specified store provider cannot be found in the configuration, or is not valid» indicates what the issue is. So depending on the backend database add the provider information to the config file. If already added make sure it is correct. For oracle if using the managed provider for EF and oracle.DataAccess it will look something like this. Note your oracle dll version might be different.

<system.data>
   <DbProviderFactories>
       <remove invariant="Oracle.MaanagedDataAccess.Client"/>
       <add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>  
   <add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client" description="Oracle Data Provider for .NET" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
   </DbProviderFactories>
</system.data>

answered Sep 24, 2015 at 22:31

BunmiO's user avatar

1

Embarrassingly, I spent three days trying to solve this error. I had an incorrect «providerName» property on my «connectionString»

Changed from:

<configuration>
    <connectionStrings>
        <add name="Old" connectionString="Server=servername;Database=databasename;Uid=userid;Pwd=password;" providerName="System.Data.MySqlClient" />
    </connectionStrings>
</configuration>

to:

<configuration>
    <connectionStrings>
        <add name="Old" connectionString="Server=servername;Database=databasename;Uid=userid;Pwd=password;" providerName="MySql.Data.MySqlClient" />
    </connectionStrings>
</configuration>

I had specified System.Data.MySqlClient instead of Mysql.Data.MySqlClient

d’oh!

answered Jul 10, 2017 at 15:39

birwin's user avatar

birwinbirwin

2,4542 gold badges21 silver badges41 bronze badges

1

When connecting to a database a so called ‘data provider’ is used for the abstraction of implementations.

Your exception seems to say that the given dataprovider is not present on the target machine. Which database do you use in your deployed environment? Check your web.config connectionstring for specifics.

You might have to install the given dataprovider yourself on that machine (one time) so it is available from the Global Assembly Cache (GAC).

answered Jan 16, 2014 at 9:03

Mark van Straten's user avatar

Mark van StratenMark van Straten

9,2593 gold badges38 silver badges57 bronze badges

1

The statement added to in Web.config helped me.

<system.data>
        <DbProviderFactories>
            <clear />
            <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
        </DbProviderFactories>
    </system.data>

answered Aug 1, 2019 at 19:29

Chelovek Kemerovo's user avatar

To build further on udog’s answer, if you are going to have multiple applications on the server using this data provider, then it probably makes more sense to add it to the machine.config file.

As Thomas notes, the machine.config files are located here:

C:WindowsMicrosoft.NETFrameworkv4.0.30319Config
C:WindowsMicrosoft.NETFramework64v4.0.30319Config

The machine.config entry is like the web.config entry:

<system.data>
    <DbProviderFactories>
        <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>
</system.data>

Note: If you have your application on multiple servers (e.g. QA/test server and a production server) and you are only getting this error on one of them, I would recommend doing a file dif between the machine.config files to see if there is a difference between the servers.

answered Mar 21, 2016 at 19:38

Tony L.'s user avatar

Tony L.Tony L.

17.3k8 gold badges68 silver badges65 bronze badges

I ran into same error while I was trying to install a stand alone tools on my personal PC. I did the following steps.NET framework 2.0 and 3.0).NET Framework 4.7 Advanced services was re installed but doesn’t fix the problem, before I finally used this simple fix procedure.
Download and install SSCERuntime_x64-ENU.exe
Follow this link to download https://www.microsoft.com/en-us/download/details.aspx?id=30709
Good luck.

answered Feb 12, 2019 at 15:33

Peters's user avatar

Attribute VB_Name = «NewMacros»

Sub REPORT_FOR_COUNTING()
Dim Conn As New ADODB.Connection, Cmd As ADODB.Command, rsOra As ADODB.Recordset
Conn.Open «PROVIDER=OraOLEDB.Oracle.1;DATA SOURCE=SVBO;USER ID=ADMIN_ILLARION;PASSWORD=M1l2w3»
Set Cmd = New ADODB.Command
Cmd.ActiveConnection = Conn
Cmd.CommandType = adCmdText
Set rsOra = New ADODB.Recordset
rsOra.CursorLocation = adUseServer

rsOra.Open «select POS_COUNT from REPORT_FOR_COUNTING where INST_ID=’9001′», Conn, adOpenForwardOnly
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = «ГаграПос»
.Replacement.Text = rsOra.Fields.Item(0).Value
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
Selection.TypeText Text:=rsOra.Fields.Item(0).Value
rsOra.Close

End Sub

  • Remove From My Forums

 locked

Ошибка подключения БД (не удается найти запрошенного поставщика данных)

  • Вопрос

  • Здравствуйте.
    Начал изучение C#. Делаю пример из учебника: создаю и добавляю к проекту чистую базу данных SQL (Local Database — sdf), используется источник данных Microsoft SQL Server Compact 3.5. При открытии sdf-файла из Обозревателя решений либо при подключении БД из
    Обозревателя баз данных выскакивает ошибка: «Не удалось найти запрошенного поставщика данных .Net Framework. Возможно он не установлен«

    На компьютере: ОС Win7 Домашняя Базовая SP1, студия Microsoft Visual Studio 2010 Express SP1, установлены .Net Framework 4.0 Client Profile, 4.0 Extended, 4.0 Multi-Targeting Pack, MS SQL Server Compact 3.5 SP1,SP2, 4.0, MS SQL Server 2008, 2012 Express.

    При закрытии и повторном открытии проекта в студии и попытке открыть файл .sdf из Обозревателя решений также появляется ошибка «В файле конфигурации может быть только один раздел «DbProviderFactories»

    Я начинающий, потому не могу разобраться в причине. Прошу, помогите решить проблему.

    • Изменено

      12 августа 2012 г. 15:56

Ответы

  • Переустановил ОС, студию С# 2010 Express SP1, Microsoft SQL Server Compact 3.5 SP2, Microsoft SQL Server 2012 Express — все заработало. Переустановка только  Microsoft SQL Server Compact 3.5 SP2 и студии не помогала.

    • Помечено в качестве ответа
      Silver.prm
      6 сентября 2012 г. 4:34

Перейти к контенту

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

Ранее работало, что-то изменилось в компе, уже не припомню .. Что пробовал:

1. разные строки подключения —

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

    СтрокаПодключения = «Provider=Microsoft.Jet.OLEDB.4.0; Data Source = » + Файл +

        «; Extended Properties = «»Excel $ver$.0;HDR=YES;IMEX=1″»;»;

    СтрокаПодключения12 = «Provider=Microsoft.Jet.OLEDB.4.0; Data Source = » + Файл +

        «; Extended Properties=»»Excel 12.0 Xml;HDR=YES;IMEX=1″»;»;

      СтрокаПодключенияACE = «Provider=Microsoft.ACE.OLEDB.12.0;Data Source= » + Файл +

        «;Extended Properties=»»Excel 12.0;HDR=YES;IMEX=1;»»»;        

    

    Попытка

        Connection.Open(СтрокаПодключения12);

    Исключение

        Попытка

            Connection.Open(СтрокаПодключенияACE);

        Исключение

            

            Для Версия = 8 По 16 Цикл

                //подключение к источнику данных

                ТекСтрокаПодключения = СтрЗаменить(СтрокаПодключения, «$ver$», Строка(Версия));

                Попытка

                    Connection.Open(ТекСтрокаПодключения);

                Исключение

                    ОписаниеОшибки = ОписаниеОшибки();

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

            КонецЦикла;              

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

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

2. переустанавливал OFFICE 32/64 бит

что за «Не удается найти указанный поставщик. Вероятно, он установлен неправильно.» ???

  • Remove From My Forums
  • Вопрос

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

    Ситуация следующая. Имеем MS Server 2008 Standart x64 SP1, MS SQL 2008 Standart x64 SP3, 1С предприятие 8.2.14.540 x64 (клиент серверный вариант). Сервер в домен не входит.

    Соответственно в 1с идет загрузка накладных из файла xls. На сервере установлен MS Office 2010 x64. Ошибка идет при загрузке excel файла «Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (ADODB.Connection): Не удается найти указанного
    поставщика. Вероятно, он установлен неправильно.»

    В логах винды ошибок нет. Делал настройку dcomcnfg, чтобы пользователь usr1cv82, под которым запускается «Агент сервера 1с», имел доступ к com объектам. Также его добавил в группу Пользователи DCOM. Причем для тестирования то же самое делал на Server 2008 Standart
    R2 SP1 — там все работало.

    • Перемещено

      20 апреля 2012 г. 9:34
      merge forums (От:Windows Server 2008)

Ответы

    • Помечено в качестве ответа
      Yuriy Lenchenkov
      27 февраля 2012 г. 12:54
  • Спасибо за ответ, но самое интересное, что у меня получилась загрузка на windows 2008 r2 (и sql 2008r2). И еще я заметил, что в dcomcnfg
    на 
    2008 Standart x64 в Настройках DCOM нет пункта Приложение Excel, а в R2 есть….

    • Помечено в качестве ответа
      Yuriy Lenchenkov
      27 февраля 2012 г. 12:54
mov68
26.10.2010 10:25 Прочитано: 15237

Есть файл для загрузки Excel 2007:
1.Работают ли описанные на сервере методы работы с Exсel в 2007? Если есть отличия, дайте пример плиз…
2.На компе стоят и Excel 2003 и Excel 2007, как в таком случае при запуске COMобъекта указать какой запускать?

Yandex
Возможно, вас также заинтересует

Реклама на портале

E_Migachev
26.10.2010 11:16 Ответ № 1

1. Не совсем понятен вопрос!? что значит — описанные на сервере методы работы с Exсel?
2. объект всегда один:
Код 1C v 8.х

 Попытка
Excel=Новый ComОбъект("Excel.Application");
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
mov68
26.10.2010 12:29 Ответ № 2

Да, именно так Exсel и открывают, если на компе 2 версии Exсel, какая откроется? как задать чтобы открылась нужная?

mov68
26.10.2010 12:31 Ответ № 3

Например работа через ADO DB, взятая с этого сервера прекрасно работает с 2003 версией и не работает с 2007, сейчас разбираюсь…

E_Migachev
26.10.2010 13:43 Ответ № 4

(2) никак, объект Excel.Application — одни, от последней устатовки
(3) давай код и какую ошибку выводит, посмотрим )

mov68
26.10.2010 14:18 Ответ № 5

Код 1C v 8.х

 еБаза=Новый COMОбъект("ADODB.Connection");
//Если необходимо в дальнейшем оперировать цифровыми значениями колонок,то ставим признак HDR = NO
//если необходимо производить загрузку с учетом псевдонимов в 1й строке,то ставим HDR = YES
СтрокаПодключения = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = "+ИмяФайла;
СтрокаПодключения = СтрокаПодключения + "; Extended Properties = "+"""Excel 8.0"+";HDR=NO;IMEX=1"";";

Попытка
еБаза.Open(СтрокаПодключения);
Исключение
Сообщить(ОписаниеОшибки());
Возврат Ложь;
КонецПопытки;

влетает с 2007 в исключение с ошибкой:
Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft JET Database Engine): Внешняя таблица не имеет предполагаемый формат

С форматом 2003-го все нормально грузится

mov68
26.10.2010 14:20 Ответ № 6

Должны быть другие реквизиты для 2007 в строке подключения? обшариваю иннет, пока не нашел.

E_Migachev
26.10.2010 14:57 Ответ № 7

(5) При использовании Office 2007 необходимо заменить в примере следующую строку кода:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=
Замените эту строку кода следующей строкой:
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=

mov68
26.10.2010 15:01 Ответ № 8

А Extended Properties оставляем Excel 8.0?

E_Migachev
26.10.2010 15:05 Ответ № 9

(8) тоже меняется на:
Extended Properties=Excel 12.0

E_Migachev
26.10.2010 15:08 Ответ № 10

Код 1C v 8.х

  // читаем данные
оЕксел = Новый COMОбъект("Excel.Application");
Version = оЕксел.Version;

Версия = Число(Сред(Version,1,Найти(Version,".")-1));
оЕксел.Quit();
Для Каждого Лист ИЗ СписокЛистов Цикл
ОбработкаПрерыванияПользователя();
Попытка
conn = NEW COMObject("ADODB.Connection");
conn.Provider = "Microsoft." + ?(Версия = 12,"ACE.OLEDB.12.0","Jet.OLEDB.4.0");
conn.Properties("Extended Properties").Value = "Excel " + ?(Версия = 12,"12.0","8.0") + ";HDR=NO;IMEX=1;MAXSCANROWS=200;FIRSTROWHASNAMES=1";
rs = NEW COMObject("ADODB.RecordSet");
conn.Open(ПолноеИмяФайла);
rs.ActiveConnection = conn;
rs.CursorType = 3;
rs.LockType = 2;
rs.Open("S_elect TOP 2000 * FROM `" + Лист.Значение + "$A:AX` ");

СчСтрок = 0;
КолКолонок = rs.Fields.Count;

Пока НЕ rs.EOF Цикл
rs.MoveNext();

КонецЦикла;

//................................

// Записываем
conn = NEW COMObject("ADODB.Connection");
strConn = "Provider=Microsoft." + ?(Версия = 12,"ACE.OLEDB.12.0","Jet.OLEDB.4.0") + ";"
+ "Data Source=" + FileName + ";Extended Properties=Excel " + ?(Версия = 12,"12.0","8.0");
conn.ConnectionString = strConn;

Попытка
conn.Open();
cmd = NEW COMObject("ADODB.Command");
cmd.ActiveConnection = conn;
Попытка
cmd.CommandText = "CREATE TABLE `MyList` (Value_1 char(255), Value_2 char(255))";
cmd.Execute();
Исключение
КонецПопытки;
cmd.CommandText = "I_nsert INTO `MyList` (Value_1, Value_2) values ('AAA', 'Andrew')";
cmd.Execute();
conn.Close();
Исключение
Сообщить(ОписаниеОшибки());
Попытка
conn.Close();
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;

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

mov68
26.10.2010 15:08 Ответ № 11

СПАСИБО, сработало, и как ни странно даже при Extended Properties=Excel 8.0

Вопрос закрыт. Еще раз спасибо.

E_Migachev
26.10.2010 15:49 Ответ № 12

)

andogskiy
12.11.2012 16:19 Ответ № 13

А для серверного варианта базы на управляемых формах не подскажете код?
Приведенный пример выдает ошибку: «Ошибка при вызове метода контекста (Properties): Произошла исключительная ситуация (ADODB.Connection): Не удается найти указанный поставщик. Вероятно, он установлен неправильно.»

DJ_Serega
12.11.2012 18:30 Ответ № 14

а я подключаю Excel вот таким образом:Код 1C v 8.х

 
Попытка
Эксель = Неопределено;
Книга = Неопределено;
Лист = Неопределено;

Состояние("Выполняется подключение к Excel");
Попытка
Книга = ПолучитьCOMОбъект(Файл, "Excel.Application");
Эксель = Книга.Application;
Исключение
Эксель = Новый COMОбъект("Excel.Application");
Книга = Эксель.WorkBooks.Open(Файл);
КонецПопытки;
Лист = Книга.WorkSheets(1);
Эксель.Visible = Истина;
Исключение
Сообщить("Не удалось подключить Excel." + Символы.ПС + ОписаниеОшибки());
Возврат;
КонецПопытки;

Подсказка: Вы можете приложить к ответу файл или изображение щелкнув по значку или в редакторе.

После установки новой версии серверной платформы (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 и заработало.

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

Попробуй еще вариант:
Функция ПолучитьКоннектExcel( пИмяФайла, пВызватьИсключение = Ложь ) Экспорт

лРез = Новый COMОбъект(«ADODB.Connection»);
СтрокаПодключения = «Provider=Microsoft.Jet.OLEDB.4.0; Data Source = » + пИмяФайла + «; Extended Properties = «»Excel $ver$.0;HDR=NO;IMEX=1″»;»;
СтрокаПодключения12 = «Provider=Microsoft.Jet.OLEDB.4.0; Data Source = » + пИмяФайла + «; Extended Properties=»»Excel 12.0 Xml;HDR=No;IMEX=1″»;»;
СтрокаПодключенияACE = «Provider=Microsoft.ACE.OLEDB.12.0;Data Source= » + пИмяФайла + «;Extended Properties=»»Excel 12.0;HDR=NO;IMEX=1;»»»;

Попытка
лРез.Open(СтрокаПодключения12);
Возврат лРез;
Исключение
ОписаниеОшибки = ОписаниеОшибки();
КонецПопытки;

Попытка
лРез.Open(СтрокаПодключенияACE);
Возврат лРез;
Исключение
ОписаниеОшибки = ОписаниеОшибки();
КонецПопытки;

Для Версия = 8 По 15 Цикл
//подключение к источнику данных
ТекСтрокаПодключения = СтрЗаменить(СтрокаПодключения, «$ver$», Строка(Версия));
Попытка
лРез.Open(ТекСтрокаПодключения);
Возврат лРез;
Исключение
ОписаниеОшибки = ОписаниеОшибки();
КонецПопытки;
КонецЦикла;

Если пВызватьИсключение Тогда
лТекстОшибки = ОписаниеОшибки;
лФайл = Новый Файл( пИмяФайла );
Если ВРег( лФайл.Расширение )=».XLSX» Тогда
лТекстОшибки = лТекстОшибки + Символы.ПС + «Сохраните загружаемый файл в формате MS Excel 97-2003 (*.XLS) и попробуйте выполнить загрузку снова.»;
КонецЕсли;
ВызватьИсключение( лТекстОшибки );
Иначе
Возврат Неопределено;
КонецЕсли;

КонецФункции

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

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

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

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

  2. 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. 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. 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. 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. 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. 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. 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. Offline

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

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

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

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

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

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

Ранее работало, что-то изменилось в компе, уже не припомню .. Что пробовал:

1. разные строки подключения —

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

    СтрокаПодключения = «Provider=Microsoft.Jet.OLEDB.4.0; Data Source = » + Файл +

        «; Extended Properties = «»Excel $ver$.0;HDR=YES;IMEX=1″»;»;

    СтрокаПодключения12 = «Provider=Microsoft.Jet.OLEDB.4.0; Data Source = » + Файл +

        «; Extended Properties=»»Excel 12.0 Xml;HDR=YES;IMEX=1″»;»;

      СтрокаПодключенияACE = «Provider=Microsoft.ACE.OLEDB.12.0;Data Source= » + Файл +

        «;Extended Properties=»»Excel 12.0;HDR=YES;IMEX=1;»»»;        

    
    Попытка

        Connection.Open(СтрокаПодключения12);

    Исключение

        Попытка

            Connection.Open(СтрокаПодключенияACE);

        Исключение

            
            Для Версия = 8 По 16 Цикл

                //подключение к источнику данных

                ТекСтрокаПодключения = СтрЗаменить(СтрокаПодключения, «$ver$», Строка(Версия));

                Попытка

                    Connection.Open(ТекСтрокаПодключения);

                Исключение

                    ОписаниеОшибки = ОписаниеОшибки();

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

            КонецЦикла;              

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

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

2. переустанавливал OFFICE 32/64 бит

что за «Не удается найти указанный поставщик. Вероятно, он установлен неправильно.» ???

Понравилась статья? Поделить с друзьями:
  • Ошибка не удается найти указанный файл read from disk
  • Ошибка не удается найти узел
  • Ошибка не удается найти удаленный сервер
  • Ошибка не удается найти строку для обновления
  • Ошибка не удается найти сканер