XML 데이터 형식 및 열(SQL Server)XML Data Type and Columns (SQL Server)

이 항목에서는 xml SQL ServerSQL Server데이터 형식을 사용할 때의 장점과 제한 사항을 설명하며, XML 데이터의 저장 방법을 선택할 수 있도록 도와 줍니다.This topic discusses the advantages and the limitations of the xml data type in SQL ServerSQL Server, and helps you to choose how to store XML data.

관계형 데이터 모델 또는 XML 데이터 모델Relational or XML Data Model

데이터가 알려진 스키마로 복잡하게 구조화된 경우 관계형 모델이 데이터 저장소에 가장 적합할 수 있습니다.If your data is highly structured with known schema, the relational model is likely to work best for data storage. SQL ServerSQL Server 는 사용자에게 필요한 기능 및 도구를 제공합니다. provides the required functionality and tools you may need. 반면에 반구조화되어 있거나 구조화되지 않았거나 구조화 상태를 알 수 없는 경우에는 이러한 데이터의 모델링을 고려해야 합니다.On the other hand, if the structure is semi-structured or unstructured, or unknown, you have to give consideration to modeling such data.

구조적 및 의미적 태그를 사용하여 데이터의 이동성을 보장하기 위해 플랫폼 독립적인 모델이 필요한 경우에는 XML이 좋은 대안입니다.XML is a good choice if you want a platform-independent model in order to ensure portability of the data by using structural and semantic markup. 또한 XML은 다음과 같은 상황에서도 적절한 대안이 될 수 있습니다.Additionally, it is an appropriate option if some of the following properties are satisfied:

  • 데이터가 산발적이거나 데이터 구조를 알 수 없거나 데이터 구조가 이후에 크게 변경될 수 있습니다.Your data is sparse or you do not know the structure of the data, or the structure of your data may change significantly in the future.

  • 데이터가 엔터티 간 참조 대신 포함 계층을 나타내며 재귀적일 수 있습니다.Your data represents containment hierarchy, instead of references among entities, and may be recursive.

  • 데이터에 정렬이 내재되어 있습니다.Order is inherent in your data.

  • 데이터 구조를 기반으로 데이터를 쿼리하거나 데이터 일부를 업데이트하고자 합니다.You want to query into the data or update parts of it, based on its structure.

    이러한 상황에 하나도 해당되지 않으면 관계형 데이터 모델을 사용해야 합니다.If none of these conditions is met, you should use the relational data model. 예를 들어 데이터가 XML 형식으로 되어 있지만 응용 프로그램에서 데이터의 저장 및 검색을 위해서만 데이터베이스를 사용하는 경우에는 [n]varchar(max) 열만 있으면 됩니다.For example, if your data is in XML format but your application just uses the database to store and retrieve the data, an [n]varchar(max) column is all you require. XML 열에 데이터를 저장하면 추가 이점이 있습니다.Storing the data in an XML column has additional benefits. 이러한 이점에 대한 예로, 엔진에서 데이터가 잘 작성되었거나 유효한지 여부를 확인할 수 있으며, XML 데이터의 세부적 쿼리 및 업데이트가 지원됩니다.This includes having the engine determine that the data is well formed or valid, and also includes support for fine-grained query and updates into the XML data.

SQL Server에서 XML 데이터를 저장하는 이유Reasons for Storing XML Data in SQL Server

