Copy link to clipboard
Copied
Hi there
I have a accdb designed with Access 2010 64bit.
I am running CF9 under Win2008 R2 64bit.
I have also installed http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=13255
I have now googled and tried some dozen tricks to get this combination work:
until now - no way!
Does anybody succeed to to so and is there somewhere a description?
Thanx for help - Didi
1 Correct answer
OK. That was that then. Let's move on.
I do believe our hopes now lie with JDBC. Since ColdFusion is a Java application, finding a 32-bit and 64-bit JDBC driver for MS Access will help many developers.
My search brought me to HXTT's JDBC driver for MS Access. The only problem is, I couldn't tell whether their driver is for 32-bit or 64-bit Access. Could it (hopefully) be universal, automatically detecting the system?
(After the customary virus scan) I unpacked their access.zip file, copied the
...Copy link to clipboard
Copied
Owain North wrote:
BKBK wrote:
That would in fact be my suggestion now: download and install an appropriate legacy 64 bit JDBC-ODBC driver SQL Server Express.
Point taken. However, mine is not to wonder why Access.
Copy link to clipboard
Copied
Hi BKBK
thanx again a thousand times for spending competence and patience !!!
@Owain: I definitely agree - if starting on greenfield. Unfortunatly, we sometimes have to live with legacy.
Copy link to clipboard
Copied
Completely agree it's not always so easy, and I'm sure no developer would ever be the one to choose Access. Take this thread as an example though - how many hours have you burned trying to get it to work? It's Access 2010, so someone somewhere is still actively upgrading your Access database, presumably still thinking it's the right thing to do.
I appreciate it's not always easy, but Access is not made for web applications. It never will be, and every time you come to change/upgrade you'll go through this much pain and then some.
If you can, I'd look at moving away from it before you find support is pulled completely
Copy link to clipboard
Copied
Didi,
Before I go JDBC, just one last stab with 64 bit, for the purpose of elimination. Set the DSN up in the Administrator, choosing "Microsoft Access" as driver.
For the "Database File", browse to and select your (64 bit) ACCDB file. Next, click on "Show Advanced Settings". Enter the following as "Connection String":
jdbc:odbc:Driver={Microsoft Access Driver (*.mdb,*.accdb)};DBQ=absolute_path_to_accdb_file
Click to "Submit" the changes. What is the result?
Copy link to clipboard
Copied
BKBK wrote:
Didi,
Before I go JDBC, just one last stab with 64 bit, for the purpose of elimination. Set the DSN up in the Administrator, choosing "Microsoft Access" as driver.
For the "Database File", browse to and select your (64 bit) ACCDB file. Next, click on "Show Advanced Settings". Enter the following as "Connection String":
jdbc:odbc:Driver={Microsoft Access Driver (*.mdb,*.accdb)};DBQ=absolute_path_to_accdb_file
Click to "Submit" the changes. What is the result?
I guess I have done that before and it did not work - but I'll try it again (we NEVER give up 😉
Copy link to clipboard
Copied
I tried
- jdbc:odbc:Driver={Microsoft Access Driver (*.mdb,*.accdb)};DBQ=Z:\DATABASE\Didi\2010-64.accdb OR
- jdbc:odbc:Driver={Microsoft Access Driver (*.mdb,*.accdb)};DBQ=Z:\DATABASE\Didi\2010-64.accdb; OR
- jdbc:odbc:Driver=Microsoft Access Driver (*.mdb,*.accdb);DBQ=Z:\DATABASE\Didi\2010-64.accdb
as well as
- Database File = Z:\DATABASE\Didi\2010-64.accdb AND/OR
- System Database File = Z:\DATABASE\Didi\2010-64.accdb
Same result:
When registering:
Unable to update the NT registry.
Variable DRIVERPATH is undefined.
When verifying:
Connection verification failed for data source: movo2accdb
java.sql.SQLException: [Macromedia][SequeLink JDBC Driver][ODBC Socket]internal error: The specified DSN contains an architecture mismatch between the Driver and Application
The root cause was that: java.sql.SQLException: [Macromedia][SequeLink JDBC Driver][ODBC Socket]internal error: The specified DSN contains an architecture mismatch between the Driver and Application
Copy link to clipboard
Copied
Didi wrote:
I tried
- jdbc:odbc:Driver={Microsoft Access Driver (*.mdb,*.accdb)};DBQ=Z:\DATABASE\Didi\2010-64.accdb OR
- jdbc:odbc:Driver={Microsoft Access Driver (*.mdb,*.accdb)};DBQ=Z:\DATABASE\Didi\2010-64.accdb; OR
- jdbc:odbc:Driver=Microsoft Access Driver (*.mdb,*.accdb);DBQ=Z:\DATABASE\Didi\2010-64.accdb
as well as
- Database File = Z:\DATABASE\Didi\2010-64.accdb AND/OR
- System Database File = Z:\DATABASE\Didi\2010-64.accdb
Same result:
When registering:
Unable to update the NT registry.
Variable DRIVERPATH is undefined.
When verifying:
Connection verification failed for data source: movo2accdb
java.sql.SQLException: [Macromedia][SequeLink JDBC Driver][ODBC Socket]internal error: The specified DSN contains an architecture mismatch between the Driver and Application
The root cause was that: java.sql.SQLException: [Macromedia][SequeLink JDBC Driver][ODBC Socket]internal error: The specified DSN contains an architecture mismatch between the Driver and Application
Sufficient:
- jdbc:odbc:Driver={Microsoft Access Driver (*.mdb,*.accdb)};DBQ=Z:\DATABASE\Didi\2010-64.accdb
- Database File = Z:\DATABASE\Didi\2010-64.accdb
Register. No need to verify. Now, run a ColdFusion CFM page containing the following code:
<cfquery name="testQ" datasource="movo2accdb">
select *
from your_table_name
</cfquery>
<cfdump var="#testQ#">
If this test succeeds, then your 64-bit installation will have worked. The error would have been caused by ColdFusion engaging the (my guess) 32-bit Macromedia driver and by the NT/DRIVERPATH issue which many consider a longstanding bug.
Copy link to clipboard
Copied
Sorry I did not mention that:
of course I always do the 'practical' test as you proposed.
It gives me an error with a coherent comment:
java.sql.SQLException: [Macromedia][SequeLink JDBC Driver][ODBC Socket]internal error: The specified DSN contains an architecture mismatch between the Driver and Application
Copy link to clipboard
Copied
OK. That was that then. Let's move on.
I do believe our hopes now lie with JDBC. Since ColdFusion is a Java application, finding a 32-bit and 64-bit JDBC driver for MS Access will help many developers.
My search brought me to HXTT's JDBC driver for MS Access. The only problem is, I couldn't tell whether their driver is for 32-bit or 64-bit Access. Could it (hopefully) be universal, automatically detecting the system?
(After the customary virus scan) I unpacked their access.zip file, copied the essential file Access_JDBC40.JAR from /access/lib/ to ColdFusion's lib directory. That's all there is to installing the driver. I then restarted ColdFusion.
I went to the ColdFusion Administrator and configured a datasource as follows:
Data Source Name: myAccessDSN
Driver: Other
JDBC URL: jdbc:access:/C:/Users/BKBK/Documents/myDB.accdb
Driver Class: com.hxtt.sql.access.AccessDriver
Driver Name: com.hxtt.sql.access.AccessDriver
It worked flawlessly. But then again, though I installed everything you did, I am on 32-bit Access.
Copy link to clipboard
Copied
Hi BKBK
Thanx! For the moment I am not able to try it on my system - but I will do ASAP 🙂
Copy link to clipboard
Copied
Hi BKBK (as of now Sorcerer Of ColdFusion)
Does this take any more words ???
10^9 thanx to you!
-Didi
Copy link to clipboard
Copied
Thanks to you, too, Didi, for offering me this opportunity to learn.
Copy link to clipboard
Copied
How did I configure the Access System DSN? By following the 7 steps above. My Office version is 32-bit, so I used C:\Windows\SysWOW64\odbcad.exe. If your Office version is 64 bit, then you should use C:\Windows\System32\odbcad.exe instead.
One more question:
I have a 64-bit Office with which I create a my.accdb, then I copy it to a 64bit server.
Why do I need to install AccessDatabaseEngine.exe and not AccessDatabaseEngine_x64.exe ?
That's absolutely confusing to me ....
Copy link to clipboard
Copied
ok, I finally did it!
Fortunately, my server is running as a VM on ESX. So I took a snapshot, deinstalled the AccessDatabaseEngine_x64.exe and installed AccessDatabaseEngine.exe.
Then I configured in SysWOW64\odbacd32.exe a DSN with the v14.0 Provider.
I think this is exactly what you meant by .. ?
In any case, that error message also tells me that your ACCDB file may be 64-bit. Again, for the purposes of creating Microsoft Access DSN in ColdFusion, you will need to create a 32-bit System DSN using this 32-bit application: c:\windows\SysWOW64\odbacd32.exe.
Next: In CFadmin I added two datasources: one via odbc (movo2odbc), one directly with acces (movo2accdb):
Well, my data-coffin says:
Do you have this running under the same configuration ( CF9 under Win2008 R2 64bit ) ?
----------------------------
hi, we just crossed posting .. this one is done without reading the previous one. I will do so instantly ..
Copy link to clipboard
Copied
hi there
I would follow up on this thread since it perfectly documents the background.
Let's summarize: with http://www.hxtt.com/access.html and BKBK's support we now have a working environment.
One thing puzzles us:
The following steps work fine:
- SELECT qry from CF9 to the DS
- UPDATE DS from CF9
- SELECT qry from CF9 to the DS (this reflects the change made in the step before)
But this procedure does not work
- SELECT qry from CF9 to the DS
- UPDATE the underlying table from within MS Access
- SELECT qry from CF9 to the DS (this does NOT reflect the change made in the step before)
What we already tried:
- CFOBJECTCACHE does not help.
- Setting "" in CFadmin does not help.
- Disabling "Maintain Connections" in the Datasource does not help (see below).
Anybody a helpful idea? (A recommendation to change the database is NOT regarded as helpful )
-Didi
Copy link to clipboard
Copied
A recommendation to change the database is NOT regarded as helpful
Dammit, that's me out then.
Copy link to clipboard
Copied
Procedure 1:
- SELECT qry from CF9 to the DS
- UPDATE something in DS from CF9
- UPDATE something else in the underlying table from within MS Access
- SELECT qry from CF9 to the DS
Procedure 2:
- SELECT qry from CF9 to the DS
- UPDATE something in the underlying table from within MS Access
- UPDATE something else in DS from CF9
- SELECT qry from CF9 to the DS
Does these procedures work? That is, does step 4 reflect both changes made in steps 2 and 3?

