Не удалось найти запрошенный поставщик данных .Net Framework в Visual Studio 2010 Professional
Почему я получаю "Не удается найти запрошенный поставщик данных .NET Framework" при попытке установить новый источник данных в Visual Studio 2010 Professional?
Моя статистика:
- Windows 7 64-бит 16-гигабайтная оперативная память
- Visual Studio 2010 Professional
- SQL Server 2008 (сервер A, полные права администратора)
- SQL Server 2008 (сервер B, полные права администратора)
Я начал тестовое приложение ASP.NET, и когда я пытаюсь добавить новый источник данных, я получаю:
Не удалось найти запрошенный поставщик данных .Net Framework. Он не может быть установлен.
У меня установлен .NET 4.
Когда я создаю соединение и нажимаю "Test Connection", он проверяет успешность. SQL Server Management Studio прекрасно соединяется, и я проверял учетные данные на всех.
Ответы
Ответ 1
Я видел сообщения о том, что у людей есть и дополнительные, самозавершающиеся node в файле machine.config. Убрав его, они решили проблему. machine.config находится в \Windows\Microsoft.net\Framework\vXXXX\Config
. У вас может быть множество конфигурационных файлов на основе того, сколько версий фреймворка установлено, в том числе 32 и 64-битные варианты.
<system.data>
<DbProviderFactories>
<add name="Odbc Data Provider" invariant="System.Data.Odbc" ... />
<add name="OleDb Data Provider" invariant="System.Data.OleDb" ... />
<add name="OracleClient Data Provider" invariant="System.Data ... />
<add name="SqlClient Data Provider" invariant="System.Data ... />
<add name="IBM DB2 for i .NET Provider" invariant="IBM.Data ... />
<add name="Microsoft SQL Server Compact Data Provider" ... />
</DbProviderFactories>
<DbProviderFactories/> //remove this one!
</system.data>
Ответ 2
Мне нравятся другие предложения, но я бы предпочел не обновлять machine.config для одного приложения. Я предлагаю вам просто добавить его в файл web.config/app.config. Вот что мне нужно, чтобы использовать MySql Connector/NET, который я использовал "bin".
<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.6.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
Ответ 3
В моем случае запись поставщика данных для MySQL была "просто" отсутствующей в файле machine.config, описанном выше (хотя я правильно установил соединитель MySQL)
<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" />
Не забудьте поставить правильную версию вашего MySQL на запись
Ответ 4
У меня была эта проблема с версией 6.7.4 и разрешена ее установкой версии 6.5.6.
Моя настройка - это выпуск Data Center R2 для Windows 2008 R2, SQL Server 2008 R2 с Studio Business Intelligence Development Studio (VS2008). Очень простая установка.
Когда я устанавливал 6.7.4, я даже не мог видеть поставщика MySQL в качестве выбора. Однако, когда я заглянул в файл machine.config, я увидел ссылки для поставщика роли MySQL и т.д., Но запись не была добавлена.
Ответ 5
Я думал, что моя проблема связана с моей машиной .config за ответы, которые я нашел в Интернете, но виновник оказался в проекте web.config, который очищал DbProviderFactories.
<system.data>
<DbProviderFactories>
<clear />
...
</DbProviderFactories>
</system.data>
Ответ 6
Это работает для меня, спасибо. У меня была эта проблема, когда я установил .Net Framework 4.7.1, каким-то образом настройки DbProviderFactories в System.Data в конфигурации машины были уничтожены. Он начал работать после добавления необходимых параметров конфигурации, как показано ниже DataProviderFactories
<system.data>
<DbProviderFactories>
<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"/>
<add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
</DbProviderFactories>
</system.data>