다음은 파일 시스템에서 XML 데이터를 관리하는 대신 SQL ServerSQL Server 에서 네이티브 XML 기능을 사용하는 몇 가지 이유입니다.Following are some of the reasons to use native XML features in SQL ServerSQL Server instead of managing your XML data in the file system:

  • 효율적이고 실용적인 방식으로 XML 데이터를 공유, 쿼리 및 수정하고자 합니다.You want to share, query, and modify your XML data in an efficient and transacted way. 세부적 데이터 액세스는 응용 프로그램에 중요한 요소입니다.Fine-grained data access is important to your application. 예를 들어 XML 문서 내에서 일부 섹션을 추출하거나 전체 문서를 바꾸지 않고 새 섹션을 삽입합니다.For example, you may want to extract some of the sections within an XML document, or you may want to insert a new section without replacing your whole document.

  • 관계형 데이터 및 XML 데이터가 있고 응용 프로그램 내에서 관계형 데이터 및 XML 데이터 사이의 호환성이 필요합니다.You have relational data and XML data and you want interoperability between both relational and XML data within your application.

  • 도메인 간 응용 프로그램에서 쿼리 및 데이터 수정을 위한 언어 지원이 필요합니다.You need language support for query and data modification for cross-domain applications.

  • 서버의 데이터가 잘 작성되도록 보장하고 선택적으로 XML 스키마에 따라 데이터의 유효성을 검사고자 합니다.You want the server to guarantee that the data is well formed and also optionally validate your data according to XML schemas.

  • 효율적인 쿼리 처리 및 확장성을 위해 XML 데이터를 인덱싱하고 최상의 쿼리 최적화 프로그램을 사용하고자 합니다.You want indexing of XML data for efficient query processing and good scalability, and the use of a first-rate query optimizer.

  • XML 데이터에 대한 SOAP, ADO.NET 및 OLE DB 액세스가 필요합니다.You want SOAP, ADO.NET, and OLE DB access to XML data.

  • XML 데이터 관리를 위해 데이터베이스 서버의 관리 기능을 사용하고자 합니다.You want to use administrative functionality of the database server for managing your XML data. 예를 들어 이러한 기능에는 백업, 복구 및 복제가 포함될 수 있습니다.For example, this would be backup, recovery, and replication.

    이러한 상황에 하나도 해당되지 않으면 [n]varchar(max) 또는 varbinary(max)와 같은 비-XML의 큰 개체 형식으로 데이터를 저장하는 것이 좋습니다.If none of these conditions is satisfied, it may be better to store your data as a non-XML, large object type, such as [n]varchar(max) or varbinary(max).

XML 저장소 옵션XML Storage Options

