Frequently Asked Questions
- What is ODBC Socket Server?
- What are some uses of ODBC Socket Server?
- What platforms does it run on?
- Why should I use it?
- What comparing commercial products are there?
- Who created ODBC Socket Server?
- How is ODBC Socket Server licensed?
- Why is it free?
- I have heard free software is of inferior quality. Is this true?
- What if I have a request for a feature or find a bug?
- What other features do you have planned?
- Is ODBC Socket Server secure?
- How Y2K compliant is ODBC Socket Server?
- How large is Team FXML?
- How do the clients and server communicate?
- What clients to do you provide?
- Why did you not use Microsoft's ADO XML DTD?
- Can I write my own client?
- How configurable is ODBC Socket Server?
- How is the socket layer implemented?
- Will there be DBI/PHP/ODBC compliant interfaces made available?
- Can I use OLE DB providers with ODBC Socket Server?
- I am getting strange errors using Windows NT Service Pack 6?
- I get an error registering the service. Something about a missing ordinal number?
- How do I use quotes in my SQL queries?
- I get errors using the PHP class?
- My queries are very slow. Can I fix this?
- Are PHP Lib interfaces available?
- I receive the message: ADO Error - NULL Connection?
What is ODBC Socket Server?
ODBC Socket Server is an open source database access tool
that exposes Windows ODBC data sources with
an XML-based TCP/IP interface. ODBC Socket Server runs
as a Windows NT/2K Service. It was coded using MS Visual C++ 6.0
and uses standard system calls. All source and project files are provided with
What are some of the uses of ODBC Socket Server?
There are two main markets that ODBC Socket Server caters to. The first market is
Windows-only shops who are looking to extend their small XML databases so they can be accessed
over a WAN where running Windows networking is not feasible and TCP/IP is their only option. For
instance, if you want to enable employees to manipulate a MS Access database from a thick client running
on their home PC's, then you could use ODBC Socket Server and its COM client object
(included in the distribution) in this scenario.
The larger market consists of enterprises where different operating systems are used, or a different operating system
is to be introduced. For instance, if you are developing a web application that needs to access a MS SQL Server database
and are familiar with Perl, it
is much easier (and efficient) to run Perl on a Linux or other UNIX operating system than Windows.
By using ODBC Socket Server and its Perl client module (included in the distribution) you can
easily achieve this integration.
What platforms does ODBC Socket Server run on?
The main ODBC Socket Server is a Windows service and will run on NT, 98 (and higher), and 2000.
Clients for Perl, C++, PHP, Python, and COM interfaces are included, allowing you to access ODBC Socket Server
from virtually any platform. It is also very easy to write your own ODBC Socket Server client.
Simply put, any client that supports TCP/IP can use ODBC Socket Server.
Why should I use ODBC Socket Server?
As you can read on our about page, the goal of Team FXML is to provide
tools that enable the developer to choose the best tools and platform for a task. If one of your project
constraints is that you need to access data on a Windows database, ODBC Socket Server allows
you to easily access this data at no additional cost no matter what platform you are doing.
What comparable commercial products are there?
The only other tool we are familiar with are OpenLink Software's ODBC drivers. OpenLink
uses a proprietary solution to solve a problem that requires an open solution. ODBC Socket Server
provides the open solution that you are looking for.
Who created ODBC Socket Server?
ODBC Socket Server was created by Team FXML. You can read more about us on our
about page. ODBC Socket Server was created because we wanted
to use a Linux application for an application that required accessing a MS SQL Server database.
Since no other open source solutions exist for this problem, we decided to create one. We hope
you find this product as useful as we do!
How is ODBC Socket Server licensed?
ODBC Socket Server is distributed under the GNU Public License. The complete text of the GNU
Public License is found at GNU's site. To briefly summarize the license, you are allowed to distribute and
modify this product free of charge, provided you make any changes you make to this product open source as well.
The clients and sample client applications are public domain and
meant to be modified for your own proprietary needs!
Why is ODBC Socket Server free?
Although we could have charged money for ODBC Socket Server, we have decided to continue
our proud tradition of providing high-quality open source software free of charge. We also hope to spread
the adoption of other, alternative, platforms in the enterprise so managers and developers alike can see the
relative merits of each platform.
I have heard free software is of inferior quality. Is this true?
Free software is just like commercial software, there are some good products and some poor products. Team
FXML is confident that ODBC Socket Server is a high-quality product that will assist many developers
in cross-platform data access.
What if I have a request for a feature or find a bug?
Please let us know by e-mail at email@example.com. We can't promise every feature request will be implemented though!
What other features do you have planned?
We would like to built an encryption layer onto the software to allow for more secure data transmission and
build some tools for Linux under KDE using ODBC Socket Server.
Is ODBC Socket Server secure?
Security was a priority when we built ODBC Socket Server. A more thorough discussion of security
is in our PDF manual (found on the download page), however we will say
that ODBC Socket Server uses client access lists to determine which clients can connect to ODBC
Socket Server. It is highly recommended that you adjust these client lists to your liking upon installing the
software, and again this procedure is described in our PDF manual.
How Y2K compliant is ODBC Socket Server?
ODBC Socket server transparently passes dates to and from your ODBC data source. If your
ODBC data source has Y2K compliant data, then ODBC Socket Server will not truncate your
date fields. However if your ODBC data is not Y2K compliant, ODBC Socket Server will not
make it compliant.
How large is Team FXML?
Team FXML is currently just a one man show.
How do the ODBC Socket Server clients and server communicate?
The clients and server communicate over TCP/IP stream sockets. The protocol used is XML-based and is well documented in the PDF manual.
Future versions of ODBC Socket Server may provide the option of using encoded or encrypted data transfer for added speed
What clients do you provide?
ODBC Socket Server ships with 4 types of clients. It ships with COM (Windows C++),
Perl, PHP, Python, and C++ (UNIX/Linux) interfaces. With each sample client comes a
sample server application that demonstrates how to use each client. The
clients are open source and released into the public domain. The sample applications
are public domain and are meant to be modified!
Why don't you use Microsoft's ADO XML DTD?
Release 2.0 of Microsoft's ADO heralded the ability to save ADO recordsets to disk in XML format.
Version 2.5 (now in Beta) expands this feature by allowing recordsets to be streamed to a string variable
or back to a socket.
ODBC Socket Server allows you to use Microsoft's ADO DTD if you so choose. The
"UseMSDTD" registry setting enables this feature. See the PDF manual on our products
page for more details.
Can I write my own ODBC Socket Server client?
Of course! Our XML TCP/IP communication protocol is fully documented in our PDF manual (found
on our products page) and we encourage you to write your own client if you find
our clients unsuitable for your task at hand.
How configurable is ODBC Socket Server?
Out of the box, ODBC Socket Server uses the registry to allow you to set: the port ODBC Socket
Server listens on, the maximum number of threads/connections running at one time, whether to emit CDATA or not,
the hosts the can and cannot connect to ODBC Socket Server, the debug level, and the SQL and thread
timeouts. Using the power of open source software though, you can configure ODBC Socket Server
to do anything you need it to do!
All registry details are fully documented in our PDF manual (found
on our products page).
How is ODBC Socket Server's socket layer implemented?
ODBC Socket Server uses the Winsock layer for all socket communication. Several Winsock functions
are wrapped via public domain functions.
Will there be DBI/PHP/ODBC compliant interfaces made available?
Depending on customer demand these interfaces may be developed. We chose XML and TCP/IP sockets
as our communication protocol so that any application could easily connect to ODBC Socket Server,
and the simplicity of the C++ and Perl interfaces demonstrate this. Please contact us if you
would like to see these interfaces developed, or (even better) if you have developed an interface
that you would like included in our distribution.
Can I use OLE DB Providers with ODBC Socket Server?
Absolutely! You do not always need to create an ODBC Data Source to use ODBC Socket Server.
By using an OLE DB Provier you can increase the speed of your application greatly. Just use the OLE DB Connection
String instead of the usual ODBC Socket Server connection string. A sample OLE DB connection string is:
Security Info=True; User ID=jsmith;Initial Catalog=pubs;
I am getting strange errors using Windows NT Service Pack 6?
Microsoft has confirmed a problem in Service Pack 6 that causes problems to
ODBC Socket Server if it is not installed as Administrator (which ODBC Socket Server does
not require). You can download a fix to this problem at Microsoft's site:
http://support.microsoft.com/support/kb/articles/Q245/6/78.asp. Service pack 6A also corrects this problem.
I get an error registering the service. Something about a bad ordinal number?
If you are experiencing a bad ordinal number in file "ATL.DLL", then please
download this version. Then, copy your existing
atl.dll from your winnt\system32 directory to a back-up location. Now copy the atl.dll version you have just downloaded into your winnt\system32 directory.
Last, register this dll via the command "regsvr32 c:\winnt\system32\atl.dll"
(assuming that is where your atl.dll is located). You should now be able to
register ODBCSocketServer.exe via the "ODBCSocketServer.exe /Service" command
If you still have difficulty, mail us.
How do I use quotes in my SQL queries?
If you get strange error messages using double-quotes in your SQL queries,
just use single quotes. For example:
SELECT * FROM authors WHERE name = 'Smith'
will work without problems.
I get errors using the PHP class?
There are two main areas of the PHP class that can generate errors. If you
experience problems using the xml functions, you must compile PHP with XML
support (by using the --with-xml configure option). We recommend using a
recent version of Apache (that includes the XML parser) to simplify the XML
module installation. See the PHP documentation for complete instructions.
The other difficulty could be a run-time error with the fsockopen option. This
problem is due to a bug in earlier PHP versions. Download and install the latest PHP version
to eliminate this problem.
My queries are very slow. Can I fix this?
The default output of ODBC Socket Server is to use Team FXML's XML DTD.
However, this output is also very slow. You can easily chage this DTD to the much
faster Microsoft DTD by adjusting registry setting "UseMSDTD" to 1 on the server machine.
Alternatively, you can adjust the registry setting to 2, this will result in more readable
output as well. These techniques are fully documented in the PDF manual.
Are PHP Lib interfaces available?
Leif Jakob (firstname.lastname@example.org
I've just written a PHPLIB conforming SQL-Class communicating with
the ODBC-Socket-Server (an OpenSource-Project to access M$-ODBCs
It's based on the PHP-client but doesn't require the XML-parser in
PHP. Everybody interested can get an early-state copy from me
by mail and/or join development.
I receive the error message ADO Error - NULL Connection?"
Update your version of ADO to the latest version.