BizTalk Server 사용하여 SQL Server FOR XML 절이 있는 저장 프로시저를 실행합니다.
SQL SELECT 문에는 쿼리 결과를 행 집합 대신 XML로 반환하는 FOR XML 절이 있을 수 있습니다. FOR XML 절이 있는 SELECT 문이 있는 저장 프로시저를 사용할 수도 있습니다. FOR XML(SQL Server)에 자세한 정보가 있습니다.
WCF 기반 SQL 어댑터를 사용하여 이러한 저장 프로시저를 실행할 수 있습니다.
중요
BizTalk Server 사용할 수 있는 "네이티브" SQL 어댑터를 사용하려면 저장 프로시저에 SELECT 문의 일부로 FOR XML 절이 있어야 합니다. 저장 프로시저 정의를 변경하지 않고 WCF 기반 SQL 어댑터에서 이러한 저장 프로시저를 사용할 수 있습니다.
항상 이전 버전의 BizTalk Server 제공된 '네이티브' SQL 어댑터를 사용하여 생성된 스키마를 사용할 수 있습니다. 자세한 내용은 WCF-SQL 어댑터와 함께 FOR XML 쿼리 사용을 참조하세요.
FOR XML 절을 사용하여 저장 프로시저를 호출하는 방법
SQL Server Management Studio FOR XML 절을 사용하여 저장 프로시저를 호출하거나 BizTalk Server 사용할 수 있는 SQL 어댑터를 사용하는 경우 출력은 xml 메시지 형식입니다. 이러한 절차를 WCF 기반 SQL 어댑터와 함께 사용하려면 출력 메시지에 대한 스키마가 있어야 합니다. WCF 기반 SQL 어댑터에는 FOR XML 절을 사용하여 저장 프로시저를 실행한 후 SQL Server 응답 메시지를 받는 동안 이 스키마가 필요합니다. 이 저장 프로시저를 호출하기 위한 요청 메시지는 어댑터 자체에 의해 생성됩니다.
응답 메시지에 대한 스키마가 있는 것 외에도 특정 작업을 수행하여 WCF 기반 SQL 어댑터를 사용하여 FOR XML 절로 저장 프로시저를 호출해야 합니다.
FOR XML 절을 사용하여 저장 프로시저에 대한 응답 메시지의 스키마를 생성합니다. BizTalk Server 사용할 수 있는 "네이티브" SQL 어댑터에서 생성된 응답 스키마가 이미 있는 경우 이 단계를 건너뛸 수 있습니다.
BizTalk 프로젝트를 만들고 생성된 스키마를 프로젝트에 추가합니다.
WCF 기반 SQL 어댑터를 사용하여 FOR XML 절을 사용하여 저장 프로시저에 대한 스키마를 생성합니다. 그러면 어댑터가 저장 프로시저를 호출하기 위해 SQL Server 보내는 요청 메시지에 대한 스키마가 제공됩니다.
BizTalk 프로젝트에서 메시지를 만들어 SQL Server 메시지를 보내고 받습니다. 요청 메시지는 어댑터에서 생성된 요청 메시지의 스키마를 준수해야 합니다. 응답 메시지는 "네이티브" SQL 어댑터를 사용하거나 SQL Server Management Studio FOR XML 절을 사용하여 저장 프로시저를 실행하여 얻은 응답 메시지의 스키마를 준수해야 합니다.
SQL Server 데이터베이스에서 저장 프로시저를 호출하는 오케스트레이션을 만듭니다.
BizTalk 프로젝트를 빌드하고 배포합니다.
물리적 송신 및 수신 포트를 만들어 BizTalk 애플리케이션을 구성합니다.
BizTalk 애플리케이션을 시작합니다.
저장 프로시저에 대한 응답 메시지에 대한 스키마 생성
참고
SQL 어댑터에서 생성된 응답 스키마가 BizTalk Server 사용할 수 있는 경우 이 단계를 수행할 필요가 없습니다.
저장 프로시저의 SELECT 문에 절 for xml
이 있는 경우 저장 프로시저에 대한 응답 메시지에 대한 스키마를 xmlschema
생성할 수 있습니다. 이 항목에서는 지정된 직원 ID에 대한 직원 세부 정보를 검색하는 GET_EMP_DETAILS_FOR_XML 저장 프로시저를 사용합니다. 저장 프로시저를 실행하여 스키마를 검색하려면 SELECT 문은 다음과 같습니다.
SELECT [Employee_ID] ,[Name] ,[DOJ] ,[Designation] ,[Job_Description] ,[Photo] ,cast([Rating] as varchar(100)) as Rating ,[Salary] ,[Last_Modified] ,[Status] ,[Address]
FROM [Adapt_Doc].[dbo].[Employee] for xml auto, xmlschema
이 저장 프로시저를 실행하여 응답 메시지에 대한 스키마를 가져옵니다. 저장 프로시저의 응답에는 스키마와 저장 프로시저 실행의 데이터가 포함됩니다. 응답에서 스키마를 복사하여 텍스트 패드에 저장해야 합니다. 이 예제에서는 이 스키마의 이름을 ResponseSchema.xsd로 지정할 수 있습니다. 이제 Visual Studio에서 BizTalk 프로젝트를 만들고 이 스키마를 프로젝트에 추가해야 합니다.
중요
스키마를 xmlschema
생성하기 위해 저장 프로시저를 실행한 후 절을 제거해야 합니다. 이 작업을 수행하지 못한 경우 BizTalk를 통해 저장 프로시저를 실행하면 응답 메시지에서 스키마를 다시 생성합니다. 따라서 응답 메시지를 xml로 얻으려면 절을 xmlschema
제거해야 합니다.
BizTalk 프로젝트에 스키마를 추가하려면
Visual Studio에서 BizTalk 프로젝트를 만듭니다.
저장 프로시저에 대해 생성한 응답 스키마를 BizTalk 프로젝트에 추가합니다. 솔루션 탐색기 BizTalk 프로젝트를 마우스 오른쪽 단추로 클릭하고 추가를 가리킨 다음 기존 항목을 클릭합니다. 기존 항목 추가 대화 상자에서 스키마를 저장한 위치로 이동하고 추가를 클릭합니다.
Visual Studio에서 스키마를 열고 다음을 변경합니다.
스키마에 노드를 추가하고 새로 추가된 이 노드에서 기존 루트 노드를 이동합니다. 루트 노드에 이름을 지정합니다. 이 항목의 경우 루트 노드의 이름을 Root로 바꿉니다.
저장 프로시저에 대해 생성된 응답 스키마는 sqltypes.xsd를 참조합니다. 에서 sqltypes.xsd 스키마를 https://go.microsoft.com/fwlink/?linkid=31850가져올 수 있습니다. BizTalk 프로젝트에 sqltypes.xsd 스키마를 추가합니다. 이 스키마에 대한 자세한 내용은 다음을 참조하세요.
저장 프로시저에 대해 생성된 스키마에서 값을
import schemaLocation
다음으로 변경합니다.import schemaLocation=”sqltypes.xsd”
BizTalk 프로젝트에 sqltypes.xsd 스키마를 이미 추가했으므로 이 작업을 수행합니다.
스키마에 대한 대상 네임스페이스를 제공합니다. 스키마> 노드를< 클릭하고 속성 창에서 대상 네임스페이스 속성에 네임스페이스를 지정합니다. 이 항목의 경우 네임스페이스를 로
http://ForXmlStoredProcs/namespace
지정합니다.
저장 프로시저를 호출하는 요청 메시지에 대한 스키마 생성
요청 메시지에 대한 스키마를 생성하려면 Visual Studio의 BizTalk 프로젝트에서 어댑터 서비스 추가 기능 사용을 사용할 수 있습니다. 이 항목에서는 GET_EMP_DETAILS_FOR_XML 저장 프로시저에 대한 스키마를 생성합니다. 어댑터 서비스 추가 기능 사용을 사용하여 스키마를 생성하는 방법에 대한 자세한 내용은 SQL 어댑터를 사용하여 Visual Studio에서 SQL Server 작업에 대한 메타데이터 검색을 참조하세요.
중요
어댑터 서비스 추가 기능 사용의 프로시저 노드에서만 프로시저 를 선택하여 스키마를 생성해야 합니다.
메시지 및 메시지 형식 정의
오케스트레이션의 메시지에 필요한 "유형"에 대해서는 앞서 생성한 스키마에 나와 있습니다. 메시지는 일반적으로 해당 스키마에 의해 정의된 형식인 변수입니다. 이제 오케스트레이션에 대한 메시지를 만들고 이전 단계에서 생성한 스키마에 연결해야 합니다.
메시지를 만들고 스키마에 연결하려면
BizTalk 프로젝트에 오케스트레이션을 추가합니다. 솔루션 탐색기 BizTalk 프로젝트 이름을 마우스 오른쪽 단추로 클릭하고 추가를 가리킨 다음 새 항목을 클릭합니다. BizTalk 오케스트레이션의 이름을 입력하고 추가를 클릭합니다.
BizTalk 프로젝트의 오케스트레이션 보기 창이 열려 있지 않으면 이 창을 엽니다. 이렇게 하려면 보기를 클릭하고 다른 창을 가리킨 다음 오케스트레이션 보기를 클릭합니다.
오케스트레이션 보기에서 메시지를 마우스 오른쪽 단추로 클릭한 다음 새 메시지를 클릭합니다.
새로 만든 메시지를 마우스 오른쪽 단추로 클릭한 다음 속성 창을 선택합니다.
Message_1속성 창에서 다음을 수행합니다.
사용 항목 원하는 작업 ID Request
입력메시지 유형 드롭다운 목록에서 스키마를 확장한 다음 ForXMLProcedure.Procedure_dbo 선택합니다. GET_EMP_DETAILS_FOR_XML 여기서 ForXMLProcedure는 BizTalk 프로젝트의 이름입니다. Procedure_dbo GET_EMP_DETAILS_FOR_XML 프로시저를 호출하기 위해 생성된 스키마입니다. 2단계를 반복하여 새 메시지를 만듭니다. 새 메시지의 속성 창에서 다음을 수행합니다.
사용 항목 원하는 작업 ID Response
입력메시지 유형 드롭다운 목록에서 스키마를 확장 한 다음 ForXMLProcedure.ResponseSchema를 선택합니다. 여기서 ResponseSchema는 저장 프로시저에 대한 응답 메시지에 대한 스키마 생성에 설명된 대로 저장 프로시 저를 실행하여 생성된 응답 스키마의 이름입니다.
오케스트레이션 설정
SQL Server 저장 프로시저를 실행하기 위해 BizTalk Server 사용하려면 BizTalk 오케스트레이션을 만들어야 합니다. 이 오케스트레이션에서는 정의된 수신 위치에 요청 메시지를 삭제합니다. SQL 어댑터는 이 메시지를 사용하고 SQL Server 전달합니다. SQL Server 응답은 다른 위치에 저장됩니다. 메시지를 SQL Server 보내고 응답을 받으려면 각각 보내기 및 받기 셰이프를 포함해야 합니다. 프로시저를 호출하기 위한 샘플 오케스트레이션은 다음과 유사합니다.
저장 프로시저 을
메시지 셰이프 추가
각 메시지 셰이프에 대해 다음 속성을 지정해야 합니다. Shape 열에 나열된 이름은 방금 언급한 오케스트레이션에 표시된 메시지 셰이프의 이름입니다.
도형 | 도형 유형 | 속성 |
---|---|---|
ReceiveMessage | Receive | - 이름을ReceiveMessage로 설정 - 활성화를 True로 설정 |
SendMessage | Send | - 이름을SendMessage로 설정 |
ReceiveResponse | Receive | - 이름을ReceiveResponse로 설정 - 활성화를 False로 설정 |
SendResponse | Send | - 이름을SendResponse로 설정 |
포트 추가
각 논리 포트에 대해 다음 속성을 지정해야 합니다. 포트 열에 나열된 이름은 오케스트레이션에 표시된 포트의 이름입니다.
포트 | 속성 |
---|---|
MessageIn | - 식별자를MessageIn으로 설정 - Type을 MessageInType으로 설정 - 통신 패턴을단방향으로 설정 - 수신할 통신 방향 설정 |
LOBPort | - 식별자를LOBPort로 설정 - 형식을 LOBPortType으로 설정 - 통신 패턴을Request-Response로 설정 - 통신 방향을Send-Receive로 설정 |
ResponseOut | - 식별자를ResponseOut으로 설정 - Type을 ResponseOutType으로 설정 - 통신 패턴을단방향으로 설정 - 전송할 통신 방향 설정 |
작업 셰이프에 대한 메시지를 지정하고 포트에 연결
다음 표에서는 작업 셰이프에 대한 메시지를 지정하고 메시지를 포트에 연결하도록 설정해야 하는 속성과 해당 값을 지정합니다. Shape 열에 나열된 이름은 앞에서 언급한 오케스트레이션에 표시된 메시지 셰이프의 이름입니다.
도형 | 속성 |
---|---|
ReceiveMessage | - 메시지를요청으로 설정 - 작업을MessageIn.FOR_XML.Request로 설정 |
SendMessage | - 메시지를요청으로 설정 - 작업을LOBPort.FOR_XML.Request로 설정 |
ReceiveResponse | - 메시지를응답으로 설정 - 작업을LOBPort.FOR_XML.Response로 설정 |
SendResponse | - 메시지를응답으로 설정 - 작업을ResponseOut.FOR_XML.Request로 설정 |
이러한 속성을 지정하면 메시지 셰이프와 포트가 연결되고 오케스트레이션이 완료됩니다.
이제 BizTalk 솔루션을 빌드하고 BizTalk Server 배포해야 합니다. 자세한 내용은 오케스트레이션 빌드 및 실행을 참조하세요.
BizTalk 애플리케이션 구성
BizTalk 프로젝트를 배포한 후에는 이전에 만든 오케스트레이션이 BizTalk Server 관리 콘솔의 오케스트레이션 창 아래에 나열됩니다. 애플리케이션을 구성하려면 BizTalk Server 관리 콘솔을 사용해야 합니다. 연습은 연습: 기본 BizTalk 애플리케이션 배포를 참조하세요.
애플리케이션 구성에는 다음이 포함됩니다.
애플리케이션에 대한 호스트를 선택합니다.
오케스트레이션에서 만든 포트를 BizTalk Server 관리 콘솔의 실제 포트에 매핑합니다. 이 오케스트레이션의 경우 다음을 수행해야 합니다.
하드 디스크의 위치와 요청 메시지를 삭제할 해당 파일 포트를 정의합니다. BizTalk 오케스트레이션은 요청 메시지를 사용하고 SQL Server 데이터베이스로 보냅니다.
하드 디스크의 위치와 BizTalk 오케스트레이션이 SQL Server 데이터베이스의 응답이 포함된 응답 메시지를 삭제하는 해당 파일 포트를 정의합니다.
물리적 WCF-Custom 또는 WCF-SQL 송신 포트를 정의하여 SQL Server 데이터베이스에 메시지를 보냅니다. 송신 포트를 만드는 방법에 대한 지침은 SQL 어댑터에 대한 물리적 포트 바인딩 수동 구성을 참조하세요.
또한 송신 포트에서 작업을 지정해야 합니다. FOR XML 절을 포함하는 프로시저의 경우 다음 형식으로 작업을 설정해야 합니다.
XmlProcedure/<schema_name>/<procedure_name>
따라서 GET_EMP_DETAILS_FOR_XML 프로시저를 실행하는 이 항목의 경우 작업은 다음과 같습니다.
XmlProcedure/dbo/GET_EMP_DETAILS_FOR_XML
작업 설정에 대한 자세한 내용은 SQL 어댑터에 대한 SOAP 작업 구성을 참조하세요 .
FOR XML 절을 사용하여 저장 프로시저를 실행할 때 다음 바인딩 속성도 설정해야 합니다.
바인딩 속성 이름 XmlStoredProcedureRootNodeName 저장 프로시저에 대해 생성된 응답 스키마에 추가한 루트 노드의 이름을 저장 프로시저에 대한 응답 메시지의 스키마 생성에서 설명한 대로 지정합니다. 이 항목의 경우 루트로 설정합니다. XmlStoredProcedureRootNodeNamespace 저장 프로시저에 대해 생성된 응답 스키마의 대상 네임스페이스를 저장 프로시 저에 대한 응답 메시지의 스키마 생성에서 설명한 대로 지정합니다. 이 항목의 경우 를 로 http://ForXmlStoredProcs/namespace
설정합니다.바인딩 속성에 대한 값을 지정하는 방법에 대한 자세한 내용은 SQL 어댑터에 대한 바인딩 속성 구성을 참조하세요.
참고
어댑터 서비스 BizTalk 프로젝트 추가 기능 사용을 사용하여 스키마를 생성하면 포트에 대한 정보와 해당 포트에 대해 설정할 작업이 포함된 바인딩 파일도 만들어집니다. BizTalk Server 관리 콘솔에서 이 바인딩 파일을 가져와 송신 포트(아웃바운드 호출의 경우) 또는 수신 포트(인바운드 호출의 경우)를 만들 수 있습니다. 자세한 내용은 SQL 어댑터를 사용하도록 포트 바인딩 파일을 사용하여 물리적 포트 바인딩 구성을 참조하세요.
애플리케이션 시작
SQL Server 데이터베이스에서 프로시저를 호출하려면 BizTalk 애플리케이션을 시작해야 합니다. BizTalk 애플리케이션 시작에 대한 지침은 오케스트레이션을 시작하는 방법을 참조하세요.
이 단계에서는 다음을 확인합니다.
오케스트레이션에 대한 요청 메시지를 받을 FILE 수신 포트가 실행 중입니다.
오케스트레이션에서 응답 메시지를 받을 FILE 송신 포트가 실행 중입니다.
WCF-Custom 또는 WCF-SQL 송신 포트는 데이터베이스가 실행 중인 SQL Server 메시지를 보냅니다.
작업에 대한 BizTalk 오케스트레이션이 실행 중입니다.
작업 실행
애플리케이션을 실행한 후 요청 메시지를 FILE 수신 위치에 삭제해야 합니다. 요청 메시지의 스키마는 어댑터 서비스 사용 추가 기능을 사용하여 생성한 프로시저에 대한 요청 스키마를 준수해야 합니다. 예를 들어 GET_EMP_DETAILS_FOR XML을 호출하는 요청 메시지는 다음과 같습니다.
<GET_EMP_DETAILS_FOR_XML xmlns="http://schemas.microsoft.com/Sql/2008/05/Procedures/dbo">
<emp_id>10765</emp_id>
</GET_EMP_DETAILS_FOR_XML>
SQL 어댑터를 사용하여 SQL Server 데이터베이스에서 프로시저를 호출하기 위한 요청 메시지 스키마에 대한 자세한 내용은 프로시저 및 함수에 대한 메시지 스키마를 참조하세요.
오케스트레이션은 메시지를 사용하고 SQL Server 데이터베이스로 보냅니다. SQL Server 데이터베이스의 응답은 오케스트레이션의 일부로 정의된 다른 FILE 위치에 저장됩니다. 예를 들어 이전 요청 메시지에 대한 SQL Server 데이터베이스의 응답은 다음과 같습니다.
<?xml version="1.0" encoding="utf-8"?>
<Root xmlns="http://ForXmlStoredProcs/namespace">
<Adapt_Doc.dbo.Employee Employee_ID="10765" Name="John" Designation="asdfaf" Salary="3434.00" Last_Modified="AAAAAAAANso=" Status="0" xmlns="" />
</Root>
저장 프로시저를 실행하여 생성된 것과 동일한 스키마에서 응답이 수신됩니다. 또한 루트 노드와 네임스페이스는 각각 XmlStoredProcedureRootNodeName 및 XmlStoredProcedureRootNodeNamespace 바인딩 속성의 값과 동일합니다.
모범 사례
BizTalk 프로젝트를 배포하고 구성한 후에는 구성 설정을 바인딩 파일이라는 XML 파일로 내보낼 수 있습니다. 바인딩 파일을 생성한 후에는 파일에서 구성 설정을 가져올 수 있으므로 동일한 오케스트레이션에 대한 송신 포트 및 수신 포트와 같은 항목을 만들 필요가 없습니다. 바인딩 파일에 대한 자세한 내용은 어댑터 바인딩 다시 사용을 참조하세요.