SQL ServerSQL Server 의 XML 저장소 옵션에는 다음이 포함됩니다.The storage options for XML in SQL ServerSQL Server include the following:

  • xml 데이터 형식의 네이티브 저장소Native storage as xml data type

    데이터의 XML 내용을 보존하는 내부 표현으로 데이터가 저장됩니다.The data is stored in an internal representation that preserves the XML content of the data. 이러한 내부 표현에는 포함 계층, 문서 순서, 요소 및 특성 값에 대한 정보가 포함됩니다.This internal representation includes information about the containment hierarchy, document order, and element and attribute values. 특히 XML 데이터의 InfoSet 내용이 보존됩니다.Specifically, the InfoSet content of the XML data is preserved. InfoSet에 대한 자세한 내용은 http://www.w3.org/TR/xml-infoset를 참조하세요.For more information about InfoSet, visit http://www.w3.org/TR/xml-infoset. InfoSet 내용은 다음 정보가 포함되지 않기 때문에 테스트 XML의 동일 복사본이 될 수 없습니다. 제외되는 정보는 중요하지 않은 공백, 특성 순서, 네임스페이스 접두사 및 XML 선언입니다.The InfoSet content may not be an identical copy of the text XML, because the following information is not retained: insignificant white spaces, order of attributes, namespace prefixes, and XML declaration.

    XML 스키마에 바인딩된 xml 데이터 형식인 형식화된 xml 데이터 형식에 대해 PSVI(Post-Schema Validation InfoSet)는 InfoSet에 유형 정보를 추가하고 내부 표현으로 인코딩됩니다.For typed xml data type, an xml data type bound to XML schemas, the post-schema validation InfoSet (PSVI) adds type information to the InfoSet and is encoded in the internal representation. 이렇게 하면 구문 분석 속도가 크게 향상됩니다.This improves parsing speed significantly. 자세한 내용은 http://www.w3.org/TR/xmlschema-1http://www.w3.org/TR/xmlschema-2에서 W3C XML 스키마 사양을 참조하세요.For more information, see the W3C XML Schema specifications at http://www.w3.org/TR/xmlschema-1 and http://www.w3.org/TR/xmlschema-2.

  • XML 및 관계형 저장소 간 매핑Mapping between XML and relational storage

    XML은 AXSD(주석 지정 스키마)를 사용하여 하나 이상의 테이블에 있는 열로 분해됩니다.By using an annotated schema (AXSD), the XML is decomposed into columns in one or more tables. 이렇게 하면 관계형 수준에서 데이터의 정확성이 보존됩니다.This preserves fidelity of the data at the relational level. 그 결과 요소 간 순서가 무시되더라도 계층적 구조가 보존됩니다.As a result, the hierarchical structure is preserved although order among elements is ignored. 스키마는 재귀적일 수 없습니다.The schema cannot be recursive.

  • 큰 개체 저장소 [n]varchar(max)varbinary(max)Large object storage, [n]varchar(max) and varbinary(max)

    데이터의 동일 복사본이 저장됩니다.An identical copy of the data is stored. 이 옵션은 법률 문서와 같은 특수한 용도의 응용 프로그램에 유용합니다.This is useful for special-purpose applications such as legal documents. 대부분의 응용 프로그램에는 정확한 복사본이 필요하지 않으며 XML 내용만으로도 충분합니다(InfoSet 정확성).Most applications do not require an exact copy and are satisfied with the XML content (InfoSet fidelity).

    일반적으로 이러한 접근 방식을 조합해서 사용해야 할 수 있습니다.Generally, you may have to use a combination of these approaches. 예를 들어 xml 데이터 형식의 열에 XML 데이터를 저장하고 XML 열에서 관계형 열로 속성을 승격해야 할 수 있습니다.For example, you may want to store your XML data in an xml data type column and promote properties from it into relational columns. 또는 비-XML 열에 비재귀적인 부분을 저장하고 재귀적인 부분만 xml 데이터 형식의 열에 저장하는 매핑 기술을 사용할 수 있습니다.Or, you may want to use mapping technology to store nonrecursive parts in non-XML columns and only the recursive parts in xml data type columns.

XML 기술 선택Choice of XML Technology

네이티브 XML과 XML 뷰 간의 XML 기술 선택은 일반적으로 다음 요소에 따라 달라집니다.The choice of XML technology, native XML versus XML view, generally depends upon the following factors:

  • 저장소 옵션Storage options

    XML 데이터는 큰 개체 저장소에 적합하거나(예: 제품 설명서) 관계형 열에 있는 저장소에 더 적합할 수 있습니다(예: XML로 변환된 라인 항목).Your XML data may be more appropriate for large object storage (for example, a product manual), or more amenable to storage in relational columns (for example, a line item converted to XML). 각 저장소 옵션은 서로 다른 수준의 문서 정확성을 보존합니다.Each storage option preserves document fidelity to a different extent.

  • 쿼리 기능Query capabilities

    쿼리의 특성과 XML 데이터를 쿼리하는 정도에 따라 적합한 저장소 옵션을 찾을 수 있습니다.You may find one storage option more appropriate than another, based on the nature of your queries and on the extent to which you query your XML data. XML 노드에 대한 조건자 평가와 같은 세부적인 XML 데이터 쿼리는 두 개의 저장소 옵션에서 서로 다르게 지원됩니다.Fine-grained query of your XML data, for example, predicate evaluation on XML nodes, is supported to varying degrees in the two storage options.

  • XML 데이터 인덱싱Indexing XML data

    XML 쿼리 성능의 속도를 높이기 위해 XML 데이터를 인덱싱할 수 있습니다.You may want to index the XML data to speed up XML query performance. 인덱싱 옵션은 스토리지 옵션별로 다르므로 작업을 최적화할 수 있는 적합한 옵션을 선택해야 합니다.Indexing options vary with the storage options; you have to make the appropriate choice to optimize your workload.

  • 데이터 수정 기능Data modification capabilities

    일부 작업에는 XML 데이터에 대한 세부적인 수정 작업이 포함됩니다.Some workloads involve fine-grained modification of XML data. 예를 들어 특정 작업에는 문서 내의 새 섹션 추가 작업이 포함되지만 웹 콘텐츠와 같은 다른 작업에는 이러한 작업이 포함되지 않습니다.For example, this can include adding a new section within a document, while other workloads, such as Web content, do not. 데이터 수정 언어 지원은 응용 프로그램에 있어서 중요한 요소입니다.Data modification language support may be important for your application.

  • 스키마 지원Schema support

    XML 데이터를 스키마에 의해 기술할 수 있으며 이러한 스키마는 XML 스키마 문서일 수도 혹은 아닐 수도 있습니다.Your XML data may be described by a schema that may or may not be an XML schema document. 스키마 바인딩 XML 지원은 XML 기술에 따라 달라집니다.The support for schema-bound XML depends upon the XML technology.

    선택한 옵션에 따라 성능 특성이 달라집니다.Different choices also have different performance characteristics.

