cancel
Showing results for 
Search instead for 
Did you mean: 

x64 ODBC driver 7.6.05.00

Former Member
0 Kudos

Hi,

is possible to download from sap.com ODBC driver version 7.6.05.00(x64)? Does it exist?

I have a problem - my program in Embarcadero Delphi XE2 is able to connect ODBC source but does it not work properly. Simple - when table name is case sensitive SQL select command works fine but on the same table update mechanism implemented in Delphi does not work. ODBC driver fails - table special identifier converts to simple identifier and database returns an error. Similar with ODBC driver 7.07.07.16(x32) and 7.08.02.27(x32) and 7.6.06(x64) but with ODBC driver version 7.6.05.00(x32) works fine (sqlod32w.dll build 009-123-191-997 Date 2008-08-15). I'm looking for the same dll file but for x64 system (Windows Server 2008 R2 Foundation). Is it possible?

Best regards,

Lukasz.

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi Lukasz,

I am sorry but the 7.6.05 is not available. But I am interested to help why the newer version doesn't work anymore. I have checked the code and SQL_IDENTIFIER_QUOTE_CHAR has not been changed. Is it possible that you post an ODBC trace from the situation?

Regards,

Burkhard

Former Member
0 Kudos

Hi,

I'll try my best. Below is a 'bad' (7.08.02.27) and a 'good' trace (7.06.05.00).  Is this trace correct and enough long? Tested table was simple (and contains two rows).

Tip: in my ODBC test are two types of 'errors'. One described in this thread, and another problem is similar - table SCHEMA."TableName" is converted to SCHEMATABLENAME and if the 'table' length > 32 then database raises general error 2014: 'identifier to long' even that table exist in database.

Best regards,

Lukasz.

-----------------

<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body ><PRE><PLAINTEXT>
PRODUCT : MaxDB C-PreComp Runtime
VERSION : 7.6.05
BUILD   : 009-123-191-997

DATASOURCE: MAXISQL
SESSION   : 1;   
SQLMODE   : INTERN
SERVERDB  : LENOVODB         
SERVERNODE: localhost:7200
CONNECT "MAXIPROD          " IDENTIFIED BY :A   ISOLATION LEVEL 1
KERNEL FEATURES :
OPTIMIZED STREAMS
START  :  DATE :  2012-04-19    TIME :  0022:55:09
END    :  DATE :  2012-04-19    TIME :  0022:55:09

select * from "TakNie"

PARSE  : CMD   : 
mfIndex init      : 1
mfIndex init      : 2
PARSEID: OUTPUT:  012F2954 00000701 54002C00 01000000
START  :  DATE :  2012-04-19    TIME :  0022:55:12
END    :  DATE :  2012-04-19    TIME :  0022:55:12

select * from "TakNie"

EXECUTE: CMD   : 
PARSEID: INPUT :  012F2954 00000701 54002C00 01000000
mfIndex init      : 2
mfIndex init      : 2
SQLRESULTNAME  : SQL_CURSOR_0001
SQLERRD(INDEX_3) : -1        
START  :  DATE :  2012-04-19    TIME :  0022:55:12
END    :  DATE :  2012-04-19    TIME :  0022:55:12

MASS STATEMENT : 
FETCH "SQL_CURSOR_0001"
PARSE  : CMD   : 
PARSEID: OUTPUT:  012F2954 00000901 2A002B00 01000000
START  :  DATE :  2012-04-19    TIME :  0022:55:21
END    :  DATE :  2012-04-19    TIME :  0022:55:21

MASS STATEMENT : 
FETCH "SQL_CURSOR_0001"
EXECUTE: CMD   : 
PARSEID: INPUT :  012F2954 00000901 2A002B00 01000000
PARAMETER DESCRIPTION: 0X02394520
Application            Kernel
Nr.  Type  Length      Type  Length      Fraction
---------------------------------------------
1    7     1           23    1           0   
2    42    22          36    10          0   
3    1     4           30    10          0   
4    42    42          36    20          0   
5    42    42          36    20          0   
OUTPUT :    1: TN_Wartosc                      : TRUE
OUTPUT :    2: TN_Opis                         : Tak
OUTPUT :    3: TN_Liczbowo                     :                  -1
OUTPUT :    4: TN_OpisTylkoTak                 : Tak
OUTPUT :    5: TN_OpisBrak                     : Brak
SQLERRD(INDEX_3) : 1         
START  :  DATE :  2012-04-19    TIME :  0022:55:21
END    :  DATE :  2012-04-19    TIME :  0022:55:21

UPDATE "TakNie" SET TN_Liczbowo=? WHERE (TN_Wartosc=? AND TN_Opis=? AND
TN_Liczbowo=? AND TN_OpisTylkoTak=? AND TN_OpisBrak=? )
PARSE  : CMD   : 
SQLCODE:  -4005      Unknown column name:TN_LICZBOWO
PARSEID: OUTPUT:  00000000 00000000 00000000 00000000
SQLERRD(INDEX_6) : 21        
START  :  DATE :  2012-04-19    TIME :  0022:55:22
END    :  DATE :  2012-04-19    TIME :  0022:55:22

