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

В будущей версии Microsoft SQL Server эта возможность будет удалена. Избегайте использования этой возможности в новых разработках и запланируйте изменение существующих приложений, в которых она применяется.

Можно явно зарезервировать пространство имен URL-адресов в HTTP.SYS, а затем использовать это пространство имен для создания конечных точек HTTP. Для этого необходимо понимание концепции явного и неявного резервирования пространства имен, а также понимание применяемого в SQL Server способа регистрации конечной точки HTTP-адресов в HTTP.SYS.

Сравнение явного и неявного резервирования пространства имен

Когда пользователь выполняет инструкцию CREATE ENDPOINT, например, подобную следующей:

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

Пространство имен http://MyServer:80/sql/AdvWorks неявно резервируется в HTTP.SYS. Это означает, что, пока работает приложение на базе SQL Server, любые запросы HTTP к этой конечной точке перенаправляются в экземпляр SQL Server. Однако это пространство имен может быть занято другими приложениями, если экземпляр SQL Server не функционирует.

При явном резервировании пространство имен резервируется специально для SQL Server, и все запросы HTTP к этой конечной точке перенаправляются в экземпляр SQL Server. Дополнительные сведения см. в разделе Резервирование пространства имен HTTP.

ПримечаниеПримечание

Visual Studio 2005 и Http.sys следуют различным правилам стандартизации URL-адресов. Например для Http.sys допускаются включающие подстановочные знаки, например «/SQL/Mypath/...», указанные как часть настройки PATH при создании конечной точки. Однако Visual Studio 2005 в соответствие с более строгими правилами стандартизации обрезает часть передаваемых данных, содержащую подстановочные знаки «...», прежде чем передать URL-адрес.

Как SQL Server регистрирует конечную точку

Для управления конечными точками HTTP используются инструкции CREATE ENDPOINT, ALTER ENDPOINT и DROP ENDPOINT. Необходимо иметь соответствующие разрешения для создания, изменения и удаления конечной точки. Это описывается в разделе GRANT, предоставление разрешений на конечные точки (Transact-SQL).

При выполнении инструкции CREATE ENDPOINT для создания конечной точки SQL Server запускает инструкцию и регистрирует конечную точку в HTTP.SYS. В зависимости от контекста, в котором задана инструкция конечной точки, SQL Server олицетворяет вызывающую сторону следующим образом:

  • Если выполнять инструкцию в контексте учетной записи Windows, SQL Server олицетворяет вызывающую сторону для регистрации конечной точки в HTTP.SYS.

  • Если инструкция выполняется в контексте учетной записи SQL Server, например sa или какого-то другого имени входа SQL Server, то SQL Server олицетворяет вызывающую сторону с использованием учетной записи SQL Server, указанной при установке SQL Server, чтобы зарегистрировать конечную точку в HTTP.SYS.

Как учетная запись Windows, так и учетная запись SQL Server, которую олицетворяет SQL Server, должны иметь локальные права доступа администратора Windows для успешной регистрации конечной точки HTTP.

Проверка резервирования пространств имен HTTP

Чтобы определить, какие пространства имен зарезервированы в HTTP.SYS, необходимо запустить программу настройки конфигурации HTTP, Httpcfg.exe, из командной строки.

ПримечаниеПримечание

Программа Httpcfg.exe устанавливается в составе инструментов Windows Server Support. Дополнительные сведения см. в разделе Настройка драйвера протокола HTTP, работающего в режиме ядра (Http.sys).

В нижеследующем примере показано, как использовать программу Httpcfg.exe, чтобы получить список зарезервированных пространств имен HTTP:

httpcfg query urlacl

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

Ниже приведен типичный образец выходных данных для этой команды:

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)-----------------------------------------------------------------
ПримечаниеПримечание

Эта процедура может быть выполнена только членами роли sysadmin и требует, чтобы учетная запись олицетворения имела административные права доступа на компьютере.