네이티브 XML 저장소Native XML Storage

서버에서 xml 데이터 형식의 열에 XML 데이터를 저장할 수 있습니다.You can store your XML data in an xml data type column at the server. 이 옵션은 다음과 같은 상황에서 적절한 대안이 될 수 있습니다.This is an appropriate choice if the following applies:

  • 서버에 XML 데이터를 저장하고 동시에 문서 순서 및 문서 구조를 보존할 수 있는 직관적인 방식이 필요합니다.You want a straightforward way to store your XML data at the server and, at the same time, preserve document order and document structure.

  • XML 데이터에 대한 스키마가 있거나 없습니다.You may or may not have a schema for your XML data.

  • XML 데이터를 쿼리하고 수정해야 합니다.You want to query and modify your XML data.

  • 신속한 쿼리 처리를 위해 XML 데이터를 인덱싱해야 합니다.You want to index the XML data for faster query processing.

  • XML 데이터 및 XML 스키마를 관리하려면 응용 프로그램에 시스템 카탈로그 뷰가 필요합니다.Your application needs system catalog views to administer your XML data and XML schemas.

    네이티브 XML 저장소는 구조 범위가 포함된 XML 문서가 있거나 관계형 구조로 매핑하기 어려운 여러 스키마 또는 복잡한 스키마에 해당하는 XML 문서가 있는 경우에 유용합니다.Native XML storage is useful when you have XML documents that have a range of structures, or you have XML documents that conform to different or complex schemas that are too hard to map to relational structures.

예: xml 데이터 형식을 사용하여 XML 데이터 모델링Example: Modeling XML Data Using the xml Data Type

각 항목에 대한 별도의 장으로 구성되어 있고 각 장 내에 여러 섹션이 포함된 XML 형식의 제품 설명서를 가정해 보십시오.Consider a product manual in XML format that is made up of a separate chapter for each topic and that has multiple sections within each chapter. 하나의 섹션에는 하위 섹션이 포함될 수 있습니다.A section can contain subsections. 따라서 <section>은 재귀적 요소입니다.As a result, <section> is a recursive element. 제품 설명서에는 다량의 콘텐츠, 다이어그램 및 기술 자료가 혼합되어 있으며 데이터는 반구조적입니다.Product manuals contain a large amount of mixed content, diagrams, and technical material; the data is semi-structured. 사용자는 "인덱싱" 장에서 "클러스터형 인덱스" 섹션을 검색하는 것과 같이 원하는 항목을 문맥에 따라 검색하고 많은 기술 자료를 쿼리할 수 있습니다.Users may want to perform a contextual search for topics of interest such as searching for the section on "clustered index" within the chapter on "indexing", and query technical quantities.

