Environment
Novell Client 4.91 SP5 for Windows XP/2003
Situation
When attempting to access a database over an ODBC connection, the attempt will fail
For example, connect to the database using Excel 2007 or 2010 following:
DATA tab -> "From Other Data Sources" -> "From Microsoft Query" -> "<your database>"
It fails with following error
"Connection failed:
SQLState: 28000
[TOD][ODBC Driver]DLLLOAD: xvision, The specified procedure could not be found."
For example, connect to the database using Excel 2007 or 2010 following:
DATA tab -> "From Other Data Sources" -> "From Microsoft Query" -> "<your database>"
It fails with following error
"Connection failed:
SQLState: 28000
[TOD][ODBC Driver]DLLLOAD: xvision, The specified procedure could not be found."
Resolution
The problem can be resolved in any of the following ways:
1. Search the system for all copies of ZLIB.DLL. If an updated/custom version exists, copy it to C:\Windows\System32\. Provided this ZLIB still supports the open-source defined interfaces, the later ZLIB should continue satisfying Novell NDPS/iPrint and will also now satisfy the application(s) relying on it when it finds ZLIB.DLL in the SYSTEM32 directory.
or,
2. Copy the updated/custom ZLIB.DLL to C:\Program Files\Microsoft Office\Office12\, where the MSQRY32.EXE program runs from (or other affected program directory, as approriate). This will put the updated and/or custom version of ZLIB.DLL in the first directory Windows will search when the ODBC connector runs in the MSQRY32.EXE process space.
or,
3. If NDPS and/or iPrint are not being used, do not install NDPS or iPrint when installing the Novell Client. The Novell Client itself has no requirement for ZLIB.DLL and does not install ZLIB.DLL; only when the NDPS component is
selected.
1. Search the system for all copies of ZLIB.DLL. If an updated/custom version exists, copy it to C:\Windows\System32\. Provided this ZLIB still supports the open-source defined interfaces, the later ZLIB should continue satisfying Novell NDPS/iPrint and will also now satisfy the application(s) relying on it when it finds ZLIB.DLL in the SYSTEM32 directory.
or,
2. Copy the updated/custom ZLIB.DLL to C:\Program Files\Microsoft Office\Office12\, where the MSQRY32.EXE program runs from (or other affected program directory, as approriate). This will put the updated and/or custom version of ZLIB.DLL in the first directory Windows will search when the ODBC connector runs in the MSQRY32.EXE process space.
or,
3. If NDPS and/or iPrint are not being used, do not install NDPS or iPrint when installing the Novell Client. The Novell Client itself has no requirement for ZLIB.DLL and does not install ZLIB.DLL; only when the NDPS component is
selected.
Cause
Examining a Process Monitor log of the failure, the last .DLL loaded was
C:\Windows\System32\zlib.dll. ZLIB is an open-source ZIP compression
library, which does not ship with Windows itself. i.e. It always has to
be delivered by an application installation, and is not available on a
clean Windows install.
In the failure case, the ZLIB.DLL in C:\Windows\System\ directory is a ZLIB.DLL 1.1.4 28NOV2005. This DLL was optionally installed by Novell when the Novell Client was installed, as part of the Novell NDPS and/or iPrint client, to support compressed data download and upload from the printer driver repository.
In the success case, no ZLIB.DLL existed in SYSTEM32, and the version of ZLIB.DLL ultimately found and loaded was in an application-specific directory. This was not the first directory searched, since Windows searches in the application's directory first, and then in the Windows PATH.
The application's program directory must be in the PATH since ZLIB.DLL is found in the success case, but once Novell Client and NDPS/iPrint are present, this search successfully finds ZLIB.DLL in the SYSTEM32 directory and
never progresses as far as searching the application's program directory.
The failure occurs because the application requires ZLIB.DLL included in the application installation, which contains later or custom extensions to the open-source ZLIB interface, beyond what included in the ZLIB.DLL 1.1.4 28NOV2005 version installed when the Novell Client is installed.
Replacing the ZLIB.DLL in SYSTEM32 with a later version is not a problem for NDPS/iPrint, as long as it supports the open-source defined interfaces upon which NDPS/iPrint relies.
In the failure case, the ZLIB.DLL in C:\Windows\System\ directory is a ZLIB.DLL 1.1.4 28NOV2005. This DLL was optionally installed by Novell when the Novell Client was installed, as part of the Novell NDPS and/or iPrint client, to support compressed data download and upload from the printer driver repository.
In the success case, no ZLIB.DLL existed in SYSTEM32, and the version of ZLIB.DLL ultimately found and loaded was in an application-specific directory. This was not the first directory searched, since Windows searches in the application's directory first, and then in the Windows PATH.
The application's program directory must be in the PATH since ZLIB.DLL is found in the success case, but once Novell Client and NDPS/iPrint are present, this search successfully finds ZLIB.DLL in the SYSTEM32 directory and
never progresses as far as searching the application's program directory.
The failure occurs because the application requires ZLIB.DLL included in the application installation, which contains later or custom extensions to the open-source ZLIB interface, beyond what included in the ZLIB.DLL 1.1.4 28NOV2005 version installed when the Novell Client is installed.
Replacing the ZLIB.DLL in SYSTEM32 with a later version is not a problem for NDPS/iPrint, as long as it supports the open-source defined interfaces upon which NDPS/iPrint relies.