home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 1999 October
/
PCWorld_1999-10_cd1.bin
/
delphi
/
MDAC_TYP.EXE
/
RCDATA
/
CABINET
/
Sqlsrdme.txt
< prev
next >
Wrap
Text File
|
1999-01-22
|
13KB
|
298 lines
****************************************************************
MICROSOFT SQL SERVER
MICROSOFT SQL SERVER ODBC DRIVER
SETUP README, VERSION 3.7
****************************************************************
This file describes using the Microsoft SQL Server ODBC driver
version 3.7 with Microsoft SQL Server version 6.5 or earlier.
Because Microsoft SQL Server ODBC driver version 3.7 is shipped
with SQL Server 7.0, SQL Server 7.0 users should refer to SQL
Server 7.0 documentation for this driver instead of the
documentation in this Readme file.
The topics covered are:
1. Overview
2. Installing Instcat.sql on the server
3. Obtaining the SQL Server Client Net-Libraries
4. Documentation sources regarding using ODBC with SQL Server
5. Using the driver in a development environment
6. Compatability issues
****************************************************************
1. Overview
The SQL Server ODBC driver version 3.7 is a Win32ODBC
version 3.51 driver. It can be used with applications written
to either the ODBC 2.X or ODBC 3.X APIs. The driver works with
SQL Server version 4.21a or later. The driver runs on Windows
98, Windows 95, or Windows NT (version 4.0 or later).
A Win32 SQL Server 7.0 client Network utility is also
installed with the SQL Server ODBC driver version 3.7. This
SQL Server client Network utility can be used with SQL Server
version 4.21a or later, and the client Net-Libraries that come
with those versions of SQL Server.
****************************************************************
2. Installing Instcat.sql on the server
The SQL Server ODBC driver uses a set of system stored
procedures, known as catalog stored procedures, to obtain
information from the SQL Server system catalog. Each version
of the SQL Server ODBC driver is developed to work with a
specific version of the catalog stored procedures.
The Instcat.sql file included with the SQL Server ODBC driver
version 3.7 includes minor updates to the catalog stored
procedures that upgrade the procedures to the versions used by
this driver. The Instcat.sql file shipped with the SQL Server
ODBC driver version 3.7 is the same as the Instcat.sql file
shipped with SQL Server 7.0. SQL Server 7.0 sites need not run
the Instcat.sql.
The SQL Server system administrator must use the Instcat.sql
script to upgrade the catalog stored procedures to ensure the
proper operation of the driver. Upgrading the catalog stored
procedures does not affect the operation of older SQL Server
clients. This must be done for all versions of SQL Server
from version 4.21a to 6.5. This upgrade is not needed if you have SQL
Server 7.0.
To upgrade the catalog stored procedures on SQL Server 4.21a,
6.0, or 6.5, the system administrator runs Instcat.sql script
using the isql utility (see the following instructions).
Before making any changes to the master database, the system
administrator should back it up. To run isql, your computer
must be installed as a client workstation for SQL Server.
At a command prompt, use the isql utility to run the
Instcat.sqlscript. For example:
C:>ISQL /Usa /Psa_password /Sserver_name
/ilocation\Instcat.Sql
where
sa_password
Is the system administrator's password.
server_name
Is the name of the server on which SQL Server resides.
location
Is the full path of the location of Instcat.Sql.
The Instcat.sql script generates many messages. Most of these
indicate how many rows were affected by the Transact-SQL
statements issued by the script. Most of these messages can be
ignored, although the output should be scanned for messages that
indicate an execution error. When Instcat.sql is run on SQL
Server version 6.0, the message that says the object
sp_MS_upd_sysobj_category does not exist can be ignored. The
last message should indicate that Instcat.sql completed
successfully. The Instcat.sql script fails when there is not
enough space available in the master database to store the
catalog stored procedures or to log the changes to existing
procedures.
****************************************************************
3. Obtaining the SQL Server Client Net-Libraries
The SQL Server ODBC driver uses the SQL Server client
Net-Libraries to communicate with the server. The SQL Server
ODBC driver version 3.7 also uses the SQL Server Client
Configuration utility to manage the Net-Library associated with
an ODBC data source.
The SQL Server ODBC driver version 3.7 installs only one
Net-Library: the Win32 named pipe Net-Library, Dbnmpntw.dll.
You can use the SQL Server ODBC driver version 3.7 with older
Win32 Net-Libraries. If a Net-Library other than the named
pipe Net-Library is needed to connect to SQL Server, you can
use the Net-Library that came with your version of SQL Server.
You can get the SQL Server Net-Libraries by installing the
Win32 SQL Server Client utilities for your version of SQL
Server.
The version of the SQL Server Client Network utility
installed with the SQL Server ODBC driver version 3.7 can
be used with the client Net-Libraries from SQL Server 4.21a
or later.
****************************************************************
4. Documentation sources regarding using ODBC with SQL Server
The Microsoft SQL Server ODBC driver version 3.7 is same driver
that is shipped with SQL Server 7.0. SQL Server 7.0 users can
refer to SQL Server 7.0 documentation for the SQL Server ODBC
driver version 3.7.
When SQL Server ODBC driver version 3.7 is used with SQL Server
(version 4.21a, 6.0, or 6.5), the driver operates in the same
manner as the older drivers. You can use the driver-specific
information supplied with that version of SQL Server. This
includes:
* The drvssrvr.hlp file that shipped with the earlier version
of SQL Server.
* The section "Programming ODBC for Microsoft SQL Server" in
the SQL Server 6.5 manuals.
* The white paper "Using ODBC with Microsoft SQL Server"
available on MSDN.
The Microsoft SQL Server ODBC driver version 3.7 also complies
with additional driver-specific information in the technical
note "Using ODBC with Microsoft SQL Server," which is available
on MSDN.
The Sqlsodbc.hlp file that ships with the SQL Server
ODBC driver version 3.7 contains only context-sensitive help
for the SQL Server ODBC Data Source wizard. The Drvssrvr.hlp
file that shipped with earlier versions of the SQL Server ODBC
driver contained driver-specific information for older versions
of the driver. The information contained in the older versions
of Drvssrvr.hlp is duplicated in the SQL Server 6.5 manual
"Programming ODBC for Microsoft SQL Server."
****************************************************************
5. Using the driver in a development environment
The SQL Server ODBC driver uses driver-specific parameters for
several ODBC function calls. #defines for these driver-specific
parameters and driver-specific C and C++ programming structures
are contained in the include file Odbcss.h.
The SQL Server ODBC driver version 3.7 works with the Odbcss.h
file provided in the following sources:
* SQL Server 7.0
* SQL Server 6.5 Service Pack 2 (SP2) or later
* MDAC SDK
The MDAC SDK is part of the Microsoft Developer Network
Professional edition. The SDK can also be downloaded from the
Microsoft Web site at www.microsoft.com/data. The SDK is
also available from Microsoft Press in the "Microsoft ODBC
3.0 Software Development Kit and Programmer's Reference."
****************************************************************
6. Compatability issues
Since ODBC driver version 3.7 is shipped with SQL
Server 7.0, SQL Server 7.0 users should refer to the ODBC
documentation in SQL Server 7.0. The compatibility issues
documented in this section only apply when running this driver
with earlier versions of SQL Server (4.21a, 6.0, and 6.5).
The SQL Server ODBC driver version 3.7 displays a new wizard
when adding or configuring data sources in either the ODBC
Administrator utility or when an application calls
SQLConfigDataSource and asks the driver to prompt the user for
information. Click the Help button in the wizard to access
the wizard documentation.
In the SQL Server ODBC driver version 2.65 that shipped with
SQL Server 6.5, the SQL_COPT_SS_PERF_QUERY_INTERVAL
worked in seconds instead of the milliseconds it was
documented to use (see Knowledge Base article Q157753). In
the SQL Server ODBC driver version 3.7,
SQL_COPT_SS_PERF_QUERY_INTERVAL has been changed to work in
milliseconds as documented.
The following changes affect only applications written using
the ODBC 3.X API. They do not affect applications written
using the ODBC 2.X API. These changes should not impact
the result set processing in most ODBC applications.
In prior versions of the SQL Server ODBC driver, contiguous
PRINT or RAISERROR statements in a batch or stored procedure
return their messages together, in one result set. In the
SQL Server ODBC driver version 3.7, the messages for each
SQL statement are returned as separate result sets. You must
call SQLMoreResults in between each message to be positioned
on the message for the next SQL statement. The messages from
a single SQL statement, such as a DBCC statement, are all
returned in a single result set and there is no need to call
SQLMoreResults between each message.
In prior versions of the SQL Server ODBC driver, a run-time
error or a RAISERROR with a severity of 11 or higher on the
first statement in a batch or stored procedure always caused
either SQLExecute, SQLExecDirect, or SQLParamData to return
SQL_ERROR. In the SQL Server ODBC driver version 3.7,
SQLExecute, SQLExecDirect, or SQLParamData return SQL_ERROR
only if no other statements are executed after the first
statement. If any other statements are executed after the
first, even a simple RETURN statement with no return value,
then SQLExecute or SQLExecDirect return
SQL_SUCCESS_WITH_INFO. After processing the
SQL_SUCCESS_WITH_INFO messages using SQLGetDiagRec, call
SQLMoreResults to be positioned on the next result set.
When prior versions of the driver encountered an error on the
first statement of a batch or stored procedure, the statement
handle was available for use with another SQL statement after
SQLExecute or SQLExecDirect returned SQL_ERROR. When the
version 3.7 driver returns SQL_SUCCESS_WITH_INFO, the
statement is not free to process another SQL statement until
SQLMoreResults returns SQL_NO_DATA or until all result sets
following the RAISERROR have been closed. If no result set
follows the error message, then SQLCloseCursor cannot be
called. SQLFreeStmt(SQL_CLOSE) or SQLMoreResults must be
called to free the statement handle to process another SQL
statement:
CREATE PROCEDURE TestPrc @Parm1 as
IF (@Parm1 IS NULL)
BEGIN
RAISERROR ('Parm1 cannot be NULL', 11, 1)
RETURN
END
SELECT * FROM sysusers WHERE suid = @Parm1
GO
Execute the following:
SQLExecDirect(hstmt, "{ call TestPrc (NULL) }", SQL_NTS);
When using an older version of the SQL Server ODBC driver, or
if the application uses the ODBC 2.X API, then SQLExecDirect
returns SQL_ERROR. After SQLGetDiagRec returns SQL_NO_DATA
or SQLError returns SQL_NO_DATA_FOUND, the statement handle
is free to execute another SQL statement.
When using the SQL Server ODBC driver version 3.7 from an
application written to the ODBC 3.X API, then SQLExecDirect
returns SQL_SUCCESS_WITH_INFO. After SQLGetDiagRec returns
SQL_NO_DATA, the statement handle cannot be used to process
another SQL statement until SQLMoreResults returns
SQL_NO_DATA or SQLFreeStmt(SQL_CLOSE) is called.
In prior versions of the SQL Server ODBC driver, SQLExecute,
SQLExecDirect, or SQLParamData return SQL_SUCCESS when an
application executes a searched UPDATE or DELETE statement
that affects no rows. For this case, the version 3.7 driver
still returns SQL_SUCCESS to applications written with the
ODBC 2.X API, but it returns SQL_NO_DATA to applications
written with the ODBC 3.X API. If either the ODBC 2.X
application that receives SQL_SUCCESS or the ODBC 3.X
application that receives SQL_NO_DATA then calls SQLRowCount,
SQLRowCount returns a count of zero.
ODBC 3.X more clearly defines the way results are returned
than ODBC 2.X. Earlier versions of the SQL Server ODBC driver
returned the values of output parameters and return codes when
the ODBC 2.X functions SQLFetch or SQLExtendedFetch returned
SQL_NO_DATA on the last result set returned by a stored
procedure. The SQL Server ODBC driver version 3.7 driver retains
this behavior when called by ODBC 2.X applications. When the
version SQL Server ODBC driver version 3.7 is called by ODBC
3.X applications, however, the driver does not return output
parameters or return codes until SQLMoreResults returns
SQL_NO_DATA.
****************************************************************