XML 문서에 적합한 저장소 모델은 xml 데이터 형식의 열입니다.An appropriate storage model for your XML documents is an xml data type column. 이 모델은 XML 데이터에 대한 InfoSet 내용을 보존합니다.This preserves the InfoSet content of your XML data. XML 열을 인덱싱하면 쿼리 성능이 높아집니다.Indexing the XML column benefits query performance.

예: XML 데이터에 대한 정확한 복사본 유지Example: Retaining Exact Copies of XML Data

이해를 돕기 위해 정부 규제에 따라 XML 문서에 대한 정확한 텍스트 복사본을 유지해야 한다고 가정해 보십시오.For illustration, assume that government regulations require you to retain exact textual copies of your XML documents. 예를 들어 여기에는 서명된 문서, 법률 문서 또는 상품 거래 주문 내역 등이 포함될 수 있습니다.For example, these could include signed documents, legal documents, or stock transaction orders. 문서를 [n]varchar(max) 열에 저장할 수 있습니다.You may want to store your documents in a [n]varchar(max) column.

쿼리를 위해서는 데이터를 런타임에 xml 데이터 형식으로 변환하고 여기에서 Xquery를 실행합니다.For querying, convert the data to xml data type at run time and execute Xquery on it. 런타임 변환은 특히 문서가 큰 경우 비용이 많이 듭니다.The run-time conversion may be costly, especially when the document is large. 쿼리를 자주 수행하는 경우 xml 데이터 형식의 열에 문서를 중복해서 저장하고 [n]varchar(max) 열에서 정확한 문서 복사본을 반환하는 동안 이를 인덱싱할 수 있습니다.If you query frequently, you can redundantly store the documents in an xml data type column and index it while you return exact document copies from the [n]varchar(max) column.

XML 열은 [n]varchar(max) 열을 기반으로 계산을 수행하는 계산 열일 수 있습니다.The XML column may be a computed column, based on the [n]varchar(max) column. 그러나 XML 계산 열에서는 XML 인덱스를 만들 수 없으며 [n]varchar(max) 또는 varbinary(max) 열을 기반으로 XML 인덱스를 작성할 수도 없습니다.However, you cannot create an XML index on a computed, XML column, nor can an XML index be built on [n]varchar(max) or varbinary(max) columns.

XML 뷰 기술XML View Technology

데이터베이스에 있는 테이블과 XML 스키마 간의 매핑을 정의하면 영구적 데이터에 대한 "XML 뷰"를 만들 수 있습니다.By defining a mapping between your XML schemas and the tables in a database, you create an "XML view" of your persistent data. XML 대량 로드를 사용하면 XML 뷰를 사용하여 기본 테이블을 채울 수 있습니다.XML bulk load can be used to populate the underlying tables by using the XML view. XML 뷰는 XPath 버전 1.0을 사용하여 쿼리할 수 있으며, 이 쿼리는 테이블에서 SQL 쿼리로 변환됩니다.You can query the XML view by using XPath version 1.0; the query is translated to SQL queries on the tables. 이와 마찬가지로 이들 테이블에 업데이트를 전파할 수도 있습니다.Similarly, updates are also propagated to those tables.

이 기술은 다음과 같은 경우 유용합니다.This technology is useful in the following situations:

  • 기존 관계형 데이터에 대해 XML 뷰를 사용하는 XML 중심 프로그래밍 모델을 갖고자 합니다.You want to have an XML-centric programming model using XML views over your existing relational data.

  • 외부 파트너가 제공한 XML 데이터에 대한 스키마(XSD, XDR)가 있습니다.You have a schema (XSD, XDR) for your XML data that an external partner may have provided.

  • 데이터에서 순서가 중요하지 않거나, 쿼리 테이블 데이터가 재귀적이지 않거나, 최대 재귀 깊이가 미리 알려져 있습니다.Order is not important in your data, or your query table data is not recursive, or the maximal recursion depth is known in advance.

  • XPath 버전 1.0을 사용하여 XML 뷰를 통해 데이터를 쿼리 및 수정해야 합니다.You want to query and modify the data through the XML view by using XPath version 1.0.

  • XML 데이터를 대량 로드하고 XML 뷰를 사용하여 기본 테이블로 분해해야 합니다.You want to bulk load XML data and decompose them into the underlying tables by using the XML view.

    이러한 예로는 데이터 교환 및 웹 서비스에 대해 XML로 제공된 관계형 데이터와 고정 스키마가 포함된 XML 데이터가 있습니다.Examples include relational data exposed as XML for data exchange and Web services, and XML data with fixed schema. 자세한 내용은 MSDN Online Library를 참조하십시오.For more information, see the MSDN Online Library.

