Home All Groups Group Topic Archive Search About

Retrieving COM class Factory failed: 8007007f

Author
7 Sep 2006 6:50 PM
jimmyfo
Hi, I recently wrote an ASP.Net web application in VS2005 and published
(using VS2005 Publish feature) it to a relatively clean machine with
ASP.Net 2.0 and MDAC 2.8 installed on it. However, when I try to create
my SQL connection in the code-behind, I get the following error. I
tried to register the DLL using regsvr32 but that errored out saying,
"dllregisterserver entry point was not found". Any ideas?

Retrieving the COM class factory for component with CLSID
{2206CDB2-19C1-11D1-89E0-00C04FD7A829} failed due to the following
error: 8007007f.
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.Runtime.InteropServices.COMException:
Retrieving the COM class factory for component with CLSID
{2206CDB2-19C1-11D1-89E0-00C04FD7A829} failed due to the following
error: 8007007f.

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:


[COMException (0x8007007f): Retrieving the COM class factory for
component with CLSID {2206CDB2-19C1-11D1-89E0-00C04FD7A829} failed due
to the following error: 8007007f.]
   System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean
publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle&
ctor, Boolean& bNeedSecurityCheck) +0
   System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean
fillCache) +103
   System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean
skipVisibilityChecks, Boolean fillCache) +261
   System.RuntimeType.CreateInstanceImpl(Boolean publicOnly) +14
   System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr,
Binder binder, Object[] args, CultureInfo culture, Object[]
activationAttributes) +1036
   System.Activator.CreateInstance(Type type, BindingFlags bindingAttr,
Binder binder, Object[] args, CultureInfo culture, Object[]
activationAttributes) +114
   System.Data.OleDb.OleDbConnectionInternal.CreateInstanceDataLinks()
+96
   System.Data.OleDb.OleDbConnectionInternal.GetObjectPool() +130

[InvalidOperationException: The .Net Framework Data Providers require
Microsoft Data Access Components(MDAC).  Please install Microsoft Data
Access Components(MDAC) version 2.6 or later.]
   System.Data.OleDb.OleDbConnectionInternal.GetObjectPool() +166

System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString
constr, OleDbConnection connection) +51

System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions
options, Object poolGroupProviderInfo, DbConnectionPool pool,
DbConnection owningObject) +53

System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection
owningConnection, DbConnectionPoolGroup poolGroup) +27

System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection
owningConnection) +47

System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection
outerConnection, DbConnectionFactory connectionFactory) +105
   System.Data.OleDb.OleDbConnection.Open() +37
   System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset,
DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String
srcTable, IDbCommand command, CommandBehavior behavior) +121
   System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32
startRecord, Int32 maxRecords, String srcTable, IDbCommand command,
CommandBehavior behavior) +137
   System.Data.Common.DbDataAdapter.Fill(DataSet dataSet) +86
   search.Page_Load(Object sender, EventArgs e) +1404
   System.Web.UI.Control.OnLoad(EventArgs e) +99
   System.Web.UI.Control.LoadRecursive() +47
   System.Web.UI.Page.ProcessRequestMain(Boolean
includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
+1061

Author
8 Sep 2006 12:59 AM
Rob MacFadyen
Jimmy,

I've seen the 8007007f error once before in relation to MDAC, though it was
not .NET related (classic ASP).

In that case the problem was an incorrect version of OLEDB32.DLL
(mismatched). The solution was to regsvr32 the correct oledb32.dll.

You should download and run the MDAC component checker. It will look at all
the version of all the mdac files and see what's what.

You could also try a manual search for OLEDB32.DLL and see which version are
installed. You'll also have to check the registry to see which one is
actually in use (mdac component checker may tell you).

Regards,

Rob MacFadyen

Bookmark and Share