****************************************************************
                      MICROSOFT SQL SERVER
              MICROSOFT ODBC-TREIBER für SQL SERVER 
              INFODATEI ZUR INSTALLTION, VERSION 3.7
****************************************************************

In dieser Datei wird die Verwendung des Microsoft SQL Server
ODBC-Treibers, Version 3.7 zusammen mit Microsoft SQL Server, 
Version 6.5 oder früher beschrieben.

Da der Microsoft SQL Server ODBC-Treiber Version 3.7 in SQL Server 7.0 
enthalten ist, sollten Benutzer von SQL Server 7.0 
Informationen zu diesem Treiber der SQL Server 7.0-Dokumentation 
und nicht dieser Readme-Datei entnehmen.

Themen:

1. Übersicht
2. Installieren von Instcat.sql auf dem Server
3. Abrufen der SQL Server Client Net-Libraries
4. Informationsquellen zur Verwendung von ODBC mit SQL Server
5. Verwendung des Treibers in einer Entwicklerumgebung
6. Kompatibilität

****************************************************************
1. Übersicht

Die Version 3.7 des ODBC-Treibers für SQL Server ist 
ein Win32 ODBC-Treiber der Version 3.51 und kann mit Anwendungen 
verwendet werden, die für ODBC 2.X- oder ODBC 3.X-APIs 
geschrieben wurden. Der Treiber kann mit SQL Server 
Version 4.21a oder höher verwendet und unter Windows 98, 95 oder 
Windows NT (Version 4.0 oder höher) ausgeführt werden.

Außerdem enthält die Version 3.7 des ODBC-Treibers für SQL Server 
ein Win32-SQL Server 7.0-Client-Netzwerk-Dienstprogramm. 
Dieses Dienstprogramm kann mit Microsoft SQL Server 
Version 4.21a oder höher und den Client Net-Libraries verwendet 
werden, die in diesen Versionen von SQL Server enthalten sind.

****************************************************************
2. Installieren von Instcat.sql auf dem Server

Der ODBC-Treiber für SQL Server verwendet eine Reihe von auf dem 
System gespeicherten Prozeduren, auch gespeicherte 
Katalogprozeduren genannt, um von dem SQL Server-Systemkatalog 
Informationen abzurufen. Jede Version des Microsoft ODBC-Treibers 
für SQL Server wurde zur Verwendung mit einer speziellen Version 
von gespeicherten Katalogprozeduren entwickelt. 

Die Datei Instcat.sql, die in der Version 3.7 des ODBC-Treibers 
für SQL Server enthalten ist, enthält geringfügige Aktualisierungen 
der gespeicherten Katalogprozeduren, die die Prozeduren auf die von 
diesem Treiber verwendete Versionen aufrüsten. Die Datei Instcat.sql, 
die in der Version 3.7 des ODBC-Treibers für SQL enthalten ist, ist 
mit der Datei Instcat.sql identisch, die in SQL Server 7.0 enthalten 
ist. SQL Server 7.0-Standorte müssen die Datei Instcat.sql nicht ausführen.


Der SQL Server-Systemadministrator muß zur Aktualisierung der 
gespeicherten Katalogprozeduren das Instcat.sql-Skript verwenden, 
um den ordnungsgemäßen Betrieb des Treibers sicherzustellen. Das 
Aktualisieren der gespeicherten Katalogprozeduren wirkt sich 
nicht auf frühere SQL Server-Clients aus. Die gespeicherten 
Katalogprozeduren müssen für alle Versionen von Microsoft SQL 
Server (4.21a bis 6.5) aktualisiert werden. Wenn Sie SQL 
Server 7.0 haben, ist eine Aktualisierung nicht erforderlich.


Um die gespeicherten Katalogprozeduren auf SQL Server 4.21a,
6.0 oder 6.5 zu aktualisieren, muß der Systemadministrator 
unter Verwendung des Isql-Dienstprogramms (siehe Anleitungen 
weiter unten) das Instcat.sql-Skript ausführen. Vor dem 
Vornehmen von Änderungen an der Master-Datenbank sollte der 
Systemadministrator eine Sicherungskopie erstellen. Ihr Computer 
muß als Clientarbeitsstation für Microsoft SQL Server 
konfiguriert werden, um das Isql-Dienstprogramm auszuführen.

Verwenden Sie bei einer Befehlseingabeaufforderung das 
Isql-Dienstprogramm, um das Instcat.sql-Skript auszuführen. 
Beispiel:

C:> ISQL /Usa /Psa_password /Sserver_name /ilocation\Instcat.Sql

sa_password 
	ist das Kennwort des Systemadministrators.
server_name 
	ist der Name des Servers, auf dem sich der SQL Server 
befindet.
location 
	ist der vollständige Pfad, unter dem das 