예: AXSD(주석 지정 XML 스키마)를 사용하여 데이터 모델링Example: Modeling Data Using an Annotated XML Schema (AXSD)

이해를 돕기 위해 고객, 주문 및 라인 항목 등과 같은 기존 관계형 데이터가 있고 이를 XML로 처리하려는 경우를 가정해 보십시오.For illustration, assume that you have existing relational data, such as customers, orders, and line items, that you want to handle as XML. 관계형 데이터에 대해 AXSD를 사용하여 XML 뷰를 정의합니다.Define an XML view by using AXSD over the relational data. XML 뷰를 사용하면 XML 데이터를 테이블에 대량 로드하고 XML 뷰를 사용하여 관계형 데이터를 쿼리 및 업데이트할 수 있습니다.The XML view allows you to bulk load XML data into your tables and query and update the relational data by using the XML view. 이 모델은 XML 태그가 포함된 데이터를 다른 응용 프로그램과 교환하고 SQL 응용 프로그램을 방해 받지 않고 실행해야 하는 경우에 유용합니다.This model is useful if you have to exchange data that contains XML markup with other applications while your SQL applications work uninterrupted.

하이브리드 모델Hybrid Model

관계형 및 xml 데이터 형식의 열을 조합하면 데이터 모델링에 적합한 경우가 많습니다.Frequently, a combination of relational and xml data type columns is appropriate for data modeling. XML 데이터의 일부 값은 관계형 열에 저장하고 나머지 값이나 전체 XML 값은 XML 열에 저장할 수 있습니다.Some of the values from your XML data can be stored in relational columns, and the rest, or the whole XML value stored in an XML column. 이렇게 하면 관계형 열에서 만든 인덱스와 잠금 특성을 더욱 자세히 제어할 수 있다는 점에서 성능이 향상됩니다.This may yield better performance in that you have more control over the indexes created on the relational columns and locking characteristics.

관계형 열에 저장하는 값은 작업에 따라 달라집니다.The values to store in relational columns depend on your workload. 예를 들어 경로 식 /Customer/@CustId에 따라 모든 XML 값을 검색하는 경우 CustId 특성의 값을 관계형 열로 승격하고 이를 인덱싱하면 쿼리 속도가 빨라집니다.For example, if you retrieve all the XML values based on the path expression, /Customer/@CustId, promoting the value of the CustId attribute into a relational column and indexing it may yield faster query performance. 반면에 XML 데이터가 관계형 열로 포괄적으로 중복되지 않게 분해된 경우 리어셈블리 비용이 상당히 높을 수 있습니다.On the other hand, if your XML data is extensively and nonredundantly decomposed into relational columns, the re-assembly cost may be significant.

예를 들어 구조화 수준이 높은 XML 데이터의 경우 테이블의 내용이 XML로 변환되어 모든 값을 관계형 열로 매핑하고 XML 뷰 기술을 사용할 수 있습니다.For highly structured XML data, for example, the content of a table has been converted into XML; you can map all values to relational columns, and possibly use XML view technology.

XML 데이터의 세분성Granularity of XML Data

