У меня есть уровень доступа к данным, который возвращает DataSets / DataTables, выполняя хранимую процедуру. Все работало нормально много месяцев. Но вдруг мы начали получать следующую ошибку.
System.ArgumentException; Столбец <ColumnName> не принадлежит таблице <TableName>
Я написал дополнительный код регистрации для устранения этой проблемы. Я был шокирован, увидев, что SP иногда возвращает неожиданный набор результатов. Хранимая процедура иногда возвращает результат, который запрашивается службами Windows с использованием другой хранимой процедуры.
Я отслеживал трафик Sql Server с помощью Profiler. Когда произошла эта ошибка, Sql Profiler не показал никакого выполнения для SP, который я действительно выполнил. Эту ошибку сложно воспроизвести, она случается случайно.
Мы столкнулись с этой проблемой только в нашей тестовой среде. Наша тестовая среда работает под управлением Windows 2003 Server и Sql Server 2005 Express Edition.
В прошлом мы запускали несколько строгих нагрузочных тестов для нашего приложения с использованием как Sql Server 2005 Express, так и Standard Edition, но мы никогда не сталкивались с этими проблемами.
Кто-нибудь раньше сталкивался с такой проблемой?
Вы случайно используете nHibernate или какой-нибудь ORM-фреймворк? В ходе тестирования мы увидели некоторые изменения в вызываемом коде, дополнения только к сохраненной процедуре. Сохраненная процедура все еще вызывалась, если я помню, но мы видели странный код в Profiler.
Вы можете опубликовать образцы того, что вернул Profiler? Меня также смущает, что вы имеете в виду, когда говорите "запрошено службами Windows".
Если SQL Profiler не показывает, что ваша процедура выполняется, значит, это не так. Что-то в коде приложения изменяет вызываемую хранимую процедуру.
Я никогда не видел (и не слышал), чтобы на SQL Server выполнялась другая хранимая процедура. Не получится, потому что все параметры будут другими.