Reservieren von URL-Namespaces mithilfe von HTTP.SYS

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.

Sie können in HTTP.SYS einen URL-Namespace explizit reservieren und diesen Namespace anschließend zum Erstellen von HTTP-Endpunkten verwenden. Dazu müssen Sie mit dem Konzept der expliziten und impliziten Reservierung von Namespaces vertraut sein und wissen, wie SQL Server einen HTTP-Endpunkt in HTTP.SYS registriert.

Explizite im Vergleich zu impliziter Namespacereservierung

Angenommen, ein Benutzer führt eine CREATE ENDPUNKG-Anweisung aus, wie z. B. die folgende:

CREATE ENDPOINT sql_endpoint 
   STATE = STARTED
AS HTTP (
   PATH = '/sql/AdvWorks', 
   AUTHENTICATION = (INTEGRATED ), 
   PORTS = ( CLEAR ), 
   SITE = 'MyServer'
)
FOR SOAP (
    ...
)
Go

Dann wird der Namespace http://MyServer:80/sql/AdvWorks implizit in HTTP.SYS reserviert. Das bedeutet, dass während der Ausführung der SQL Server-basierten Anwendung alle HTTP-Anforderungen an diesen Endpunkt zur Instanz von SQL Server weitergeleitet werden. Allerdings kann dieser Namespace von anderen Anwendungen verwendet werden, wenn die Instanz von SQL Server nicht ausgeführt wird.

Wenn Sie einen Namespace explizit reservieren, wird der Namespace speziell für SQL Server reserviert, und alle HTTP-Anforderungen an diesen Endpunkt werden zur Instanz von SQL Server weitergeleitet. Weitere Informationen finden Sie unter Reservieren eines HTTP-Namespace.

HinweisHinweis

Visual Studio 2005 und HTTP.SYS folgen unterschiedlichen Regeln zur URL-Kanonikalisierung. So kann HTTP.SYS beispielsweise einen eingeschlossenen Platzhalter wie "/SQL/Mypath/..." akzeptieren, der als Bestandteil einer PATH-Einstellung beim Erstellen eines Endpunkts angegeben wird. Dagegen gibt es in Visual Studio 2005 stärker eingeschränkte Kanonikalisierungsregeln, sodass die "..."-Information vor der Übertragung der URL entfernt wird.

Wie SQL Server den Endpunkt registriert

Zum Verwalten von HTTP-Endpunkten verwenden Sie CREATE ENDPOINT, ALTER ENDPOINT und DROP ENDPOINT. Sie müssen über die erforderlichen Berechtigungen zum Erstellen, Ändern oder Löschen des Endpunkts verfügen. Dieses Szenario wird im Thema GRANT (Endpunktberechtigungen) (Transact-SQL) beschrieben.

Wenn Sie zum Erstellen eines Endpunkts CREATE ENDPOINT ausführen, führt SQL Server die Anweisung aus und registriert den Endpunkt in HTTP.SYS. Je nach Kontext, in dem die Endpunktanweisung angegeben wird, bewirkt SQL Server den folgenden Identitätswechsel des Aufrufers:

  • Wenn Sie die Anweisung im Kontext eines Windows-Kontos ausführen, nimmt SQL Server die Identität des Aufrufers an, um den Endpunkt in HTTP.SYS zu registrieren.

  • Wenn Sie die Anweisung im Kontext eines SQL Server-Kontos ausführen, beispielsweise mit sa oder einem anderen SQL Server-Anmeldenamen, nimmt SQL Server die Identität des Aufrufers mithilfe des SQL Server-Kontos an, das bei der Installation von SQL Server angegeben wurde, um den Endpunkt in HTTP.SYS zu registrieren.

Sowohl das Windows-Konto als auch das SQL Server-Konto, dessen Identität von SQL Server angenommen wird, muss über lokale Windows-Administratorprivilegien verfügen, damit die HTTP-Endpunktregistrierung erfolgreich ist.

Überprüfen der HTTP-Namespacereservierungen

Um festzustellen, welche Namespaces in HTTP.SYS reserviert sind, führen Sie an der Eingabeaufforderung das HTTP-Konfigurationsdienstprogramm Httpcfg.exe aus.

HinweisHinweis

Httpcfg.exe wird als Bestandteil der Windows Server-Supporttools installiert. Weitere Informationen finden Sie unter Konfigurieren des Kernel-Modus-HTTP-Treibers (Http.sys).

Das folgende Beispiel zeigt die Verwendung von Httpcfg.exe für das Zurückgeben der Liste der reservierten HTTP-Namespaces:

httpcfg query urlacl

Mit diesem Befehl wird eine Liste aller vorhandenen Namespacereservierungen angezeigt. In dieser Liste wird die Namespace-URL sowie das Konto aufgeführt, unter dem die Reservierung erfolgte.

Hier eine typische Ausgabe für diesen Befehl:

URL: http://adventure-works.com:80/sql/
ACL : D:(A;;GA;;;S-1-5-21-123456789-1234567890-1262470759-1010)
-----------------------------------------------------------------
URL : https://adventure-works.com:443/sql/
ACL : D:(A;;GA;;;NS)
-----------------------------------------------------------------
HinweisHinweis

Dieses Verfahren kann nur von Mitgliedern der sysadmin-Rolle durchgeführt werden und setzt voraus, dass das Identitätswechselkonto über Administratorprivilegien auf dem Computer verfügt.