|
MSSQL.DataReader vs bigint
|
|||
---|---|---|---|
#18+
Конвертнул тут себе для удобства отладки кусочек Оракловой базы в MSSQL, чтобы в одной виртуалке со студией жила (VS2010SP1). Проект .NET 4.0. Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (Intel X86) Mar 29 2009 10:27:29 Copyright (c) 1988-2008 Microsoft Corporation Express Edition with Advanced Services on Windows NT 5.1 <X86> (Build 2600: Service Pack 3) Выясняется, что любой запрос типа Код: sql 1.
приводит к исключению в DataReader.Read Arithmetic overflow error converting nvarchar to data type numeric. В случае если xy имеет тип bigint или numeric (m,n) при m >18 При этом, я еще не обращаюсь к полю XY - вылетает еще на .Read() В некоторых (большинстве) случаев я могу обойтись без больших нумериков, но не всегда. ODP.NET же отрабатывает корректно Как это понимать ? Это пофиксили где либо позже ? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.06.2018, 22:48 |
|
MSSQL.DataReader vs bigint
|
|||
---|---|---|---|
#18+
Siemargl, могу проверить на SQL Server 2008 (SP3), но нужен конкретный скрипт создания таблицы и запроса для repro ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2018, 00:46 |
|
MSSQL.DataReader vs bigint
|
|||
---|---|---|---|
#18+
LRSiemargl, могу проверить на SQL Server 2008 (SP3), но нужен конкретный скрипт создания таблицы и запроса для repro Спс за идею. Начал делать воспроизводимый пример, нашел причину ошибки. Используется MS Enterprise Library, и она при упрощенном создании параметра запроса Decimal внутри себя проставляет Precision и Scale = 0 Код: c# 1.
Но как то хитро параметр создается, что исключение про Precision/Scale, как при создании ручками, не выбрасывается. А при выполнении запроса - переполняется конвертация параметра. Хотя значение параметра в диапазоне 1-50. Скорее Datareader.Read() поле СУБД пытается привести к тому же типу Decimal(0,0). А при перекачке БД через Import/Export Data тип поля сменился с decimal на nvarchar (а иногда на bigint) - в обоих случаях конверсия типа к типу параметра проваливается. Но это только с MSSQL провайдером, а с Оракловым - отрабатывает - возможно срабатывает корректный тип поля. Короче, сменил тип на DbType.Int32 и все стало ОК. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2018, 11:54 |
|
|
start [/forum/topic.php?fid=20&msg=39660532&tid=1399336]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
89ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 319ms |
total: | 512ms |
0 / 0 |