2013-09-06 2 views
1

Я ожидаю, что обсуждения будут более умозрительными, чем окончательные, потому что проблема скорее сама спекулятивная. Это довольно смешано в природе.Ошибка System.Data.SqlClient при успешном завершении SQL Server Management Studio

Я ищу код .NET 4.0 C#, который использует Microsoft.Practices.EnterpriseLibrary для доступа к данным SQL Server.

Код вызывает хранимую процедуру, которая хорошо работает в SQL Server Management Studio и возвращает результаты. Проблема в том, что когда процедура вызывается со стороны C#, генерируется исключение.

Код обижая выглядят следующим образом:

Database _db = DatabaseFactory.CreateDatabase(instance_name); 
string _sql = "[dbo].[usp_stored_procedure]"; 
DbCommand _cmd = _db.GetStoredProcCommand(_sql); 
/* _db.AddInParameter calls to supply parameters */ 
DataSet _ds = _db.ExecuteDataSet(_cmd); 

Последняя строка генерирует исключение, которое говорит:

Ошибка арифметического переполнение преобразование INT к типу данных числовому.
в System.Data.SqlClient.SqlConnection.OnError (SQLException исключение, Boolean breakConnection)
....
в System.Data.SqlClient.SqlDataReader.Read()
....
в системе. Data.Common.DataAdapter.FillLoadDataRow (SchemaMapping отображение)
....
в Microsoft.Practices.EnterpriseLibrary.Data.Database.ExecuteDataSet (команда DbCommand)

....
в DataAccess.call_stored_procedure (string instance_name, int? _c lient_id, int? _client_group_id, int? _event_type_id, DateTime _start_date, DateTime _end_date, int? _employee_type_id, int? _survey_id, int? _ro_date)

Я опустил (что я нахожусь) ненужную трассировку стека и функцию, в которой выбрано исключение. Аргументы приводятся в этом порядке, и типы точно совпадают.

В хранимой процедуре есть Decimal(18, 10), а хранимая процедура работает с предыдущим набором данных (а также на стороне C#). Это создает проблему с новым источником данных.

Мой «вопрос» заключается в том, что такое поведение является известной проблемой или где начать искать. Кажется странным, что то, что работает в SQL Server Management Studio, не связано с вызовом кода C#.

+0

Это не ошибка, связанная SQL Server, это указывает, что возвращаемое значение из базы данных не может быть привязана к типу данных .NET, который вы используете в DataSet. –

+0

Вы должны приложить SQL Profiler и посмотреть, выполняет ли код SQL-оператор, который вы предполагаете. – StingyJack

+0

проверьте тип данных схемы таблицы, а затем сравните его с типом данных передаваемых вами значений или попытайтесь найти – MethodMan

ответ

0

возможно добавить параметры в несоответствующего типа Вы должны тел нам о типе поля в SQL и добавить параметры в вашем codw

Смежные вопросы