Netzwerkprotokolle und TDS-Endpunkte

Bei der Kommunikation zwischen SQL Server Database Engine (Datenbankmodul) und einer Anwendung wird die Kommunikation in einem Microsoft-Kommunikationsformat formatiert, das als Tabular Data Stream-Paket (TDS) bezeichnet wird. Die Netzwerkprotokollebene der SQL Server-Netzwerkschnittstelle (SQL Network Interface, SNI), die die Netzwerkbibliotheken für SQL Server 2000 und MDAC (Microsoft Data Access Components) ersetzt, verkapselt das TDS-Paket in einem Standardkommunikationsprotokoll, z. B. TCP/IP oder Named Pipes. Die SNI-Protokollebene wird sowohl von Database Engine (Datenbankmodul) als auch von SQL Server Native Client verwendet. Die SNI-Protokollebene wird nicht direkt konfiguriert. Stattdessen werden der Server und SQL Server Native Client für die Verwendung eines Netzwerkprotokolls konfiguriert. Database Engine (Datenbankmodul) und SQL Server Native Client verwenden dann automatisch die entsprechenden Protokolleinstellungen. Der Server erstellt für jedes Netzwerkprotokoll ein SQL Server-Objekt, das als TDS-Endpunkt bezeichnet wird. Auf dem Server werden die TDS-Endpunkte während der SQL Server-Installation durch SQL Server installiert.

Dieses Thema beschreibt, wie der Server TDS-Endpunkte erstellt und verwendet. Weitere Informationen zum Konfigurieren des Servers finden Sie unter Konfigurieren von Servernetzwerkprotokollen und Netzwerkbibliotheken.

Auf dem Clientcomputer muss SQL Server Native Client installiert und für die Verwendung eines Netzwerkprotokolls konfiguriert sein, das auf dem Server aktiviert ist. Weitere Informationen zu Clients finden Sie unter Konfigurieren von Clientnetzwerkprotokollen.

Aktivieren von Serverprotokollen nach dem Setup

Die zugrunde liegenden Netzwerkprotokolle des Betriebssystems (z. B. TCP/IP) sollten bereits auf dem Client und dem Server installiert sein. Netzwerkprotokolle werden in der Regel während der Installation von Windows installiert. Sie sind nicht Teil des SQL Server-Setups. Wenn das erforderliche Netzwerkprotokoll auf dem Server nicht verfügbar und konfiguriert ist, wird Database Engine (Datenbankmodul) nicht gestartet. Wenn das erforderliche Netzwerkprotokoll auf dem Client nicht verfügbar und konfiguriert ist, kann die Netzwerkbibliothek nicht verwendet werden.

HinweisHinweis

Im Folgenden bedeutet "Aktivieren eines Protokolls" das Aktivieren des Protokolls für SQL Server, nicht für das Betriebssystem.

Die für die Kommunikation mit SQL Server von einem anderen Computer aus erforderlichen Netzwerkprotokolle werden häufig während der Installation für SQL Server nicht aktiviert. Um eine Verbindung von einem Clientcomputer aus herzustellen, müssen Sie daher ggf. das TCP/IP-, Named Pipes- oder VIA-Protokoll aktivieren. (Das Shared Memory-Protokoll wird standardmäßig in allen Installationen aktiviert; es kann jedoch nur zum Herstellen einer Verbindung mit Database Engine (Datenbankmodul) aus einer Clientanwendung auf dem gleichen Computer verwendet werden). Weitere Informationen zu den Netzwerkprotokollen, die für Ihren Installationstyp aktiviert sind, finden Sie unter Standardnetzwerkkonfiguration von SQL Server.

Verwenden Sie den SQL Server-Konfigurations-Manager, um die Netzwerkprotokolle zu aktivieren. Alternativ können Protokolle während der Installation mithilfe von Optionen an der Eingabeaufforderung aktiviert werden. Weitere Informationen finden Sie unter Vorgehensweise: Installieren von SQL Server 2008 R2 von der Eingabeaufforderung.

Nach dem Installieren und Konfigurieren der Netzwerkverbindungen ist SQL Server in der Lage, auf jeder beliebigen Kombination aus Server-Netzwerkprotokollen gleichzeitig zu lauschen.

Definition eines TDS-Endpunkts