Copy link to clipboard
Copied
>>JDBC URL: jdbc:access:/C:/Users/BKBK/Documents/myDB.accdb
>But this procedure does not work
> SELECT qry from CF9 to the DS
> UPDATE the underlying table from within MS Access
> SELECT qry from CF9 to the DS (this does NOT reflect the change made in the step before)
You need lockType=ACCESS connection property, then HXTT Access and MS Access can see each other.
For instance, JDBC URL: jdbc:access:/C:/Users/BKBK/Documents/myDB.accdb?lockType=ACCESS
Copy link to clipboard
Copied
HXTT Support wrote:
>>JDBC URL: jdbc:access:/C:/Users/BKBK/Documents/myDB.accdb
>But this procedure does not work
> SELECT qry from CF9 to the DS
> UPDATE the underlying table from within MS Access
> SELECT qry from CF9 to the DS (this does NOT reflect the change made in the step before)
You need lockType=ACCESS connection property, then HXTT Access and MS Access can see each other.
For instance, JDBC URL: jdbc:access:/C:/Users/BKBK/Documents/myDB.accdb?lockType=ACCESS
Wow! HXTT Support! What a privilege!
Copy link to clipboard
Copied
BKBK:
good idea to isolate the problem! -Thanx for the input!
HXTT Support:
Even better - now it works - triple Thanx for the solution!
For those who recommend to change the DB (Owain, are you still there? 😞
We made some performance tests and compared 'accdb plus HXTT' with SQL 2008 Express.
'accdb plus HXTT' is incredibly fast. Regarding our application you cannot measure a difference in response time ..
-Didi
Copy link to clipboard
Copied
When you have one user and all the files are already cached, maybe
Wait for a second user to hit your site, it'll be like a DDOS.
Copy link to clipboard
Copied
Owain North wrote:
When you have one user and all the files are already cached, maybe
Wait for a second user to hit your site, it'll be like a DDOS.
I absolutely agree, that accdb is not intended for a huge multiuser environment.
However, ColdFusion is the only user.
Since more than a decade I am told to trash MDBs since they will not perform.
On the other hand I have applications with half a million hits per day that do not even twinkle between two requests. Otherwise students learning for exam would rub through my doormat
As soon as performance drops, I definitely change ..
Besides some legacy stuff I can't get rid off on the fast lane (we have applications running from the 90s), I somehow have started to regard this discussion about the lousy performing mdb as a kind of intellectual challenge
-Didi

Copy link to clipboard
Copied
> When you have one user and all the files are already cached, maybe
First, according to one customer's random access( which needn't cached for recycle) report for big file on CD-R, HXTT Access engine is faster than MS Access ODBC engine.
Secondly, on lockType=ACCESS mode, HXTT Access won't use cache, since MS Access and HXTT Access can't share cache for concurrent according to old MS Access lock mechanism. HXTT Access has a faster data format parser/loader, and can utilize existent index fully for most sql.
Thirdly, only without lockType=ACCESS mode, HXTT Access can use multi-level cache, for physical file, object query reslut, session, transaction. All core is smaller, and HXTT Access can run on mobile platform.
Forth, only with assigned delayecClose connection property, HXTT Access can choose to build temporary index for big table without existent index.
According to performance test, HXTT drivers is faster than most of popular databases.
Copy link to clipboard
Copied
HXTT Support wrote:
> When you have one user and all the files are already cached, maybe
First, according to one customer's random access( which needn't cached for recycle) report for big file on CD-R, HXTT Access engine is faster than MS Access ODBC engine.
Secondly, on lockType=ACCESS mode, HXTT Access won't use cache, since MS Access and HXTT Access can't share cache for concurrent according to old MS Access lock mechanism. HXTT Access has a faster data format parser/loader, and can utilize existent index fully for most sql.
Thirdly, only without lockType=ACCESS mode, HXTT Access can use multi-level cache, for physical file, object query reslut, session, transaction. All core is smaller, and HXTT Access can run on mobile platform.
Forth, only with assigned delayecClose connection property, HXTT Access can choose to build temporary index for big table without existent index.
According to performance test, HXTT drivers is faster than most of popular databases.
aha!
So,
jdbc:access:/C:/Users/BKBK/Documents/myDB.accdb?lockType=ACCESS
is ok for a developer environment.
So, what configuration would you (HXTT Support, not you Owain ) recommend for a productive installation?
jdbc:access:/C:/Users/BKBK/Documents/myDB.accdb? ... delayedClose .. maxCacheSize .. lockTimeout.. etc. ???
Is this for CF9 still valid as for CF6.1 (as stated in your FAQ)?:
?delayedClose=15;maxCacheSize=6144;lockTimeout=2000
-Didi
PS: hey Owain, do not misunderstand me, it's not personal, just the challenge I mentioned above

Copy link to clipboard
Copied
>So, what configuration would you (HXTT Support, not you Owain ) recommend for a productive installation?
It's only a jdbc url demo. You need only lockType=ACCESS since you need MS Access concurrent access. You can add other connection property if you need some special feature, for instance, ODBCTrimBehavior or caseInsensitive.

