首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除大量行时使用Server 4的DivideByZeroException

删除大量行时使用Server 4的DivideByZeroException
EN

Stack Overflow用户
提问于 2012-04-04 18:37:27
回答 1查看 1.3K关注 0票数 10

我有一个使用SQL Server CE 4的LINQ应用程序,我知道这是不受官方支持的,但是我们已经让它工作了,除了下面的例外。有时,我们在试图更新数据库中的一行时会出现错误。

我们使用DataContext从数据库中选择一行,更新几个列(布尔和字节列),然后调用SubmitChanges()。当我们提交更改时,我们将得到一个具有以下堆栈跟踪的DivideByZeroException:

System.DivideByZeroException:试图除以零。 在System.Data.SqlServerCe.NativeMethodsHelper.CompileQueryPlan(IntPtr pQpCommand,String pwszCommandText,ResultSetOptions options,IntPtr[] pParamNames,IntPtr prgBinding,Int32 cDbBinding,IntPtr& pQpPlan,IntPtr pError) 在System.Data.SqlServerCe.NativeMethods.CompileQueryPlan(IntPtr pQpCommand,String pwszCommandText,ResultSetOptions options,IntPtr[] pParamNames,IntPtr prgBinding,Int32 cDbBinding,IntPtr& pQpPlan,IntPtr pError) 在System.Data.SqlServerCe.SqlCeCommand.CompileQueryPlan() 在System.Data.SqlServerCe.SqlCeCommand.ExecuteCommand(CommandBehavior行为,字符串方法,ResultSetOptions选项) 在System.Data.SqlServerCe.SqlCeCommand.ExecuteNonQuery() 在System.Data.Linq.SqlClient.SqlProvider.Execute(Expression查询,QueryInfo queryInfo,IObjectReaderFactory工厂,Object[] parentArgs,Object[] userArgs,ICompiledSubQuery[] subQueries,Object lastResult) 在System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(Expression查询,QueryInfo[] queryInfos,IObjectReaderFactory工厂,Object[] userArguments,ICompiledSubQuery[] subQueries) (在System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression查询) (在System.Data.Linq.ChangeDirector.StandardChangeDirector.DynamicUpdate(TrackedObject项目) (在System.Data.Linq.ChangeDirector.StandardChangeDirector.Update(TrackedObject项目) 在System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode failureMode) 在System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode) 在System.Data.Linq.DataContext.SubmitChanges()

编辑:

在分析时,问题似乎是在delete语句上产生的,类似于:

从'1.3.12.2.1107.5.1.4.54023.30000004101914490887500000063‘中删除(Oid = 24151 /* @p0 /)和(WorkItemOid = 745 / @p1 /)和(SeriesInstanceUid = '1.3.12.2.1107.5.1.4.54023.30000004101913521221800001089’/ @p2 /)和(SopInstanceUid =‘1.3.12.2.1107.5.1.4.54023.30000004101913521221800001089’/ @p3 /)和(WorkItemOid= 1)和(FailureCount =0/ @p4 */)和(文件为NULL)和(NOT (File = 1))

错误发生在一个语句中,我试图单独删除1500个外键记录。当我将代码更改为单独删除行时,我将其缩小到大约45行,无法删除。然后,我使用尝试在行本身上执行delete,它在那里也失败了,除以零例外。

因此,它似乎不是Linq错误,而是SQLServerCompactCE4.0本身删除这些行的错误。我尝试删除和开始一个干净的数据库,并复制填充,然后从数据库中删除,问题再次发生。当有>1500个外键记录时,可能会出现删除时发生的情况。

一堆谷歌搜索大多是空的,但我确实找到了一个引用DivideByZeroException的SqlServerCE3.5在引用。我已经确认我正在使用SQLServerCE4.0程序集,因此这似乎不是问题所在。对于上面的错误是否仍然适用于SQLServerCE4.0,有什么想法吗?经过进一步的审查,似乎也是同样的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-09 19:53:00

升级到SQLServerCompactCTP1似乎解决了这个问题。在删除问题中报告的行时,我不再看到例外情况。该问题似乎与从外键关系中有> 1500行的表中删除行有关。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10017277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档