文章摘要
这篇文章描述了在使用ASP和ADO.NET将数据保存到MSSQL时遇到的“Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e21'”问题。错误的主要原因是多步OLE DB操作导致的状态问题,具体表现为数据类型不匹配和字段长度超出数据库设置的情况。文章指出,可能的原因包括字段长度配置错误(例如插入比配置长度长的字符)或锁定模式错误。最终,用户通过将应用程序池标识改为LocalSystem解决了问题,但提醒这种做法可能存在安全隐患。总结来看,文章强调了在数据库操作中严格遵守数据类型和字段长度规定的重要性,并提供了可能的解决方案。
今天在做ASP保存数据到MSSQL时出现以下错误提示:
Microsoft OLE DB Provider for ODBC Drivers 错误 ‘80040e21’ 多步 OLE DB 操作产生错误。请检查每个 OLE DB 状态值。没有工作被完成。
后经检查是数据类型不对,保存数据长度超过数据库设置的字段长度.
在向数据库写入数据的时候出现了类型不匹配、字段大小超出、锁定模式错误等,或者记录集没有及时关闭。
例如,配置的某一字段长度为15,在sql语句中确试图插入16位的字符;或者试图插入全角半角模式不正确的字段;
或者使用了错误的记录集锁定方式,rs.open sql,conn,x,y,根据某些blog文章显示,修改打开记录集的方式可能会解决这个问题。
原来一直用的正常程序,突然报
Microsoft OLE DB Provider for ODBC Drivers 错误 ‘80040e21’
ODBC 驱动程序不支持所需的属性。
查询记录少没问题,记录一多就报这个错误
清理了windows\Temp文件夹、inetpub\temp文件夹,还是不行
在网上一通乱搜
MicrosoftOLEDBProviderforODBCDrivers(0x80040E21)–>sql语句出错(数据类型不匹配或表名(字段名)错误或表处于编辑状态,或表不存在于conn打开的数据库中)
最后发现把应用程序池标识改为LocalSystem就可以了,明显是权限问题,把能想到的文件夹一通改终于好了。
友情提醒:应用程序池标识改为LocalSystem,非常不安全
© 版权声明
文章版权归作者所有,未经允许请勿转载。