서버를 설정하여 네이티브 XML 웹 서비스 요청 수신

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

SQL Server 인스턴스를 기본적으로 HTTP SOAP 요청을 수신할 수 있는 웹 서비스로 설정하려면 HTTP 끝점(URL 네임스페이스)을 만들고 해당 속성과 끝점이 노출하는 메서드를 정의해야 합니다.

SQL Server에서 사용하도록 만들어진 HTTP 끝점은 World Wide Web 서비스용 Microsoft 인터넷 정보 서비스(IIS)에서 사용하는 동일한 TCP 포트(포트 80)에서 요청을 수신하고 받을 수 있습니다. SQL Server 용인지 아니면 IIS용인지 여부에 관계없이 각 URL은 시스템 HTTP 수신기 프로세스(Http.sys)를 통해 사용하도록 Windows Server 2003 운영 체제에 등록되어 있기 때문입니다.

예를 들어 URL이 http://MyServer/My endpoint인 경우 이 끝점은 Http.sys로 등록됩니다. 이 끝점에 SOAP 요청을 보내면 이 요청은 URL(MyServer)에서 식별된 서버로 먼저 이동합니다. 요청을 받으면 서버의 Http.sys 계층에서 URL의 나머지 부분을 등록된 끝점과 비교하여 요청을 SQL Server 인스턴스로 직접 전달하고 IIS는 거치지 않습니다. 또한 인터넷 서비스 관리자(Inetmgr.exe) 콘솔을 사용하면 http://MyServer/MyVDir 등의 다른 URL로 IIS용 HTTP 끝점에 해당하는 가상 디렉터리를 만들 수 있습니다. http://MyServer/MyVDir.

끝점 만들기 및 관리

끝점을 만들고 관리하려면 Transact-SQL 문을 사용합니다.

  • CREATE ENDPOINT

    끝점을 만들고 클라이언트 응용 프로그램에서 끝점으로 HTTP SOAP 요청을 보낼 수 있는 메서드를 정의하고 인증을 설정하고 포트를 지정하는 데 사용됩니다.

  • ALTER ENDPOINT

    메서드를 추가, 삭제 또는 수정하거나 끝점 옵션을 변경하는 데 사용됩니다.

  • DROP ENDPOINT

    필요 없거나 오래된 끝점을 삭제하는 데 사용됩니다.

끝점 사용 권한 및 인증

HTTP 끝점을 만들거나 수정하거나 삭제하려면 사용 권한이 있어야 합니다. 끝점에 액세스하려면 인증이 필요합니다. 다음 항목에서는 이러한 요구 사항에 대해 설명합니다.

웹 프로그래밍 기능

저장 프로시저나 사용자 정의 함수를 표시하려면 다음 항목을 참조하십시오.

기본 실행 환경

기본적으로 SQL Server의 네이티브 XML 웹 서비스에 대한 HTTP SOAP 요청은 다음 표에 나열된 설정으로 실행됩니다.

  • SET ANSI_NULL_DFLT_ON ON
    데이터베이스의 ANSI NULL 기본 옵션이 FALSE이면 새 열의 기본 Null 허용 여부가 무시됩니다. 자세한 내용은 SET ANSI_NULL_DFLT_ON(Transact-SQL)을 참조하십시오.

  • SET QUOTED_IDENTIFIER ON
    식별자를 큰따옴표로 구분할 수 있고 리터럴을 작은따옴표로 구분해야 합니다. 자세한 내용은 SET QUOTED_IDENTIFIER(Transact-SQL)를 참조하십시오.

  • SET NUMERIC_ROUNDABORT OFF
    전체 자릿수를 손실해도 오류 메시지를 생성하지 않으며 결과를 저장하는 열 또는 변수의 전체 자릿수로 결과가 반올림됩니다. 자세한 내용은 SET NUMERIC_ROUNDABORT(Transact-SQL)를 참조하십시오.

  • SET ARITHABORT ON
    쿼리 실행 중 오버플로 오류나 0으로 나누기 오류가 발생할 경우 쿼리나 일괄 처리가 종료됩니다. 자세한 내용은 SET ARITHABORT(Transact-SQL)를 참조하십시오.

  • SET ANSI_WARNINGS ON
    SUM이나 AVG와 같은 집계 함수에 Null 값이 있으면 경고 메시지가 생성됩니다. 자세한 내용은 SET ANSI_WARNINGS(Transact-SQL)를 참조하십시오.

  • SET ANSI_NULLS ON
    등호(=)나 부등호(<>) 연산자를 사용하여 수행되는 Null 값에 대한 비교가 평가되고 FALSE를 반환합니다. 자세한 내용은 SET ANSI_NULLS (Transact-SQL)를 참조하십시오.

  • SET CONCAT_NULL_YIELDS_NULL ON
    문자열을 Null 값과 연결하면 결과가 NULL 값입니다. 자세한 내용은 SET CONCAT_NULL_YIELDS_NULL(Transact-SQL)을 참조하십시오.

  • SET ANSI_PADDING ON
    열에 정의된 크기보다 짧은 값이 저장되는 경우 값을 채웁니다. char, varchar, binary 및 varbinary 데이터에 후행 공백이 있는 열의 경우 후행 공백이나 0이 잘리지 않습니다. 자세한 내용은 SET ANSI_PADDING(Transact-SQL)을 참조하십시오.

  • SET CURSOR_CLOSE_ON_COMMIT ON
    트랜잭션이 커밋되거나 롤백될 때 열린 커서가 모두 닫힙니다. 자세한 내용은 SET CURSOR_CLOSE_ON_COMMIT(Transact-SQL)를 참조하십시오.

  • SET IMPLICIT_TRANSACTIONS OFF
    기본적으로 HTTP SOAP 세션의 트랜잭션은 성공적으로 완료된 경우 모든 개별 문이 커밋되는 자동 커밋 모드에서 작동합니다. 자세한 내용은 SET IMPLICIT_TRANSACTIONS(Transact-SQL)를 참조하십시오.