Ein TDS-Endpunkt ist das SQL Server-Objekt, das den Kommunikationspunkt zwischen SQL Server und einem Client darstellt. SQL Server erstellt automatisch einen Endpunkt für jedes der vier Protokolle, die von SQL Server unterstützt werden. Standardmäßig besitzen alle Benutzer Zugriff darauf, wenn die Protokolle aktiviert werden. Wenn ein Netzwerkprotokoll nicht aktiviert ist, ist der Endpunkt zwar trotzdem vorhanden, kann jedoch nicht verwendet werden. Ein zusätzlicher Endpunkt wird für die dedizierte Administratorverbindung (Dedicated Administrator Connection, DAC) erstellt, der nur von Mitgliedern der festen Serverrolle sysadmin verwendet werden kann.

SQL Server generiert einen eindeutigen Namen für jeden TDS-Endpunkt. In der folgenden Tabelle sind die Endpunkte aufgeführt, die automatisch erstellt werden.

Zweck

Endpunktname

Shared Memory

TSQL LocalMachine

Named Pipes

TSQL Named Pipes

TCP/IP

TSQL Default TCP

VIA

TSQL Default VIA

DAC

Dedizierte Administratorverbindung

HTTP

HyperText Transport Protocol

Für die Named Pipes- und Shared Memory-Protokolle kann nur ein Endpunkt pro Instanz vorhanden sein. Es sind keine konfigurierbaren Endpunkte für diese Protokolltypen vorhanden. Für TCP/IP und VIA ist ein Standardendpunkt vorhanden, es können jedoch zusätzliche Endpunkte erstellt werden. HTTP-Endpunkte werden ebenfalls von Benutzern erstellt, und sie werden nicht im SQL Server-Konfigurations-Manager angezeigt.

Wichtiger HinweisWichtig

Das VIA-Protokoll ist veraltet. Diese Funktion wird in zukünftigen Versionen von Microsoft SQL Server nicht mehr bereitgestellt. Verwenden Sie diese Funktion beim Entwickeln neuer Anwendungen nicht, und planen Sie das Ändern von Anwendungen, in denen es zurzeit verwendet wird.

Nur der Besitzer und der Status können für Systemendpunkte (mithilfe von ALTER ENDPOINT) geändert werden. Sie können die Standardendpunkte nicht deaktivieren, sie können jedoch angehalten und gestartet werden. Ein angehaltener Endpunkt führt das Lauschen weiterhin durch, weist jedoch neue Verbindungen zurück und schließt diese.

HinweisHinweis

Standardmäßig werden Clients so konfiguriert, dass alle Protokolle ausprobiert werden, bis eines von ihnen funktioniert. Wenn das TCP/IP-Protokoll deaktiviert ist, fahren Clients mit dem nächsten Protokoll fort. Wenn TCP/IP aktiviert ist, der Endpunkt jedoch angehalten wurde, wird der Verbindungsversuch nicht zurückgewiesen, damit der Client keine anderen Protokolle ausprobiert, die angehaltene Verbindung kann jedoch nicht verwendet werden. In diesem Fall müssen Sie explizit eine Verbindung mit einem aktiven Endpunkt herstellen.

Dynamische TCP-Ports stellen in der Regel Verbindungen mit dem TCP-Standardendpunkt her.

Protokolleinstellungen in der Registrierung

Die Einstellungen für die TDS-Endpunkte werden in der Registrierung aufgezeichnet. Benutzer sollten Transact-SQL-Anweisungen zum Erstellen oder Ändern von Endpunkten und den Konfigurations-Manager von SQL Server zum Aktivieren bzw. Deaktivieren von Protokollen verwenden, wodurch die Endpunkte gestartet bzw. angehalten werden.

Wenn der Benutzer Protokolleinstellungen in der Registrierung ändert, zeigt dies keine Auswirkungen. Die Registrierung ist von den Metadaten getrennt.

Zuordnen einer Benutzerverbindung zu einem Endpunkt

