none
多步 OLE DB 操作产生错误 网站用asp.net+db2+netframework+spring.net架构 RRS feed

  • 问题

  • <db:provider id="DbProvider"
                        provider="OleDb-2.0"
                        connectionString="Provider=IBMDADB2.1;Location={数据库服务器地址};Data Source={数据库名};User ID={用户};Password={密码}; "/>

    错误信息:继续寻求帮助

    多步 OLE DB 操作产生错误。如果可能,请检查每个 OLE DB 状态值。没有工作被完成。
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

    异常详细信息: System.Data.OleDb.OleDbException: 多步 OLE DB 操作产生错误。如果可能,请检查每个 OLE DB 状态值。没有工作被完成。

    源错误:

    执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。 

    堆栈跟踪:


    [OleDbException (0x80040e21): 多步 OLE DB 操作产生错误。如果可能,请检查每个 OLE DB 状态值。没有工作被完成。]
       System.Data.OleDb.OleDbServicesWrapper.GetDataSource(OleDbConnectionString constr, DataSourceWrapper& datasrcWrapper) +962194
       System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection) +124
       System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) +86
       System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup) +29
       System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) +4861516
       System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +117
       System.Data.OleDb.OleDbConnection.Open() +40
       NHibernate.Connection.DriverConnectionProvider.GetConnection() +102
       NHibernate.Tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.Prepare() +15
       NHibernate.Tool.hbm2ddl.SchemaMetadataUpdater.GetReservedWords(Dialect dialect, IConnectionHelper connectionHelper) +65
       NHibernate.Tool.hbm2ddl.SchemaMetadataUpdater.Update(ISessionFactory sessionFactory) +80
       NHibernate.Impl.SessionFactoryImpl..ctor(Configuration cfg, IMapping mapping, Settings settings, EventListeners listeners) +598
       NHibernate.Cfg.Configuration.BuildSessionFactory() +86
       Spring.Data.NHibernate.LocalSessionFactoryObject.NewSessionFactory(Configuration config) +16
       Spring.Data.NHibernate.LocalSessionFactoryObject.AfterPropertiesSet() +3030
       Spring.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.InvokeInitMethods(Object target, String name, IConfigurableObjectDefinition definition) +204
       Spring.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.ConfigureObject(String name, RootObjectDefinition definition, IObjectWrapper wrapper) +516
       Spring.Objects.Factory.Support.WebObjectFactory.ConfigureObject(String name, RootObjectDefinition definition, IObjectWrapper wrapper) +89
       Spring.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.InstantiateObject(String name, RootObjectDefinition definition, Object[] arguments, Boolean allowEagerCaching, Boolean suppressConfigure) +603

    [ObjectCreationException: Error creating object with name 'sessionFactory' defined in 'file [C:\456\Config\Dao.config] line 10' : Initialization of object failed : 多步 OLE DB 操作产生错误。如果可能,请检查每个 OLE DB 状态值。没有工作被完成。]
       Spring.Objects.Factory.Support.AbstractAutowireCapableObjectFactory.InstantiateObject(String name, RootObjectDefinition definition, Object[] arguments, Boolean allowEagerCaching, Boolean suppressConfigure) +746
       Spring.Objects.Factory.Support.AbstractObjectFactory.CreateAndCacheSingletonInstance(String objectName, RootObjectDefinition objectDefinition, Object[] arguments) +174
       Spring.Objects.Factory.Support.WebObjectFactory.CreateAndCacheSingletonInstance(String objectName, RootObjectDefinition objectDefinition, Object[] arguments) +150
       Spring.Objects.Factory.Support.AbstractObjectFactory.GetObjectInternal(String name, Type requiredType, Object[] arguments, Boolean suppressConfigure) +990
       Spring.Objects.Factory.Support.DefaultListableObjectFactory.PreInstantiateSingletons() +477
       Spring.Context.Support.AbstractApplicationContext.Refresh() +1075
       Spring.Context.Support.WebApplicationContext..ctor(String name, Boolean caseSensitive, IApplicationContext parentContext, String[] configurationLocations) +59
       _dynamic_Spring.Context.Support.WebApplicationContext..ctor(Object[] ) +155
       Spring.Reflection.Dynamic.SafeConstructor.Invoke(Object[] arguments) +12
       Spring.Context.Support.RootContextInstantiator.InvokeContextConstructor(ConstructorInfo ctor) +134
       Spring.Context.Support.ContextInstantiator.InstantiateContext() +26
       Spring.Context.Support.ContextHandler.InstantiateContext(IApplicationContext parentContext, Object configContext, String contextName, Type contextType, Boolean caseSensitive, String[] resources) +130
       Spring.Context.Support.WebContextHandler.InstantiateContext(IApplicationContext parent, Object configContext, String contextName, Type contextType, Boolean caseSensitive, String[] resources) +310
       Spring.Context.Support.ContextHandler.Create(Object parent, Object configContext, XmlNode section) +275

    [ConfigurationErrorsException: Error creating context '/ylbx': 多步 OLE DB 操作产生错误。如果可能,请检查每个 OLE DB 状态值。没有工作被完成。]
       System.Configuration.BaseConfigurationRecord.EvaluateOne(String[] keys, SectionInput input, Boolean isTrusted, FactoryRecord factoryRecord, SectionRecord sectionRecord, Object parentResult) +202
       System.Configuration.BaseConfigurationRecord.Evaluate(FactoryRecord factoryRecord, SectionRecord sectionRecord, Object parentResult, Boolean getLkg, Boolean getRuntimeObject, Object& result, Object& resultRuntimeObject) +1061
       System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean requestIsHere, Object& result, Object& resultRuntimeObject) +1431
       System.Configuration.BaseConfigurationRecord.GetSection(String configKey, Boolean getLkg, Boolean checkPermission) +56
       System.Configuration.BaseConfigurationRecord.GetSection(String configKey) +8
       System.Web.HttpContext.GetSection(String sectionName) +47
       System.Web.Configuration.HttpConfigurationSystem.GetSection(String sectionName) +39
       System.Web.Configuration.HttpConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection(String configKey) +6
       System.Configuration.ConfigurationManager.GetSection(String sectionName) +78
       Spring.Util.ConfigurationUtils.GetSection(String sectionName) +88
       Spring.Context.Support.WebApplicationContext.GetContextInternal(String virtualPath) +863
       Spring.Context.Support.WebApplicationContext.GetRootContext() +99
       Spring.Context.Support.WebSupportModule.Init(HttpApplication app) +452
       System.Web.HttpApplication.InitModulesCommon() +65
       System.Web.HttpApplication.InitModules() +43
       System.Web.HttpApplication.InitInternal(HttpContext context, HttpApplicationState state, MethodInfo[] handlers) +729
       System.Web.HttpApplicationFactory.GetNormalApplicationInstance(HttpContext context) +298
       System.Web.HttpApplicationFactory.GetApplicationInstance(HttpContext context) +107
       System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) +289

    2013年11月23日 5:10

答案

  • 对于这个错误性息:[OleDbException (0x80040e21): 多步 OLE DB 操作产生错误,在微软官网有解释:

    • In the registry, under the key for an OLE DB provider's CLSID, there may be an entry named OLEDB_SERVICES. If the OLE DB provider that is used to make the ADO connection does not have the OLEDB_SERVICES entry, and ADO tries to set up a property that is not supported by the provider, the error occurs. For more information about this registry entry, see the "Resolution" section.
    • If OLEDB_SERVICES entry exists but there is a problem in the ADO connection string, the error occurs.

    在这里提供了相应的solution:

    http://support.microsoft.com/kb/269495/en-us


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2013年11月25日 9:00
    版主