Instcat.Sql-Skript gespeichert ist.

Das Instcat.sql-Skript erstellt eine Vielzahl von Meldungen. Die 
meisten Meldungen geben an, wie viele Zeilen von den 
Transact-SQL-Anweisungen betroffen waren, die von dem Skript 
ausgegeben wurden. Sie können die meisten Meldungen ignorieren, 
sollten jedoch die Ausgabe nach Meldungen überprüfen, die 
Ausführungsfehler angeben. Wenn das Instcat.sql-Skript auf einem 
SQL Server der Version 6.0 ausgeführt wird, kann die Meldung, daß 
das Objekt sp_MS_upd_sysobj_category nicht existiert, ignoriert 
werden. Die letzte Meldung sollte Sie darüber unterrichten, daß 
das Instcat.sql-Skript erfolgreich durchgeführt wurde. Das 
Ausführen des Instcat.sql-Skripts schlägt fehl, wenn in der 
Master-Datenbank nicht ausreichend Speicherplatz vorhanden ist, 
um die gespeicherten Katalogprozeduren zu speichern oder die 
Änderungen an vorhandenen Prozeduren zu protokollieren.

****************************************************************
3. Abrufen der Client Net-Libraries für SQL Server 

Der ODBC-Treiber für SQL Server verwendet zur 
Kommunikation mit dem Server die Microsoft Client Net-Libraries 
für SQL Server.
Die Version 3.7 des ODBC-Treibers für SQL Server verwendet 
außerdem das Dienstprogramm zur SQL Server-Client-Konfiguration, 
um die mit einer ODBC-Datenquelle verknüpfte Net-Library zu 
verwalten.

Version 3.7 des ODBC-Treibers für SQL Server installiert nur eine
Net-Library: die Datei Dbnmpntw.dll (Win32 Named Pipe Net-Library).

Sie können die Version 3.7 des ODBC-Treibers für SQL Server mit 
früheren Win32 Net-Libraries verwenden. Wenn zur Herstellung einer 
Verbindung zum SQL Server eine andere als die Named Pipe Net-Library
benötigt wird, können Sie die Net-Library verwenden, die in Ihrer 
Version von SQL Server enthalten ist. Sie erhalten SQL 
Server Net-Libraries, indem Sie die Win32-SQL 
Server-Client-Dienstprogramme für Ihre Version von SQL 
Server installieren.

Die Version des SQL Server-Client-Netzwerk-Dienstprogramms, das 
in der Version 3.7 des ODBC-Treibers für SQL Server enthalten ist, 
kann mit den Client Net-Libraries von SQL Server 4.21a oder höher 
verwendet werden.

****************************************************************
4. Informationsquellen zur Verwendung von ODBC mit SQL Servern

Die Version 3.7 des ODBC-Treibers für Microsoft SQL Server ist 
derselbe Treiber wie der, der in SQL Server 7.0 enthalten ist. 
Benutzer von SQL Server 7.0 erhalten Angaben zur Version 3.7 des 
ODBC-Treibers für SQL Server in der SQL Server 7.0-Dokumentation.

Wenn die Version 3.7 des ODBC-Treibers für SQL Server mit SQL Server 
(Version 4.21a, 6.0 oder 6.5) verwendet wird, wird der Treiber  
auf dieselbe Art wie die früheren Treiberversionen betrieben. 
Diese Version von SQL Server enthält treiberspezifische Informationen, 
die in den folgenden Informationsquellen nachgelesen werden können:

* Datei drvssrvr.hlp, die in der früheren Version von SQL Server 
enthalten ist.

* Abschnitt "Programming ODBC for Microsoft SQL Server" in 
den SQL Server 6.5-Handbüchern.

* Weißbuch "Using ODBC with Microsoft SQL Server" auf der 
Microsoft-Website.
	
	
Für die Version 3.7 des Microsoft ODBC-Treibers für SQL Server 
gelten außerdem die zusätzlichen treiberspezifischen Informationen,
die als technische Hinweise unter "Using ODBC with Microsoft SQL 
Server" auf der Microsoft-Website angegeben sind.

Die Datei Sqlsodbc.hlp, die in Version 3.7 des ODBC-Treibers für 
SQL Server enthalten ist, bietet ausschließlich kontextbezogene 
Hilfe zum ODBC-Datenquellen-Assistent für SQL Server. Die 
Datei Drvssrvr.hlp, die in den früheren Versionen des
ODBC-Treibers für SQL Server enthalten war, enthielt 
treiberspezifische Informationen über frühere Versionen des 
Treibers. Die Informationen, die in früheren Versionen in der 
Datei Drvssrvr.hlp enthalten waren, finden Sie in dem SQL Server 
6.5-Handbuch unter "Programming ODBC for Microsoft SQL Server".

