이 항목에서는 클라이언트 쪽 XML 서식 지정에 대한 정보를 제공합니다. 클라이언트 쪽 서식은 중간 계층에서 XML의 서식을 나타냅니다.
비고
이 항목에서는 클라이언트 쪽에서 FOR XML 절을 사용하는 방법에 대한 추가 정보를 제공하며 FOR XML 절에 이미 익숙하다고 가정합니다. FOR XML에 대한 자세한 내용은 FOR XML 을 사용하여 XML 생성을 참조하세요.
중요하다 클라이언트 쪽 FOR XML 기능을 새 xml 데이터 형식과 함께 사용하려면 클라이언트는 항상 SQLOLEDB 공급자 대신 SQL Server SQLNCLI11(Native Client) 데이터 공급자를 사용해야 합니다. SQLNCLI11 최신 버전의 SQL Server 공급자이며 SQL Server 2005에 도입된 데이터 형식을 완전히 이해합니다. SQLOLEDB 공급자를 사용하는 클라이언트 쪽 FOR XML에 대한 동작은 데이터 형식을 문자열로 처리 xml 합니다.
클라이언트 쪽에서 XML 문서 서식 지정
클라이언트 애플리케이션이 다음 쿼리를 실행하는 경우:
SELECT FirstName, LastName
FROM Person.Contact
FOR XML RAW
... 쿼리의 이 부분만 서버로 전송됩니다.
SELECT FirstName, LastName
FROM Person.Contact
서버는 쿼리를 실행하고 행 집합(FirstName 및 LastNamecolumns 포함)을 클라이언트에 반환합니다. 그런 다음 중간 계층은 FOR XML 변환을 행 집합에 적용하고 XML 서식을 클라이언트에 반환합니다.
마찬가지로 XPath 쿼리를 실행할 때 서버는 행 집합을 클라이언트에 반환하고 FOR XML EXPLICIT 변환은 클라이언트의 행 집합에 적용되어 원하는 XML 서식을 생성합니다.
다음 표에서는 클라이언트 쪽 FOR XML을 사용하여 지정할 수 있는 모드를 보여 줍니다.
| 클라이언트 쪽 FOR XML 모드 | 주석 |
|---|---|
| 원본 | 클라이언트 쪽 또는 서버 쪽 FOR XML에 지정된 경우 동일한 결과를 생성합니다. |
| 중첩 | 서버 쪽의 FOR XML AUTO 모드와 비슷합니다. |
| 명시적 | 서버 쪽 FOR XML EXPLICIT 모드와 비슷합니다. |
비고
AUTO 모드를 지정하고 클라이언트 쪽 XML 서식을 요청하면 전체 쿼리가 서버로 전송됩니다. 즉, 서버에서 XML 서식이 발생합니다. 이 작업은 편의상 수행되지만 NESTED 모드는 생성된 XML 문서에서 기본 테이블 이름을 요소 이름으로 반환합니다. 작성하는 애플리케이션 중 일부에는 기본 테이블 이름이 필요할 수 있습니다. 예를 들어 저장 프로시저를 실행하고 결과 데이터를 데이터 세트(Microsoft .NET Framework)에 로드한 다음 나중에 DiffGram을 생성하여 테이블의 데이터를 업데이트할 수 있습니다. 이러한 경우 기본 테이블 정보가 필요하며 NESTED 모드를 사용해야 합니다.
클라이언트 쪽 XML 서식 지정의 이점
다음은 클라이언트에서 XML 서식을 지정할 때의 몇 가지 이점입니다.
단일 행 집합을 반환하는 서버에 저장 프로시저가 있는 경우 클라이언트 쪽 FOR XML 변환을 요청하여 XML을 생성할 수 있습니다.
예를 들어 다음 저장 프로시저를 고려합니다. 이 절차는 AdventureWorks 데이터베이스의 Person.Contact 테이블에서 직원의 이름과 성을 반환합니다.
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'GetContacts' AND type = 'P')
DROP PROCEDURE GetContacts
GO
CREATE PROCEDURE GetContacts
AS
SELECT FirstName, LastName
FROM Person.Contact
다음 샘플 XML 템플릿은 저장 프로시저를 실행합니다. FOR XML 절은 저장 프로시저 이름 다음에 지정됩니다.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<sql:query client-side-xml="1">
EXEC GetContacts FOR XML NESTED
</sql:query>
</ROOT>
클라이언트 쪽 xml 특성은 템플릿에서 1(true)로 설정되므로 저장 프로시저는 서버에서 실행되고 서버에서 반환되는 두 열 행 집합은 중간 계층의 XML로 변환되어 클라이언트로 반환됩니다. (여기에 부분 결과만 표시됩니다.)
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Person.Contact FirstName="Gustavo" LastName="Achong" />
<Person.Contact FirstName="Catherine" LastName="Abel" />
</ROOT>
비고
SQLXMLOLEDB 공급자 또는 SQLXML 관리 클래스를 사용하는 경우 이 속성을 사용하여 ClientSideXml 클라이언트 쪽 XML 서식을 요청할 수 있습니다.
워크로드의 균형이 더 조정됩니다.
클라이언트는 XML 서식을 수행하므로 서버와 클라이언트 간에 워크로드가 분산되어 서버에서 다른 작업을 수행할 수 있습니다.
클라이언트 쪽 XML 서식 지원
클라이언트 쪽 XML 서식 지정 기능을 지원하기 위해 SQLXML은 다음을 제공합니다.
SQLXMLOLEDB 공급자
SQLXML 관리되는 클래스
향상된 XML 템플릿 지원
SqlXmlCommand.ClientSideXml 속성
SQLXML 관리 클래스의 이 속성을 true로 설정하여 클라이언트 쪽 서식을 지정할 수 있습니다.
향상된 XML 템플릿 지원
SQL Server 2005부터 클라이언트 쪽 xml 특성이 추가되어 SQL Server의 XML 템플릿이 향상되었습니다. 이 특성이 true로 설정된 경우 XML은 클라이언트에서 형식이 지정됩니다. 이 템플릿 특성은 SQLXMLOLEDB 공급자별 ClientSideXML 속성과 기능면에서 동일합니다.
비고
SQLXMLOLEDB 공급자를 사용하는 ADO 애플리케이션에서 XML 템플릿을 실행하고 템플릿의 클라이언트 쪽 xml 특성과 ClientSideXML 속성 공급자를 모두 지정하는 경우 템플릿에 지정된 값이 우선합니다.
또한 참조하십시오
클라이언트 쪽 및 서버 쪽 XML 서식 지정 아키텍처(SQLXML 4.0)
FOR XML(SQL Server)
FOR XML 보안 고려 사항(SQLXML 4.0)
SQLXML 4.0의 xml 데이터 형식 지원
SQLXML 관리되는 클래스
클라이언트 쪽 및 서버 쪽 XML 서식 지정(SQLXML 4.0)
SqlXmlCommand 개체(SQLXML 관리 클래스)
XML 데이터(SQL Server)