HTTP SOAP 서비스의 클러스터 장애 조치(Failover) 고려 사항

SQL Server를 설치할 때는 도메인 계정을 SQL 서비스 계정으로 사용하고 이 계정에 로컬 컴퓨터에 대한 전체 관리 권한이 부여되지 않도록 하는 것이 좋습니다. SQL Server를 Windows 클러스터의 가상 서버로 설정할 때 이 작업을 수행하면 몇 가지 영향을 주게 됩니다. 이러한 고려 사항은 SQL HTTP-SOAP 기본 서비스 구성과 관련이 있습니다.

SQL Server는 Windows Server 2003의 HTTP 드라이버를 사용합니다. 이 HTTP 수신기는 SQL Server와 IIS 서비스를 포함하여 Windows 플랫폼에서 해당 HTTP 수신기를 구독하는 모든 응용 프로그램으로 요청을 라우팅합니다. 이 서비스를 구독하려면 응용 프로그램에서 HTTP API를 호출하여 네임스페이스라고도 하는 응용 프로그램의 특정 루트 URL을 예약해야 합니다. 이 예약을 통해 HTTP 드라이버는 해당 URL에서의 모든 후속 요청을 구독된 응용 프로그램으로 라우팅합니다. 로컬 Windows 관리자 권한이 있는 계정의 컨텍스트에서 이러한 HTTP API를 호출해야 합니다. SQL Server 2005부터 이러한 호출은 sp_reserve_http_namespaces라는 특수 저장 프로시저를 사용하여 수행됩니다. 자세한 내용은 HTTP 네임스페이스 예약을 참조하십시오. 이 저장 프로시저는 Windows HTTP 드라이버 라우팅을 위해 루트 URL과 SQL 서비스 계정 간에 바인딩을 만듭니다. SQL 서비스 계정에 로컬 컴퓨터에 대한 관리자 권한이 없을 경우 대신 Windows 로컬 관리자 계정을 사용하여 저장 프로시저를 호출해야 합니다. 이 네임스페이스가 등록된 경우 후속 HTTP 요청이 리디렉션되도록 해당 URL 아래에 SQL SOAP 끝점을 만들 수 있습니다. 클러스터 설정에서는 로컬 Windows 관리자가 각 노드에서 이 HTTP 네임스페이스 예약을 설정해야 합니다. 이렇게 하면 노드 중 하나에서 장애 조치가 발생하더라도 HTTP 서비스에서 요청을 SQL Server로 라우팅할 수 있습니다.

SQL Server와 HTTP-SOAP를 사용한 클러스터 장애 조치에서 고려할 또 다른 사항은 SSL 채널을 통한 요청에 암호화 인증서를 사용하는 시기입니다. 자세한 내용은 SSL에 사용되는 인증서 구성을 참조하십시오. 클러스터 환경에서는 인증서 구성 작업도 각 노드에서 수행해야 합니다. 이러한 인증서의 제목은 가상 서버 이름의 정규화된 이름으로 설정해야 합니다. HTTP를 통한 Kerberos 인증을 구성하려면 Http.sys를 사용하여 Kerberos 서비스 사용자 이름 등록을 참조하십시오. 이 내용은 클러스터에도 적용됩니다.