CLOSE "SQL_CURSOR_0001"
PARSE  : CMD   : 
PARSEID: OUTPUT:  012F2954 00001401 06002800 01000000
START  :  DATE :  2012-04-19    TIME :  0022:55:29
END    :  DATE :  2012-04-19    TIME :  0022:55:29

CLOSE "SQL_CURSOR_0001"
EXECUTE: CMD   : 
PARSEID: INPUT :  012F2954 00001401 06002800 01000000
PARSEID: SELECT:  012F2954 00000701 54002C00 01000000
mfIndex init      : 2
mfIndex restore   : 2
START  :  DATE :  2012-04-19    TIME :  0022:55:29
END    :  DATE :  2012-04-19    TIME :  0022:55:29

PARSEID: DROP  :  012F2954 00000901 2A002B00 01000000
START  :  DATE :  2012-04-19    TIME :  0022:55:29
END    :  DATE :  2012-04-19    TIME :  0022:55:29

SQCDROPPARSID    
PARSEID:       :  012F2954 00000901 2A002B00 01000000

PARSEID: DROP  :  012F2954 00001401 06002800 01000000
START  :  DATE :  2012-04-19    TIME :  0022:55:29
END    :  DATE :  2012-04-19    TIME :  0022:55:29

SQCDROPPARSID    
PARSEID:       :  012F2954 00001401 06002800 01000000
mfIndex delete    : 2

PARSEID: DROP  :  012F2954 00000701 54002C00 01000000
START  :  DATE :  2012-04-19    TIME :  0022:55:29
END    :  DATE :  2012-04-19    TIME :  0022:55:29

SQCDROPPARSID    
PARSEID:       :  012F2954 00000701 54002C00 01000000

S1: DISCONNECT

SQCFINISH      

-----------------------------

(.....)

SQCDROPPARSID    
PARSEID:       :  012F295D 00001901 06002800 01000000
mfIndex delete    : 3

PARSEID: DROP  :  012F295D 00001601 54002C00 01000000
START  :  DATE :  2012-04-19    TIME :  0023:01:10
END    :  DATE :  2012-04-19    TIME :  0023:01:10

SQCDROPPARSID    
PARSEID:       :  012F295D 00001601 54002C00 01000000

UPDATE "TakNie" SET "TN_Liczbowo"=? WHERE "TN_Wartosc"=? AND "TN_Opis"=? AND
"TN_Liczbowo"=? AND "TN_OpisTylkoTak"=? AND "TN_OpisBrak"=?
PARSE  : CMD   : 
PARSEID: OUTPUT:  012F295D 00001D01 54000000 01000000
START  :  DATE :  2012-04-19    TIME :  0023:01:10
END    :  DATE :  2012-04-19    TIME :  0023:01:10

UPDATE "TakNie" SET "TN_Liczbowo"=? WHERE "TN_Wartosc"=? AND "TN_Opis"=? AND
"TN_Liczbowo"=? AND "TN_OpisTylkoTak"=? AND "TN_OpisBrak"=?
EXECUTE: CMD   : 
PARSEID: INPUT :  012F295D 00001D01 54000000 01000000
INPUT  :    1: COLUMN1                         :                   1
INPUT  :    2: COLUMN2                         : TRUE
INPUT  :    3: COLUMN3                         : Tak
INPUT  :    4: COLUMN4                         :                   1
INPUT  :    5: COLUMN5                         : Tak
INPUT  :    6: COLUMN6                         : Brak
SQLERRD(INDEX_3) : 1         
START  :  DATE :  2012-04-19    TIME :  0023:01:10
END    :  DATE :  2012-04-19    TIME :  0023:01:10

Former Member
0 Kudos

Hi Lukasz,

what I can see in the trace is, that in the first trace the double quotes are missing around the colum name. I the second part (good) the double quotes are there. Is this a connection to a

different maxdb version? The odbc driver seems to be the same one not a 7.8. ODBC driver.

I the double quote are missing the identifier are handled in upper case.

Regards,

Burkhard

Former Member
0 Kudos

Hi Burkhard,

yes, double quotes are missing. One server, one database, one simple exe file. Only difference between version of ODBC driver (7.06.05.00 vs 7.08.02.27).

I can not even save sqltrace.pct file - on my computer it does not work with 7.08.02.27.

Second, look at this two traces. Schema is added to a table name ("MAXIPROD"."TakNie").

Best regards,

Lukasz.

------------------

SQL.LOG (7.08.02.27) (wrong)

------------------

Project1        17e8-19e8 ENTER SQLExecDirectW
  HSTMT               01FA2370
  WCHAR *             0x013BB5E0 [      -3] "UPDATE MAXIPRODTakNie SET TN_Liczbowo=? WHERE TN_Wartosc=? AND TN_Opis=? AND TN_Liczbowo=? AND TN_OpisTylkoTak=? AND TN_OpisBrak=?\ 0"
  SDWORD                    -3