Beim Herstellen einer Verbindung mit Database Engine (Datenbankmodul) wird die Verbindung in SQL Server einem bestimmten Endpunkt zugeordnet, und es wird geprüft, ob dem die Verbindung herstellenden Anmeldenamen die Berechtigung zum Verwenden des Endpunkts erteilt wurde. Verbindungen werden folgendermaßen zugeordnet:

  • Shared Memory-Verbindungen verwenden den TSQL LocalMachine-Endpunkt.

  • Named Pipes-Verbindungen verwenden den TSQL Named Pipes-Endpunkt.

  • Dedizierte Administratorverbindungen verwenden den Dedizierte Administratorverbindung-Endpunkt.

  • TCP-Verbindungen verwenden standardmäßig den TSQL Default TCP-Endpunkt. Wenn ein neuer (benutzerdefinierter) TCP-Endpunkt für einen bestimmten TCP-Port erstellt wird, werden Verbindungen mit diesem TCP-Port mit dem neuen Endpunkt verbunden. Wenn ein neuer TCP/TSQL-Endpunkt mithilfe von IP_ANY als Port erstellt wird, werden TCP-Verbindungen mit diesem neuen Endpunkt verbunden.

  • VIA-Verbindungen werden auf die gleiche Weise wie TCP-Verbindungen behandelt.

Benutzerdefinierte Endpunkte verhalten sich auf die gleiche Weise wie Standardendpunkte. Wenn ein Endpunkt für eine IP-Adresse (oder alle IP-Adressen mithilfe von IP_ANY) und einem bestimmten TCP-Port erstellt wird, wird Benutzern die Berechtigung zum Herstellen von Verbindungen mit dem Endpunkt in einem Prozess, der als Bereitstellung bezeichnet wird, erteilt. Sie behalten die Bereitstellung unabhängig davon bei, ob der Server tatsächlich die Kombination aus IP-Adresse und TCP-Port überwacht. Eine Verbindung mit einer IP-Adresse und einem TCP-Port wird einem Endpunkt in der folgenden Reihenfolge zugeordnet:

  1. Wenn die IP-Adresse und der TCP-Port genau mit der IP-Adresse und dem TCP-Port eines Endpunkts übereinstimmen, wird der Endpunkt verwendet.

  2. Wenn keine genaue Übereinstimmung vorliegt, wird der TCP-Port für alle IP_ANY-Endpunkte überprüft; wenn der TCP-Port in der Liste enthalten ist, wird dieser Endpunkt verwendet.

  3. Wenn keine genaue Portübereinstimmung vorliegt, wird der Standardendpunkt verwendet.

Der Verbindungszuordnungsvorgang führt immer zur Auswahl höchstens eines Endpunkts. Für diesen Endpunkt werden die Verbindungsberechtigungen überprüft. Wenn der Benutzer keine Berechtigungen für den betreffenden Endpunkt besitzt, sucht der Prozess nicht nach dem nächsten Endpunkt.

Beispiele: Zuordnen von Benutzerverbindungen und Endpunkten

Das folgende Beispiel zeigt, wie die IP-Adresse und der TCP-Port zum Auswählen eines Endpunkts verwendet werden. Angenommen, der Server ist für das Lauschen auf folgenden IP-Adressen und TCP-Ports konfiguriert:

127.0.0.1:1533

Außerdem wurden die folgenden TCP-Endpunkte eingerichtet:

Endpunktname

Konfigurierte Werte

Loopback

LISTENER_IP= 127.0.0.1 und LISTENER_PORT = 1533

Remote

LISTENER_IP = ALL und LISTENER_PORT = 1533

TSQL Default TCP

Mit keiner IP-Adresse und keinem Port verknüpft

Drei Verbindungsmöglichkeiten sind denkbar:

  • Wenn ein Client eine TCP-Verbindung mit 127.0.0.1:1533 herstellt, wäre der der Sitzung zugeordnete Endpunkt der Loopback-Endpunkt, weil eine genaue Übereinstimmung der IP-Adresse und des TCP-Ports mit dem Loopback-Endpunkt vorhanden ist.

  • Wenn ein Client eine TCP-Verbindung mit 251.40.20.151:1433 herstellt, liegt keine genaue Übereinstimmung der IP-Adresse und des TCP-Ports mit einem Endpunkt vor, Remote ist jedoch für die Verbindung verfügbar, weil Remote alle IP-Adressen und Port 1533 überwacht. Wenn der die Verbindung herstellende Anmeldename keine Berechtigungen für den Remote-Endpunkt besitzt, schlägt der Vorgang fehl. Es wird kein Verbindungsversuch mit anderen möglichen Endpunkten (z. B. TSQL Default TCP) unternommen, für die der Anmeldename möglicherweise Berechtigungen besitzt.

  • Wenn ein Client eine TCP-Verbindung mit 251.40.20.151:1433 herstellt, liegt keine genaue Übereinstimmung der IP-Adresse und des TCP-Ports mit einem Endpunkt vor, und es gibt keine Übereinstimmung für TCP-Port 1522 mit einer IP-Adresse; TSQL Default TCP ist jedoch für die Verbindung verfügbar, weil TSQL Default TCP alle IP-Adressen und Ports überwacht.