****************************************************************
5. Verwendung des Treibers in einer Entwicklerumgebung

Der ODBC-Treiber für SQL Server verwendet für einige 
ODBC-Funktionsaufrufe treiberspezifische Parameter. #defines für 
diese treiberspezifischen Parameter und treiberspezifische C- und
C++-Programmierstrukturen sind in der Datei Odbcss.h enthalten.

Die Version 3.7 des ODBC-Treibers für SQL Server kann mit der 
Datei Odbss.h verwendet werden, die in folgenden Quellen verfügbar
ist:

* SQL Server 7.0

* SQL Server 6.5 Service Pack 2 (SP2) oder höher.
	
* MDAC SDK

Das MDAC SDK ist Teil der Microsoft Developer
Network Professional-Ausgabe. Das SDK kann auch von der 
Microsoft-Website heruntergeladen werden unter: 	
http://www.microsoft.com/data. Das SDK ist auch von
Microsoft Press in der "Microsoft ODBC 3.0 Software 
Development Kit and Programmer's Reference" verfügbar.

****************************************************************
6. Kompatibilität

Da die Version 3.7 des ODBC-Treibers in SQL Server 7.0 
enthalten ist, sollten Benutzer von SQL Server 7.0 in der 
ODBC-Dokumentation in SQL Server 7.0 nachlesen. Die in diesem 
Abschnitt angegebenen Informationen zur Kompatibilität gelten 
nur, wenn dieser Treiber mit früheren Versionen von SQL Server 
(4.21a, 6.0 und 6.5) ausgeführt wird.

Die Version 3.7 des ODBC-Treibers für SQL Server zeigt einen 
neuen Assistenten an, wenn mit dem 
ODBC-Administrator-Dienstprogramm Datenquellen hinzugefügt oder 
konfiguriert werden oder wenn eine Anwendung SQLConfigDataSource 
aufruft und den Treiber dazu auffordert, Informationen vom 
Benutzer abzufragen. Durch Klicken auf die Schaltfläche "Hilfe" 
im Assistenten erhalten Sie Zugriff auf die Dokumentation zum 
Assistenten.

In der Version 2.65 des ODBC-Treibers für SQL Server, der 
zusammen mit SQL Server 6.5 geliefert wurde, wurde das Intervall 
SQL_COPT_SS_PERF_QUERY_INTERVAL anstatt von Millisekunden, wie 
fälschlicherweise in der Dokumentation beschrieben, in Sekunden 
angegeben (siehe Artikel "Knowledge Base" Q157753). In der 
Version 3.7 des ODBC-Treibers für SQL Server wurde das Intervall
SQL_COPT_SS_PERF_QUERY_INTERVAL in Millisekunden geändert und 
entspricht jetzt den Angaben in der Dokumentation.

Die folgenden Änderungen betreffen ausschließlich Anwendungen, die
zur Verwendung von ODBC 3.X API geschrieben wurden. Anwendungen, 
die zur Verwendung von ODBC 2.X API geschrieben wurden, sind nicht 
betroffen. Diese Änderungen sollten sich in den meisten 
ODBC-Anwendungen nicht auf die Verarbeitung von Ergebnissätzen 
auswirken.

In früheren Versionen des ODBC-Treibers für SQL Server geben 
aufeinanderfolgende PRINT- oder RAISERROR-Anweisungen in einem 
Stapel oder in einer gespeicherten Prozedur ihre Meldungen 
gemeinsam in einem Ergebnissatz zurück. In Version 3.7 des 
ODBC-Treibers für SQL Server werden die Meldungen für jede 
SQL-Anweisung als separate Ergebnissätze zurückgegeben. Sie müssen 
zwischen jeder Meldung SQLMoreResults aufrufen, um die Meldung für 
die nächste SQL-Anweisung zu erhalten. Alle Meldungen von einer 
einzelnen SQL-Anweisung, z.B. einer DBCC-Anweisung, werden in einem
einzigen Ergebnissatz zurückgegeben, und Sie müssen nicht zwischen 
jeder Meldung SQLMoreResults aufrufen.

In früheren Versionen des ODBC-Treibers für SQL Server hat ein 
Laufzeitfehler oder ein RAISERROR mit einem Schweregrad von 11 oder 
höher auf der ersten Anweisung in einem Stapel oder einer 
gespeicherten Prozedur immer dazu geführt, daß SQLExecute, 
SQLExecDirect oder SQLParamData den Fehler SQL_ERROR zurückgegeben 
haben. In Version 3.7 des ODBC-Treibers für SQL Server geben
SQLExecute, SQLExecDirect oder SQLParamData nur den Fehler 
SQL_ERROR zurück, wenn nach der ersten Anweisung keine weiteren 
Anweisungen ausgeführt werden. Wenn nach der ersten Anweisung 
weitere Anweisungen ausgeführt werden, auch bei einer einfachen 
RETURN-Anweisung ohne zurückgegebenen Wert, geben SQLExecute oder 
SQLExecDirect die Meldung SQL_SUCCESS_WITH_INFO zurück. Nach 
Verarbeitung von SQL_SUCCESS_WITH_INFO-Meldungen unter Verwendung 
von SQLGetDiagRec müssen Sie SQLMoreResults aufrufen, um auf dem 
nächsten Ergebnissatz positioniert zu werden.