Project1        17e8-19e8 EXIT  SQLExecDirectW  with return code -1 (SQL_ERROR)
  HSTMT               01FA2370
  WCHAR *             0x013BB5E0 [      -3] "UPDATE MAXIPRODTakNie SET TN_Liczbowo=? WHERE TN_Wartosc=? AND TN_Opis=? AND TN_Liczbowo=? AND TN_OpisTylkoTak=? AND TN_OpisBrak=?\ 0"
  SDWORD                    -3

  DIAG [S0002] [SAP AG][SDBODBC DLL][MaxDB] Base table not found;-4004 POS(8) Unknown table name:MAXIPRODTAKNIE (-4004)

  DIAG [S1000] [SAP AG][SDBODBC DLL][MaxDB] General error;-10210 Invalid command state (No prepared SQL command) (-10210)

------------------

sqltrace.pct (7.06.05.00) (correct)

------------------

SQCDROPPARSID    
PARSEID:       :  015B36C0 00001A01 54002C00 01000000

UPDATE "TakNie" SET "TN_Liczbowo"=? WHERE "TN_Wartosc"=? AND "TN_Opis"=? AND
"TN_Liczbowo"=? AND "TN_OpisTylkoTak"=? AND "TN_OpisBrak"=?
PARSE  : CMD   : 
PARSEID: OUTPUT:  015B36C0 00002101 54000000 01000000
START  :  DATE :  2012-05-04    TIME :  0013:27:12
END    :  DATE :  2012-05-04    TIME :  0013:27:12

UPDATE "TakNie" SET "TN_Liczbowo"=? WHERE "TN_Wartosc"=? AND "TN_Opis"=? AND
"TN_Liczbowo"=? AND "TN_OpisTylkoTak"=? AND "TN_OpisBrak"=?
EXECUTE: CMD   : 
PARSEID: INPUT :  015B36C0 00002101 54000000 01000000
INPUT  :    1: COLUMN1                         :                   1
INPUT  :    2: COLUMN2                         : TRUE
INPUT  :    3: COLUMN3                         : Tak
INPUT  :    4: COLUMN4                         :                   1
INPUT  :    5: COLUMN5                         : Tak
INPUT  :    6: COLUMN6                         : Brak
WARNING: W-------8-------
SQLERRD(INDEX_3) : 1         
START  :  DATE :  2012-05-04    TIME :  0013:27:12
END    :  DATE :  2012-05-04    TIME :  0013:27:12

------------------

Delphi code:

------------------

procedure TForm1.Button1Click(Sender: TObject);

begin

   ADOQuery1.SQL.Clear;

   ADOQuery1.SQL.Add('select * from "TakNie"');

   ADOQuery1.Open;

   with ADOQuery1 do

   begin

    if (State <> dsEdit) then Edit;

    FieldValues['TN_Liczbowo']:=1;

    Post;

   end;

end;

------------

Connection string:

------------

Provider=MSDASQL.1;Password=(....);Persist Security Info=True;User ID=(....);Data Source=MYTEST;Mode=ReadWrite;Extended Properties="DSN=MYTEST;UID=(....);PWD=(....);SERVERDB=TEST;SERVERNODE=192.168.(...);"

------------

Windows Registry Editor Version 5.00

------------

[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\SAP MaxDB MaxDB (Unicode)]
"Driver"="C:\\Program Files\\sdb\\MaxDB\\pgm\\sdbodbcw.dll"
"Setup"="C:\\Program Files\\sdb\\MaxDB\\pgm\\sqlsp32.dll"
"CPTimeout"="<nie buforowane>"

------------

C:\Program Files\sdb\MaxDB\pgm\sdbodbcw.dll

------------

MaxDB - SAP Database Connectivity

7.8.2.27

Build: 027-121-244-318

Date 2011-12-20

Former Member
0 Kudos

Hello Lukaz,

>yes, double quotes are missing. One server, one database, one simple exe file. Only difference >between version of ODBC driver (7.06.05.00 vs 7.08.02.27).

From my point of view the missing qoutes could only be come from differences in SQLGetInfo() function of the driver. I have checked the return values from SQLGetInfo on 7.6 and 7.8 with the odbcte32 tool get nearIy the same results but no hint what is going wrong

>I can not even save sqltrace.pct file - on my computer it does not work with 7.08.02.27.

ODBC Trace log functionality has been changed and is now controlled by the odbc_cons.exe.

Which has been more functionality and works without making changes in the DS.

See odbc_cons -h for usage.

I see that you have created a ODBC driver manager trace of you app. (SQL.LOG).

Since also the ODBC driver manager maps some values. It is better to check this with the SQL.LOG. Could you please generate a trace for me both version. The connect from your app must be included.

You can send me the files via mail

Best regards,

Burkhard