네이티브 XML 웹 서비스 요청 보내기 예제 응용 프로그램

다음 작업 예제에서는 SOAP 요청을 보내고 응답을 처리하는 방법을 보여 줍니다. 예제에는 Visual Studio 2005 클라이언트, C# 및 Visual Basic이 포함됩니다.

초기 설치

모든 예제 응용 프로그램에는 공통된 설치 과정이 필요하며 설치 단계는 다음과 같습니다.

  1. 예제 저장 프로시저를 만듭니다.
  2. 사용자 정의 함수를 만듭니다.
  3. HTTP SOAP 끝점을 만듭니다.

[!참고] AdventureWorks 예제 데이터베이스에서 이러한 개체를 만들려면 SQL Server Management Studio 또는 osql 명령 유틸리티를 사용합니다. AdventureWorks 예제 데이터베이스를 설치하려면 AdventureWorks 예제 및 예제 데이터베이스 설치를 위해 설치 프로그램 실행을 참조하십시오.

저장 프로시저(GetCustomerInfo) 만들기

다음 저장 프로시저는 클라이언트 응용 프로그램에서 입력 및 출력 매개 변수, 반환 코드, 쿼리 결과 및 오류 발생 시 오류를 처리하는 방법을 보여 줍니다.

USE AdventureWorks
GO
DROP PROCEDURE GetCustomerInfo
GO
CREATE PROCEDURE GetCustomerInfo
                    @CustomerID nchar(5),
                    @OutputParam nchar(5) OUTPUT 
AS  

  SELECT @OutputParam = '99999'  
  -- The following INSERT should fail, and an-error returned 
  -- to the client.
  INSERT Store (CustomerID) VALUES (1)

 -- Execute a SELECT statement.
 SELECT top 3 SalesOrderID, OrderDate 
 FROM   Sales.SalesOrderHeader
 WHERE  CustomerID = @CustomerID

 -- Execute SELECT returning XML.
  SELECT CustomerID, SalesOrderID, OrderDate 
  FROM   Sales.SalesOrderHeader
  WHERE  CustomerID = @CustomerID
  for xml auto, XMLSCHEMA

  PRINT 'Hello World'
RETURN 0
Go

이 저장 프로시저에서는 입력 매개 변수(CustomerID)와 출력 매개 변수(OutParam)의 두 가지 매개 변수를 통해 매개 변수를 전달하는 방법을 보여 줍니다.

이 저장 프로시저에서는 다음과 같은 문을 실행합니다.

  • 의도적으로 실패하여 오류를 반환하는 INSERT 문. 의도적인 오류를 통해 SOAP 응답에서 오류를 반환하는 방식을 보여 줍니다. Visual Studio 2005에서 오류는 SqlMessage 개체로 반환됩니다.
  • SELECT 문. Visual Studio 2005에서 결과 행 집합은 DataSet 개체로 반환됩니다.
  • XML 데이터를 반환하는 SELECT FOR XML 쿼리. Visual Studio 2005에서 결과 행 집합은 SqlXml 개체로 반환됩니다.
  • PRINT 문. Visual Studio 2005에서 이 문의 결과는 SqlMessage 개체로 반환됩니다.

사용자 정의 함수(UDFREturningAScalar) 만들기

이 함수는 정수 값을 반환합니다.

USE AdventureWorks
GO
CREATE FUNCTION UDFReturningAScalar() 
RETURNS int
AS
BEGIN
   RETURN 555
END
Go

HTTP SOAP 끝점(sql_endpoint) 만들기

이 끝점은 저장 프로시저와 사용자 정의 함수를 웹 메서드로 표시하며 임시 쿼리를 허용하도록 구성됩니다. 클라이언트 응용 프로그램에서는 임시 쿼리를 위한 SOAP 요청을 끝점으로 보낼 수 있습니다.

끝점의 HTTP 네임 스페이스(sp_reserve_http_namespace)를 예약하고 SITE 매개 변수를 완성할 때 서버 이름을 hostname 값으로 제공해야 합니다. 또한 해당되는 경우 port 값이 "80" 또는 다른 TCP 포트 번호 등의 SQL Server 인스턴스가 사용하는 HTTP 포트와 일치해야 합니다.

USE AdventureWorks
GO
DROP ENDPOINT sql_endpoint
GO
EXEC sp_reserve_http_namespace N'http://hostname:port/sql' 
-- EXEC sp_reserve_http_namespace N'https://www.microsoft.com:80/sql' for example
GO
CREATE ENDPOINT sql_endpoint 
   STATE = STARTED
AS HTTP(
   PATH = '/sql', 
   AUTHENTICATION = (INTEGRATED ), 
   PORTS = ( CLEAR ),
   SITE = 'server'
)
FOR SOAP (
   WEBMETHOD 'http://tempUri.org/'.'GetCustomerInfo' 
            (name='AdventureWorks.dbo.GetCustomerInfo', 
             schema=STANDARD ),
   WEBMETHOD 'UDFReturningAScalar' 
            (name='AdventureWorks.dbo.UDFReturningAScalar'),
   BATCHES = ENABLED,
   WSDL = DEFAULT,
   DATABASE = 'AdventureWorks',
   NAMESPACE = 'http://Adventure-Works/Customers'
)
GO
USE master
EXEC sp_grantlogin @loginame='domain\userOrGroup'
EXEC sp_grantdbaccess @loginame='domain\userOrGroup'
GRANT CONNECT ON ENDPOINT::sql_endpoint TO [domain\userOrGroup]
GO

위의 코드에서는 다음에 유의하십시오.

  • 끝점을 만들기 위해 두 가지 웹 메서드가 정의되어 있습니다.
  • WSDL 값이 DEFAULT로 설정됩니다. 따라서 클라이언트에서 서버로 WSDL 응답을 요청할 수 있습니다.
  • BATCHES 값이 ENABLED로 설정됩니다. 따라서 클라이언트에서 끝점으로 임시 쿼리 요청을 보낼 수 있습니다.
  • UDFReturningAScalar 웹 메서드는 선택적인 네임 스페이스를 지정하지 않고 NAMESPACE 값에 지정된 네임 스페이스를 사용합니다.
  • SQL Server 로그인으로 생성된 domain\userOrGroup 값은 HTTP 끝점에 액세스해야 하는 실제 도메인 사용자나 그룹으로 설정되어야 합니다.

참고 항목

참조

클라이언트 응용 프로그램에 SOAP 헤더 추가
클라이언트 응용 프로그램에 SOAP 추적 지원 추가
서버를 설정하여 네이티브 XML 웹 서비스 요청 수신
SOAP 요청 및 응답 메시지 구조
네이티브 XML 웹 서비스의 지침 및 제한 사항

개념

xml 데이터 형식 및 CLR 사용자 정의 유형 처리

관련 자료

클라이언트 응용 프로그램 작성

도움말 및 정보

SQL Server 2005 지원 받기