XML 열에 저장된 XML 데이터의 세분성은 잠금에 있어서 매우 중요하며, 업데이트에 대해서도 역시 중요합니다.The granularity of the XML data stored in an XML column is very important for locking and, to a lesser degree, it is also important for updates. SQL ServerSQL Server 는 XML 및 비-XML 데이터에 대해서 모두 같은 잠금 메커니즘을 사용합니다. uses the same locking mechanism for both XML and non-XML data. 따라서 행 수준의 잠금으로 인해 행에 있는 모든 XML 인스턴스가 잠깁니다.Therefore, row-level locking causes all XML instances in the row to be locked. 세분성이 큰 경우 업데이트를 위해 큰 XML 인스턴스를 잠그면 다중 사용자 환경에서 처리량이 줄어듭니다.When the granularity is large, locking large XML instances for updates causes throughput to decline in a multiuser scenario. 반면에 심각한 분해 작업을 수행하면 개체 캡슐화가 손실되며 리어셈블리 비용이 증가합니다.On the other hand, severe decomposition loses object encapsulation and increases reassembly cost.

데이터 모델링 요구 사항과 잠금 및 업데이트 특성 간의 균형은 훌륭한 디자인을 위해 중요한 요소입니다.A balance between data modeling requirements and locking and update characteristics is important for good design. 하지만 SQL ServerSQL Server에서 실제 저장된 XML 인스턴스의 크기는 그렇게 중요하지 않습니다.However, in SQL ServerSQL Server, the size of actual stored XML instances is not as critical.

예를 들어 XML 인스턴스에 대한 업데이트는 저장된 기존 XML 인스턴스가 해당 업데이트된 버전과 비교되는 부분적 BLOB(Binary Large Object) 업데이트와 부분적 인덱스 업데이트에 대한 새로운 지원을 사용하여 수행됩니다.For example, updates to an XML instance are performed by using new support for partial binary large object (BLOB) and partial index updates in which the existing stored XML instance is compared to its updated version. 부분적 BLOB(Binary Large Object) 업데이트는 두 개의 XML 인스턴스 간의 차등 비교를 수행하고 다른 점만 업데이트합니다.Partial binary large object (BLOB) update performs a differential comparison between the two XML instances and updates only the differences. 부분적 인덱스 업데이트는 XML 인덱스에서 변경되어야 하는 행만 수정합니다.Partial index updates modify only those rows that must be changed in the XML index.

xml 데이터 형식의 제한 사항Limitations of the xml Data Type

다음의 일반적인 제한 사항이 xml 데이터 형식에 적용됩니다.Note the following general limitations that apply to the xml data type:

  • 저장된 xml 데이터 형식 인스턴스의 표현은 2GB를 초과할 수 없습니다.The stored representation of xml data type instances cannot exceed 2 GB.

  • sql_variant 인스턴스의 하위 유형으로 사용될 수 없습니다.It cannot be used as a subtype of a sql_variant instance.

  • text 또는 ntext로의 캐스트 또는 변환을 지원하지 않습니다.It does not support casting or converting to either text or ntext. 대신 varchar(max) 또는 nvarchar(max) 를 사용합니다.Use varchar(max) or nvarchar(max) instead.

  • 비교 또는 정렬할 수 없습니다.It cannot be compared or sorted. 즉, xml 데이터 형식은 GROUP BY 문에서 사용할 수 없습니다.This means an xml data type cannot be used in a GROUP BY statement.

  • ISNULL, COALESCE 및 DATALENGTH 이외의 기본 제공 스칼라 함수에 대한 매개 변수로 사용할 수 없습니다.It cannot be used as a parameter to any scalar, built-in functions other than ISNULL, COALESCE, and DATALENGTH.

  • 인덱스에서 키 열로 사용할 수 없습니다.It cannot be used as a key column in an index. 하지만 클러스터형 인덱스의 데이터로 포함되거나 비클러스터형 인덱스를 만든 경우 INCLUDE 키워드를 사용하여 비클러스터형 인덱스에 명시적으로 추가할 수 있습니다.However, it can be included as data in a clustered index or explicitly added to a nonclustered index by using the INCLUDE keyword when the nonclustered index is created.

참고 항목See Also

XML 문서 대량 가져오기 및 내보내기 예제(SQL Server)Examples of Bulk Import and Export of XML Documents (SQL Server)