Reservieren eines HTTP-Namespace
Das Reservieren eines HTTP-Namespace für die Verwendung mit einer Instanz von SQL Server 2005 kann mithilfe einer impliziten Reservierung (wenn Sie z. B. CREATE ENDPOINT verwenden) oder einer expliziten Reservierung mithilfe der gespeicherten Prozedur sp_reserve_http_namespace ausgeführt werden.
URL-Namespaces werden aus folgenden Gründen reserviert:
- Wenn eine Anwendung mit einem Nichtadministratorkonto ausgeführt wird, kann sie keine Bindung an den Namespace zur Laufzeit durchführen, ohne dass ein Administrator eine Reservierung des Namespace vornimmt. Diese Anforderung geht auf den Kernelmodus-HTTP-Treiber (Http.sys) zurück.
Die einzige Ausnahme dieser Regel liegt vor, wenn die Anwendung unter dem lokalen Systemkonto ausgeführt wird. Anwendungen, die unter dem lokalen Systemkonto ausgeführt werden, können einen beliebigen Namespace binden, wenn dieser frei ist. Selbst wenn die Anwendung unter dem lokalen Systemkonto ausgeführt wird, wird eine Reservierung der Namespaces aus folgenden Gründen empfohlen. - Das Reservieren eines Namespace stellt sicher, dass andere Anwendungen keine Bindung herstellen können; die Anwendung ist daher der alleinige Besitzer des Namespace.
Wenn eine Instanz von SQL Server 2005 z. B. unter dem lokalen Systemkonto ausgeführt wird, ist das Reservieren von Namespaces nicht erforderlich, wird jedoch empfohlen, um Anwendungskonflikte hinsichtlich URLs zu verhindern.
Die Reservierung von Namespaces erfolgt hierarchisch. Wenn z. B. der Namespace http://adventure-works.com:80/ reserviert ist, gilt dies auch für alle untergeordneten Namespaces wie z. B. http://adventure-works.com:80/sqlapp1 und http://adventure-works.com:80/sqlapp2/dir1.
Hinweis: |
---|
Wenn Sie einen HTTP-Namespace mithilfe des Kernelmodus-HTTP-Treibers (Http.sys) reservieren möchten, sind Windows-Administratorprivilegien für den lokalen Computer erforderlich, auf dem die Instanz von SQL Server 2005 installiert ist. |
Erstellen einer expliziten Reservierung
Um eine explizite Reservierung vorzunehmen, kann ein Administrator, der Benutzer in die Lage versetzen möchte, eine Endpunkt-DDL-Anweisung (Data Definition Language) ohne das Erfordernis hoher Privilegien auf dem Computer ausführen zu können, einen URL-Namespace mithilfe der gespeicherten Prozedur sp_reserve_http_namespace reservieren.
Sie können z. B. eine Verbindung mit einer Instanz von SQL Server 2005 mithilfe von Windows-Authentifizierung und einer Anmeldung mit Administratorprivilegien herstellen und dann die folgende gespeicherte Prozedur ausführen:
sp_reserve_http_namespace N'http://MyServer:80/sql'
GO
Die gespeicherte Prozedur reserviert den angegebenen Namespace explizit; dabei ist MyServer
der Servername und 80
die Portnummer. Durch diesen Vorgang wird der angegebene URL-Namespace so reserviert, dass nachfolgende DDL-Operationen in diesem Namespace keine Administratorprivilegien für den Computer erfordern. Ein Benutzer ohne jegliche Administratorprivilegien für den Computer kann die Endpunkt-DDL-Anweisung ausführen.
Ein Benutzer kann z. B. folgende CREATE ENDPOINT
-Anweisung ausführen:
CREATE ENDPOINT sql_endpoint
STATE = STARTED
AS HTTP(
PATH = '/sql/AdvWorks',
AUTHENTICATION = (INTEGRATED ),
PORTS = ( CLEAR ),
SITE = 'MyServer'
)
FOR SOAP (
...
)
GO
Die Endpunktanweisung registriert nur /sql/AdvWorks
im reservierten Namespace in HTTP.SYS. Eine Clientanwendung kann anschließend eine SOAP-Anforderung senden und z. B. eine WSDL-Antwort vom Server an den Endpunkt anfordern:
http://MyServer/sql/AdvWorks?wsdl
Der Namespacename, der in der gespeicherten Prozedur sp_reserve_http_namespace angegeben wird, muss die folgende Form besitzen:
<scheme>://<hostpart>[:<port>]/<RelativeURI>
scheme
Mögliche Werte sind http oder https.
hostpart
Es kann sich um einen bestimmten Hostnamen oder die folgenden Platzhalterzeichen handeln: das Pluszeichen (+) oder ein Sternchen (*).Das Pluszeichen (+) gibt an, dass der Reservierungsvorgang für alle möglichen Hostnamen für den Computer für das angegebene <Schema> und den <Port> gilt.
Das Sternchen (*) gibt an, dass der Reservierungsvorgang für alle möglichen Hostnamen für den Computer für das <Schema> und den <Port> gilt, die nicht anderweitig explizit reserviert sind, z. B. durch Ausführen anderer sp_reserve_http_namespace-Operationen, aktive Endpunkte oder andere Anwendungen.
Identifizieren des Namespaces für einen Endpunkt
Den richtigen Namespace für einen Endpunkt können Sie anhand der Parameter der CREATE ENDPOINT-Anweisung ermitteln.
Der Wert des PORTS-Parameters für die CREATE ENDPOINT-Anweisung bestimmt das Schema für den Namespace. Die folgende Tabelle stellt dies dar:
Endpunktwert | <scheme>-Wert |
---|---|
CLEAR |
http |
SSL |
https |
n |
http |
Der Wert des CLEAR_PORT- oder des SSL_PORT-Parameters legt den <port>-Wert des Namespaces fest
Der Wert des PATH-Parameters legt die <RelativeURI> des Namespaces fest.
Der Wert des SITE-Parameters legt den <hostpart> des Namespaces fest.
Die folgende Anweisung erstellt z. B. einen Endpunkt mit dem Namespace http://testhost:80/sqlurl/myapp.
CREATE ENDPOINT ext_endpoint
STATE = STARTED
AS HTTP (
PATH = '/squl/myapp'
, PORTS = CLEAR
, SITE = testhost
, CLEAR_PORT = 80
)
Die folgende Anweisung erstellt einen Endpunkt mit dem Namespace https://*:443/sqlurl/myapp:
CREATE ENDPOINT ext_endpoint
STATE = STARTED
AS HTTP (
PATH = ‘/squl/myapp’
, PORTS = SSL
, SITE = *
, SSL_PORT = 443
)
Beispiele
Das folgende Beispiel zeigt nochmals, wie ein Administrator einen Namespace in HTTP.SYS für eine SSL-Verbindung reserviert. Daher kann ein Benutzer Endpunkte erstellen, wenn PORT auf SSL festgelegt wird.
sp_reserve_http_namespace N'https://MyServer:443/sql'
Siehe auch
Verweis
Reservieren von URL-Namespaces mithilfe von HTTP.SYS
Löschen einer HTTP-Namespacereservierung
Konzepte
Konfigurieren des Kernel-Modus-HTTP-Treibers (Http.sys)