我有一个数据访问层,通过执行存储过程返回DataSet / DataTables。 一切工作都很好,从很多个月。 但突然间我们开始得到以下错误。
System.ArgumentException; 列<ColumnName>不属于表<TableName>
我写了额外的日志logging代码来解决这个问题。 我很震惊地看到SP有时会返回意外的结果集。 存储过程有时会返回使用某个其他存储过程的Windows服务请求的结果。
我使用Profiler监视Sql Serverstream量。 发生此错误时,Sql Profiler未显示我实际执行的SP的任何执行。 它很难重现这个错误,它随机发生。
我们在testing环境中只面临这个问题。 我们的testing环境正在运行Windows 2003 Server&Sql Server 2005 Express Edition。
在过去,我们使用Sql Server 2005 Express和Standard Edition对我们的应用程序进行了几次严格的负载testing,但是我们从来没有遇到过这个问题。
有没有人面对过这样的问题?
如果SQL事件探查器没有显示正在执行的程序,那么它不是。 应用程序代码中的某些内容正在改变正在调用的存储过程。
我从来没有见过(或听说过)SQL Server运行不同的存储过程。 这将不能作为参数都会有所不同。
你是偶然使用nHibernate还是一些ORM框架? 我们看到一些被调用的代码的一些变化,在一些testing中,只是存储过程的增加。 如果我记得,存储过程仍然被调用,但是我们在Profiler中看到了奇怪的代码。
你可以发布一些事件探查器返回的样本吗? 当你说“通过Windows服务请求”时,我也对你的意思感到困惑。