无法找到或加载已注册的.Net Framework数据提供程序。 (System.Data)

时间:2017-06-08 14:40:11

标签: sql-server sql-server-2012 sql-server-2014

我打开我的SSMS并右键单击数据库,然后Tasks -> IMport Data从源中导入数据,但是一旦点击我就会收到此错误:

Failed to find or load the registered .Net Framework Data Provider. (System.Data)

这是完整的错误:

===================================

This wizard will close because it encountered the following error: (Microsoft SQL Server)

------------------------------
For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&ProdVer=13.0.2164.0&EvtSrc=Microsoft.SqlServer.Management.UI.WizardFrameworkErrorSR&EvtID=UncaughtException&LinkId=20476

===================================

Exception has been thrown by the target of an invocation. (mscorlib)

------------------------------
Program Location:

   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
   at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, StackCrawlMark& stackMark)
   at System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
   at System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture)
   at Microsoft.SqlServer.Dts.DtsWizard.Step1.DataSourceComboBox_SelectedIndexChanged(Object sender, EventArgs e)
   at System.Windows.Forms.ComboBox.OnSelectedIndexChanged(EventArgs e)
   at System.Windows.Forms.ComboBox.set_SelectedIndex(Int32 value)
   at Microsoft.SqlServer.Dts.DtsWizard.Step1.OnInitializePage(EventArgs e)
   at Microsoft.SqlServer.Management.UI.WizardPage.RaiseEnterPage()
   at Microsoft.SqlServer.Management.UI.WizardForm.NextPage(WizardPage nextPage)
   at Microsoft.SqlServer.Management.UI.WizardForm.Next_Click(Object sender, EventArgs e)

===================================

Failed to find or load the registered .Net Framework Data Provider. (System.Data)

------------------------------
Program Location:

   at System.Data.Common.DbProviderFactories.GetFactory(DataRow providerRow)
   at System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName)
   at Microsoft.SqlServer.Dts.DtsWizard.AdoNetForm..ctor(DataSourceInfo info, Boolean bDest, WizardInputs inputs, WizardPage page)

我的计算机上安装了SQL 2012和SQL 2014,但两者都出错了。我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:4)

AHHH!同样的问题让我疯狂了好几个月。但我只是想通了。

我的machine.config文件中有死/过时/错误的条目。

C:\的Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \配置 C:\的Windows \ Microsoft.NET \框架\ v4.0.30319 \配置

我打开了每个machine.config文件,并注释掉了Devart和MySql的条目。然后我关闭/重新打开了SSMS,并且任务 - >导入不再抛出错误。现在我不是说MySQL和DevArt提供程序是你的具体问题,但它是从机器.config中“删除”这些条目,为我解决了这个问题。

<DbProviderFactories>
  <add name="Microsoft SQL Server Compact Data Provider" invariant="System.Data.SqlServerCe.3.5" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=3.5.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
  <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" />
  <!--<add name="dotConnect for MySQL" invariant="Devart.Data.MySql" description="Devart dotConnect for MySQL" type="Devart.Data.MySql.MySqlProviderFactory, Devart.Data.MySql, Version=8.4.492.0, Culture=neutral, PublicKeyToken=09af7300eec23701" />
  <add name="dotConnect for Oracle" invariant="Devart.Data.Oracle" description="Devart dotConnect for Oracle" type="Devart.Data.Oracle.OracleProviderFactory, Devart.Data.Oracle, Version=8.5.492.0, Culture=neutral, PublicKeyToken=09af7300eec23701" />
  <add name="dotConnect for PostgreSQL" invariant="Devart.Data.PostgreSql" description="Devart dotConnect for PostgreSQL" type="Devart.Data.PostgreSql.PgSqlProviderFactory, Devart.Data.PostgreSql, Version=7.4.492.0, Culture=neutral, PublicKeyToken=09af7300eec23701" />
  <add name="dotConnect for SQLite" invariant="Devart.Data.SQLite" description="Devart dotConnect for SQLite" type="Devart.Data.SQLite.SQLiteProviderFactory, Devart.Data.SQLite, Version=5.3.492.0, Culture=neutral, PublicKeyToken=09af7300eec23701" />
  <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.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
  -->
</DbProviderFactories>

希望对你有所帮助。

注意:在我从Framework和Framework64文件夹中注释掉这些条目之后,我的问题才消失。