Wenn bei früheren Versionen des Treibers auf der ersten Anweisung 
in einem Stapel oder einer gespeicherten Prozedur ein Fehler 
aufgetreten ist, konnte die Zugriffsnummer für eine andere 
SQL-Anweisung verwendet werden, nachdem SQLExecute oder 
SQLExecDirect den Fehler SQL_ERROR zurückgegeben haben. Wenn der 
3.7-Treiber SQL_SUCCESS_WITH_INFO zurückgibt, kann die Anweisung 
so lange keine andere SQL-Anweisung verarbeiten, bis 
SQLMoreResults SQL_NO_DATA zurückgibt oder alle Ergebnissätze, die 
auf den RAISERROR folgen, geschlossen wurden. Wenn kein Ergebnissatz
auf die Fehlermeldung folgt, kann SQLCloseCursor nicht aufgerufen 
werden. SQLFreeStmt(SQL_CLOSE) oder SQLMoreResults muß aufgerufen 
werden, um die Zugriffsnummer freizugeben und eine andere 
SQL-Anweisung verarbeiten zu können:

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

Führen Sie die folgende Anweisung aus:

SQLExecDirect(hstmt, "{ call TestPrc (NULL) }", SQL_NTS);

Wenn Sie eine frühere Version des ODBC-Treibers für SQL 
Server verwenden oder die Anwendung ODBC 2.X API verwendet, 
gibt SQLExecDirect den Fehler SQL_ERROR zurück. Nachdem 
SQLGetDiagRec SQL_NO_DATA oder SQLError SQL_NO_DATA_FOUND 
zurückgegeben hat, ist die Zugriffsnummer bereit, um eine 
andere SQL-Anweisung auszuführen.

Wenn eine Anwendung, die für ODBC 3.X API geschrieben wurde,
die Version 3.7 des ODBC-Treibers für SQL Server verwendet, 
gibt SQLExecDirect SQL_SUCCESS_WITH_INFO zurück. Wenn 
SQLGetDiagRec SQL_NO_DATA zurückgibt, kann die Zugriffsnummer
so lange keine andere SQL-Anweisung verarbeiten, bis 
SQLMoreResults SQL_NO_DATA zurückgibt oder 
SQLFreeStmt(SQL_CLOSE) aufgerufen wird.

In früheren Versionen des ODBC-Treibers für SQL Server geben
SQLExecute, SQLExecDirect oder SQLParamData SQL_SUCCESS zurück, 
wenn eine Anwendung eine gesuchte UPDATE- oder DELETE-Anweisung 
ausführt, die keine Zeilen betrifft. In diesem Fall gibt die 
Version 3.7 des Treibers weiterhin SQL_SUCCESS an Anwendungen 
zurück, die mit ODBC 2.X API geschrieben wurden. An Anwendungen,
die mit ODBC 3.X API geschrieben wurden, gibt der Treiber 
SQL_NO_DATA zurück. Wenn die Anwendung ODBC 2.X, die SQL_SUCCESS
erhält, oder die Anwendung ODBC 3.X, die SQL_NO_DATA erhält, 
anschließend SQLRowCount aufruft, gibt SQLRowCount den Wert Null
zurück.

Die Version ODBC 3.X definiert in Vergleich zur früheren Version
ODBC 2.X deutlicher, wie Ergebnisse zurückgegeben werden. Frühere
Versionen des ODBC-Treibers für SQL Server gaben die Werte von 
Ausgabeparametern und Rückgabewerten zurück, wenn die ODBC 
2.X-Funktionen SQLFetch oder SQLExtendedFetch auf dem letzten von 
einer gespeicherten Prozedur zurückgegebenen Ergebnissatz 
SQL_NO_DATA zurückgaben. Dasselbe passiert bei der Version 
3.7 des Treibers, wenn der Treiber von ODBC 2.X-Anwendungen 
aufgerufen wird. Wenn die Version 3.7 des ODBC-Treibers für SQL 
Server von ODBC 3.X-Anwendungen aufgerufen wird, gibt der Treiber 
jedoch so lange keine Ausgabeparameter oder Rückgabewerte zurück, 
bis SQLMoreResults SQL_NO_DATA zurückgibt.
****************************************************************
