Monday, August 3, 2009

FAQs – July 2009

Which Advantage Clients are Available in 64-bit

With version 9 of Advantage a 64-bit version of the Server was released. The 64-bit server can be accessed by any of the current Advantage clients. You do not need to make any changes to your client application, although using the same client and server version is recommended, to connect to the 64-bit server.

If you want to create a 64-bit client application you will need to recompile your client application. We currently have 64-bit versions of the ACE API and .NET DataProvider. We have plans to release 64-bit versions of our OLEDB provider, ODBC driver and PHP driver.

Using the Advantage .NET Data Provider on Vista 64-bit

64-bit operating systems support both 32-bit and 64-bit applications. In many cases the operating system will run either of these application types seamlessly. However, when developing on a 64-bit system you need to make sure that you are loading the appropriate DLLs and components for your application.

When developing a .NET application the key is setting the proper target platform. For a 32-bit application your target should be x86 and use the x64 target for 64 bit applications. The Advantage 64-bit .NET data provider will be installed on a 64-bit system by default.

One additional pitfall is in redistribution of the DLLs. You must distribute the proper version of the .NET data provider and Advantage DLLs with your application. Make sure you include the 64-bit versions of Advantage.Data.Provider.dll, Ace32.dll and axcws32.dll. You can verify the version (32-bit vs 64-bit) of the DLLs by ----.

Scott Hanselman has a great overview of 32-bit vs 64-bit with .NET on his blog.

9107 Errors

When the Advantage server is unable to close a specific handle a 9107 error is generated. This can occur when the server tries to close a static cursor or temporary table. Both static cursors and temp tables can be stored in temporary files (*.tmp) which will show up in the data directory or in the temp path as defined in the data dictionary. When the static cursor or temp table is closed the temporary file should be deleted.

If the temporary file cannot be deleted the server will get an error and a 9107 will be logged. This can occur if the file has been locked by another process such as a virus scanner. We recommend excluding the data directory from virus scanning since a virus scanner may scan a file on open and close. This should eliminate any 9107 errors and potentially improve performance since the files are no longer being scanned.

Using Mapped Drives

One way of ensuring that all clients have access to the same data is to map the same drive letter to a data share on all of the client machines. This can be easily done with a batch file that is run at startup. However, if you are using a server-side alias you cannot map a drive since there is no network share to map to. In this case you can create a virtual mapped drive using the ADS.INI file.

Adding a drive letter and a path to the [DRIVES] section of the ads.ini file allows any Advantage client the ability to use that mapped drive. This entry can point to an actual network share or a server-side alias. Make sure that you designate a letter that has not already been assigned to a local device or other mapping. If there is a conflict with a particular drive letter a 7078 error will occur.

5 comments:

Anonymous said...

Hello,

we use the Advantage .NET Data Provider to connect to a advantage server from a .Net application.

We are facing some maximum connection exceeded. We tried many things to solve this without success. We came to the conclusion that there must be a setting on the client side to specify that number. We found out that ads.ini looks like a good candidate. But is this correct to use the ads.ini file ? If yes, where in the file system muste we put it (fyi our process runs as a service) ?

Regards

Christophe

cabsil said...

Hello,

sorry I checked anonymous. Please answer to my question to my email.

Regards

Christophe

Chris said...

Christophe,

The maximum amount of connections is a configuration setting for the Advantage Server. It can be set using the Advantage Configuration Utility. Version 9.0 and newer will dynamically allocate more connections if the configured value is exceeded.
If you are using Local Server you will need to set the maximum number of connections in the adslocal.cfg file. This file must be in the same directory as the adsloc32.dll.

Chris

cabsil said...

We are connecting to the DB through the Internet. Therefore the local config is not relevant.
Am I wrong if I say that you are talking about the config on the server side ? As I said my problem lies on the client side. I got a 6303 error and when I look in the doc, the solution is to edit the ads.ini (on the client side) and change the max connection value.

Thanks for your answer

Christophe

cabsil said...

Hello,

it looks we've got the solution. I had to put the ads.ini in the system32 directory. It was not sufficient to put it in the directory with the DLL. Strange isn't it. Maybe due to the fact this is used in a process and not a normal exe.

Thanks for your help.

Christophe