Http.sys를 사용하여 URL 네임스페이스 예약

Microsoft SQL Server의 이후 버전에서는 이 기능이 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 응용 프로그램은 수정하십시오.

HTTP.SYS에서 URL 네임스페이스를 명시적으로 예약하고 이 네임스페이스를 사용하여 HTTP 끝점을 만들 수 있습니다. 이 작업을 수행하려면 명시적 및 암시적 네임스페이스 예약의 개념을 이해하고 SQL Server에서 HTTP.SYS를 사용하여 HTTP 끝점을 등록하는 방법을 알아야 합니다.

명시적 네임스페이스 예약과 암시적 네임스페이스 예약

다음과 같이 CREATE ENDPOINT 문을 실행하는 경우

CREATE ENDPOINT sql_endpoint 
   STATE = STARTED
AS 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에는 끝점을 만들 때 PATH 설정의 일부로 지정된 "/SQL/Mypath/..." 등의 포함 와일드카드를 사용할 수 있습니다. 그러나 Visual Studio 2005에서는 더 엄격한 정규화 규칙을 사용하며 URL을 전송하기 전에 "..." 정보를 자릅니다.

SQL Server에서 끝점을 등록하는 방법

HTTP 끝점을 관리하려면 CREATE ENDPOINT, ALTER ENDPOINTDROP ENDPOINT를 사용합니다. 끝점을 만들거나 수정 또는 삭제할 수 있는 권한이 있어야 합니다. 이 권한에 대해서는 GRANT 끝점 사용 권한(Transact-SQL) 항목에서 설명합니다.

끝점을 만들기 위해 CREATE ENDPOINT를 실행하면 SQL Server는 문을 실행하고 HTTP.SYS에 끝점을 등록합니다. 끝점 문이 지정된 컨텍스트에 따라 SQL Server는 다음과 같이 호출자를 가장합니다.

  • Windows 계정의 컨텍스트에서 문을 실행하는 경우 SQL Server 2005는 호출자를 가장하여 HTTP.SYS에 끝점을 등록합니다.

  • SQL Server 계정(예: sa 또는 기타 SQL Server 로그인)의 컨텍스트에서 문을 실행하는 경우 SQL Server는 SQL Server가 설치될 때 지정된 SQL Server 계정을 사용하여 호출자를 가장하는 방식으로 HTTP.SYS에 끝점을 등록합니다.

HTTP 끝점을 등록하려면 SQL Server에서 가장하는 Windows 계정과 SQL Server 계정에 로컬 Windows 관리자 권한이 있어야 합니다.

HTTP 네임스페이스 예약 확인

HTTP.SYS에 예약되어 있는 네임스페이스를 확인하려면 명령 프롬프트에서 HTTP 구성 유틸리티인 Httpcfg.exe를 실행합니다.

[!참고]

Httpcfg.exe는 Windows Server 지원 도구의 일부로 설치됩니다. 자세한 내용은 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 역할의 멤버만이 실행할 수 있으며 가장 계정이 컴퓨터에서 관리자 권한을 가져야 합니다.