Ошибка «Внутренняя ошибка поставщика данных .Net Framework 30», когда столбец имеет значение NULL - PullRequest
1 голос
/ 15 ноября 2010

У меня есть простая консольная программа .NET, которая использует OdbcDataReader для извлечения строк с Advantage Local Server. Я использую Системный DSN, определенный через Администратор ODBC на Windows 7. Источник данных использует драйвер Advantage StreamlineSQL ODBC v 10.00.00.03 и следующие параметры:

  • Путь к базе данных:
  • Тип стола: преимущество доступно
  • Типы серверов: локальный сервер (ALS)

Программа работает нормально, пока не встретит строку, имеющую значение NULL в столбце. Затем я получаю исключение:

System.InvalidOperationException was caught   Message=Internal .Net Framework Data Provider error 30.   Source=System.Data   StackTrace:
       at System.Data.ProviderBase.DbBuffer.Validate(Int32 offset, Int32 count)
       at System.Data.ProviderBase.DbBuffer.PtrToStringUni(Int32 offset, Int32 length)
       at System.Data.Odbc.OdbcDataReader.internalGetString(Int32 i)
       at System.Data.Odbc.OdbcDataReader.GetValue(Int32 i, TypeMap typemap)
       at System.Data.Odbc.OdbcDataReader.GetValue(Int32 i)
       at System.Data.Odbc.OdbcDataReader.IsDBNull(Int32 i)
       at OdbcTest.Program.Main(String[] args) in c:\abcoa\visual studio 2010\Projects\OdbcTest\OdbcTest\Program.cs:line 66   InnerException:

Intellisence в VS2010 также дает следующую подсказку: * _COMPlusExceptionCode = -532462766 *

Я также включил трассировку ODBC и вижу следующую ошибку в SQL.LOG:

OdbcTest.vshost b34-11e4    EXIT  SQLSetStmtAttrW  with return
code -1 (SQL_ERROR)
        SQLHSTMT            0x0037C6D8
        SQLINTEGER                1228 <unknown>
        SQLPOINTER          [Unknown attribute 1228]
        SQLINTEGER                  -5 

        DIAG [HY092] [iAnywhere Solutions][Advantage ODBC
Driver]Invalid attribute identifier. (2184) 

OdbcTest.vshost b34-11e4    ENTER SQLGetDiagFieldW 
        SQLSMALLINT                  3 
        SQLHANDLE           0x0037C6D8
        SQLSMALLINT                  1 
        SQLSMALLINT                  4 
        SQLPOINTER         0x05ABE480
        SQLSMALLINT                 12 
        SQLSMALLINT *       0x05ABE548

Если кто-то может помочь с этим, я был бы очень признателен!

1 Ответ

1 голос
/ 18 ноября 2010

После обращения в группу новостей Sybase Advantage.ODBC было высказано предположение, что это может быть ошибка, исправленная в новой версии.Я также смог получить новую версию драйвера, связавшись с Sybase по электронной почте преимущество@sybase.com и запросив у них версию драйвера ODBC для версии 10.0.0.5.

...