Резервирование пространства имен HTTP

Резервирование пространства имен HTTP для экземпляра SQL Server 2005 выполняется либо неявно, например при вызове инструкции CREATE ENDPOINT, либо явно хранимой процедурой sp_reserve_http_namespace.

Пространства имен URL-адресов резервируются по следующим причинам:

  • Приложение, которое запущено не под учетной записью администратора, нельзя привязать к пространству имен во время выполнения, если администратор его не зарезервировал. Это требование драйвера HTTP (Http.sys), работающего в режиме ядра.
    Единственным исключением из этого правила является приложение, запущенное под локальной системной учетной записью. Приложения, запущенные под учетной записью локальной системы, могут привязываться к любому свободному пространству имен. Даже если приложение выполняется под учетной записью локальной системы, пространства имен рекомендуется резервировать по следующим причинам.
  • Резервирование пространства имен гарантирует, что другие приложения не смогут привязаться к нему; другими словами, приложение является монопольным владельцем пространства имен.
    Например, если экземпляр SQL Server 2005 выполняется с учетной записью локальной системы, резервировать пространство имен не требуется, однако рекомендуется это сделаьт, чтобы избежать конфликтов приложений по URL-адресам.

Резервирование пространств имен осуществляется по иерархическому принципу. Например, вместе с пространством имен http://adventure-works.com:80/ резервируются все подпространства (http://adventure-works.com:80/sqlapp1 и http://adventure-works.com:80/sqlapp2/dir1).

ms190614.note(ru-ru,SQL.90).gifПримечание.
Чтобы зарезервировать пространство имен HTTP при помощи драйвера HTTP (Http.sys), работающего в режиме ядра, требуются привилегии администратора Windows на локальном компьютере, где установлен экземпляр SQL Server 2005.

Явное резервирование

Чтобы явно зарезервировать пространство имен URL-адресов, администратор, который хочет дать пользователям возможность выполнять инструкции языка DDL для конечных точек без обширных полномочий на компьютере, может использовать хранимую процедуру sp_reserve_http_namespace.

Например, можно подключиться к экземпляру SQL Server 2005, используя механизм проверки подлинности Windows, имя входа с правами администратора, и выполнить следующую процедуру:

sp_reserve_http_namespace N'http://MyServer:80/sql'
GO

Эта хранимая процедура явно резервирует указанное пространство имен, где MyServer — имя сервера, а 80 — номер порта. Эта процедура резервирует указанное пространство имен URL-адресов таким образом, чтобы последующие операции DDL в этом пространстве не требовали наличия прав доступа администратора на данном компьютере. Пользователь, не имеющий прав доступа администратора ни на каком компьютере, может выполнить инструкцию DDL конечной точки.

Например, пользователь может выполнить следующую инструкцию CREATE ENDPOINT:

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

Инструкция конечной точки просто регистрирует /sql/AdvWorks в зарезервированном пространстве в HTTP.SYS. Клиентское приложение может послать конечной точке запрос SOAP, например запросив у сервера ответ WSDL:

http://MyServer/sql/AdvWorks?wsdl

Имя пространства имен, указанное в процедуре sp_reserve_http_namespace, должно иметь следующий вид:

<scheme>://<hostpart>[:<port>]/<RelativeURI>
  • scheme
    Можно использовать http или https.
  • hostpart
    Имя узла или подстановочный символ: знак плюс (+) или звездочка (*).

    Знак плюс (+) означает, что операция резервирования применяется для всех возможных имен узлов компьютера для указанных параметров <scheme> и <port>.

    Знак звездочка (*) означает, что операция резервирования применяется для всех возможных имен узлов компьютера для параметров <scheme> и <port>, которые явно не зарезервированы процедурой sp_reserve_http_namespace, активными конечными точками или другими приложениями.

Определение пространства имен для конечной точки

Правильное пространство имен для конечной точки можно определить на основе параметров инструкции CREATE ENDPOINT.

Значение параметра PORTS определяет схему пространства имен, как показано в следующей таблице:

Значение конечной точки Значение параметра <scheme>

CLEAR

http

SSL

https

n

http

Значение параметра CLEAR_PORT или SSL_PORT определяет номер порта (<port>) пространства имен.

Значение параметра PATH определяет <RelativeURI> пространства имен.

Значение параметра SITE определяет <hostpart> пространства имен.

Например, в следующем примере создается конечная точка с пространством имен http://testhost:80/sqlurl/myapp.

CREATE ENDPOINT ext_endpoint
    STATE = STARTED
AS HTTP (       
PATH = '/squl/myapp'
, PORTS = CLEAR
, SITE = testhost
, CLEAR_PORT = 80 
)

В следующем примере создается конечная точка с пространством имен https://*:443/sqlurl/myapp:

CREATE ENDPOINT ext_endpoint
    STATE = STARTED
AS HTTP (       
PATH = ‘/squl/myapp’
, PORTS = SSL
, SITE = *
, SSL_PORT = 443 
)

Примеры

В следующем примере администратор резервирует пространство имен в HTTP.SYS для соединения SSL. Таким образом, пользователь может создать конечную точку, указав для параметра PORT значение SSL.

sp_reserve_http_namespace N'https://MyServer:443/sql'

См. также

Справочник

Резервирование пространств имен URL-адресов при помощи Http.sys
Удаление резервирования пространства имен HTTP

Основные понятия

Настройка драйвера протокола HTTP, работающего в режиме ядра (Http.sys)

Справка и поддержка

Получение помощи по SQL Server 2005