Aktualisierung und/oder Installation

Standardmäßig besitzen alle Benutzer Zugriff auf die TDS-Endpunkte (mit Ausnahme des Endpunkts der dedizierten Administratorverbindung). Da diese Endpunkte intern durch den Server erstellt werden, weisen sie keinen Besitzer auf, und sie können nicht einem bestimmten Konto zugeordnet werden.

Verwalten von Endpunkten mit Transact-SQL

Endpunkte werden mit Transact-SQL erstellt und verwaltet. Sie werden mit den CREATE ENDPOINT- und DROP ENDPOINT-Anweisungen erstellt und gelöscht. Es sind auch Anweisungen zum Steuern, Ändern und Anwenden des Besitzes von Endpunkten vorhanden.

Damit eine Verbindung mit einer Instanz von SQL Server mithilfe von Transact-SQL-Endpunkten hergestellt werden kann, müssen Benutzer über die CONNECT-Berechtigung für einen Endpunkt und globale Berechtigung für die Anmeldung bei SQL Server verfügen. Die Berechtigung zum Herstellen einer Verbindung mit den Standardendpunkten wird Benutzern beim Erstellen von Anmeldenamen implizit erteilt. Der Zugriff auf Endpunkte wird mit GRANT | DENY | REVOKE CONNECT ON ENDPOINT verwaltet.

Wenn ein neuer TCP-Endpunkt erstellt wird, hebt SQL Server automatisch alle vorhandenen Berechtigungen für den TSQL Default TCP-Endpunkt auf. Ein Beispiel dazu, wie ein neuer TCP-Endpunkt erstellt wird, finden Sie unter Vorgehensweise: Konfigurieren des Datenbankmoduls zum Überwachen mehrerer TCP-Ports.

  • Um den Zugriff auf einen Endpunkt einzuschränken, kann der Administrator der EVERYONE-Gruppe (mithilfe der DENY CONNECT-Anweisung) die Berechtigung verweigern und dann bestimmten Personen oder Rollen den Zugriff (mithilfe der GRANT CONNECT-Anweisung) erteilen.

  • Um die Berechtigungen in den ursprünglichen Zustand zurückzusetzen, verwenden Sie die GRANT CONNECT-Anweisung, um der PUBLIC-Gruppe die Verbindungsberechtigung zu erteilen.

  • Um einen Endpunkt für eine bestimmte Anwendung bereitzustellen, verwenden Sie die DENY CONNECT-Anweisung, um allen Benutzern mit Ausnahme der Benutzer dieser Anwendung die Verbindungsberechtigung zu verweigern.

SicherheitshinweisSicherheitshinweis

Die Autorisierung für die Verwendung eines Endpunkts ist dem Namen des Endpunkts zugeordnet. Wenn sich der Name eines Endpunkts ändert, werden die Sicherheitseinschränkungen (z. B. DENY CONNECT-Anweisungen) nicht mehr ordnungsgemäß angewendet. Der Name eines Endpunkts wird geändert, wenn sich der Port ändert. Wenn SQL Server dynamische Ports überwacht, kann sich der Port ändern, wodurch sich der Endpunktname ändert und die zugehörigen Endpunktberechtigungen gelöscht werden. Damit dieses Sicherheitsrisiko vermieden wird, legen Sie keine benutzerdefinierten Berechtigungen für Endpunkte fest, die dynamischen Ports zugeordnet sind, und ändern Sie nicht die Reihenfolge, in der ein TCP/IP-Endpunkt in der Registrierung auftritt.

Weitere Informationen zum Festlegen der Sicherheit für Endpunkte finden Sie unter GRANT (Endpunktberechtigungen) (Transact-SQL).