Additional
dbCAP
AnyDAC
ThinDAC
NCOCI8
Topic: конфликт драйвера MSSQL200 и мониторов
конфликт драйвера MSSQL200 и мониторов
Posted: 2007/08/07 08:09
 
Приветсвую.

Использую D7, AnyDAC 1.12.2., MSSQL2000 (MSDE).

Пытаюсь сделать следующее:

   With DataQuery do try     SQL.Text := 'SELECT key_field FROM  some_table';     Open;

key_field - первичный ключ типа smallint.
Если нет монитора (не запущен ADMonitor, или не указан 'FlatFile') - все работает нормально. Если есть монитор - происходит исключение:
First chance exception at $7C809F62. Exception class C0000005 with message 'access violation at 0x7c809f62: read of address 0x00000001'.
в строке

 procedure TODBCStatementBase.SetAttribute(AAttrSQLIntegerApValueSQLPointer;   ACharDataBoolean False); ...   Check(Lib.SQLSetStmtAttr(FHandleAAttrApValueiStringLen));


последняя запись с мониторе:

  EXIT  SQLSetStmtAttr  with return code 0 (SQL_SUCCESS)     SQLHSTMT            01161B70     SQLINTEGER                1230 <unknown>     SQLPOINTER          [Unknown attribute 1230]     SQLINTEGER                   0 


Если продолжить выполнение - после нескольких исключений все работает нормально.
В чем может быть дело?

Спасибо.
Re:конфликт драйвера MSSQL200 и мониторов
Posted: 2007/08/07 09:40
 
Привет

Да, вижу ... Буду править.

Удачи,
Дмитрий
Re:конфликт драйвера MSSQL200 и мониторов
Posted: 2007/08/07 14:35
 
Привет

Нашел один баг, он хотя и на тему мониторинга, но в стороне от исполнения запросов. Откройте daADPhysODBCBase, найдите метод TADPhysODBCConnectionBase.GetItemCount. И замените его на:


 function TADPhysODBCConnectionBase.GetItemCountInteger; begin   Result := inherited GetItemCount;   if ODBCConnection <> nil then     Inc(Result6); end;



Дайте знать, если это помогло.

Удачи,
Дмитрий
Re:конфликт драйвера MSSQL200 и мониторов
Posted: 2007/08/08 01:29
 
Теперь при мониторе получаю:

 Exception class EODBCNativeException with message '[AnyDAC][Phys][ODBC][Microsoft][Диспетчер драйверов ODBC] Сеанс связи не открыт'

В мониторе последее сообщение:

 ENTER SQLGetDiagRecW      SQLSMALLINT                  2      SQLHANDLE           011619E8     SQLSMALLINT                  2      SQLWCHAR *          0x0012ED34 (NYI)       SQLINTEGER *        0x0012F024     SQLWCHAR *          0x01161B30 (NYI)       SQLSMALLINT                512      SQLSMALLINT *       0x0012F028

Без монитора подключается.
Re:конфликт драйвера MSSQL200 и мониторов
Posted: 2007/08/08 01:46
 
Хмм ... забавно. У меня работает. Давайте весь лог.

SQLGetDiagRecW - это ODBC функция для получения информации об ошибке. Т.е. что-то вызвало ошибку исполнения и AnyDAC получил информацию про эту ошибку ...
Re:конфликт драйвера MSSQL200 и мониторов
Posted: 2007/08/08 02:04
 
Вот лог.
File Attachment:
File name: Trace_070808_1158.zip
File size:875 bytes


Post edited by: ak, at: 2007/08/08 02:07