Назад | Перейти на главную страницу

Sql Server 2005 возвращает результаты от другого SP

У меня есть уровень доступа к данным, который возвращает 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 выполнялась другая хранимая процедура. Не получится, потому что все параметры будут другими.