XML 태스크를 사용하여 XML 유효성 검사Validate XML with the XML Task

XML 태스크의 ValidationDetails 속성을 사용하도록 설정하여 XML 문서의 유효성을 검사하고 풍부한 오류 출력을 가져올 수 있습니다.Validate XML documents and get rich error output by enabling the ValidationDetails property of the XML Task.

다음 스크린샷에는 다양한 오류 출력을 제공하는 XML 유효성 검사에 필요한 설정이 포함된 XML 태스크 편집기 가 나와 있습니다.The following screen shot shows the XML Task Editor with the settings required for XML validation with rich error output.

XML 태스크 편집기에서 XML 작업 속성XML task properties in the XML Task Editor

ValidationDetails 속성을 사용할 수 있게 되기 전에 먼저 XML 태스크에 의해 수행된 XML 유효성 검사가 오류 또는 해당 위치에 대한 정보 없이 true 또는 false 결과만 반환했습니다.Before the ValidationDetails property was available, XML validation by the XML Task returned only a true or false result, with no information about errors or their locations. 이제는 ValidationDetails 를 true로 설정할 경우 출력 파일에 줄 번호 및 위치를 포함하여 모든 오류에 대한 자세한 정보가 포함됩니다.Now, when you set ValidationDetails to True, the output file contains detailed information about every error including the line number and the position. 이 정보를 사용하여 XML 문서의 오류를 이해하고, 찾고, 수정할 수 있습니다.You can use this information to understand, locate, and fix errors in XML documents.

대형 XML 문서 및 많은 수의 오류에 사용할 수 있도록 XML 유효성 검사 기능을 쉽게 확장할 수 있습니다.The XML validation functionality scales easily for large XML documents and large numbers of errors. 출력 파일 자체가 XML 형식이므로 출력을 쿼리하고 분석할 수 있습니다.Since the output file itself is in XML format, you can query and analyze the output. 예를 들어 출력에 오류가 많이 포함되어 있으면 이 항목에서 설명하는 대로 Transact-SQLTransact-SQL 쿼리를 사용하여 오류를 그룹화할 수 있습니다.For example, if the output contains a large number of errors, you can group the errors by using a Transact-SQLTransact-SQL query, as described in this topic.

참고

SQL ServerSQL Server Integration ServicesIntegration Services ( SSISSSIS) 도입 된 ValidationDetails 속성 SQL Server 2012SQL Server 2012 서비스 팩 2입니다. Integration ServicesIntegration Services ( SSISSSIS) introduced the ValidationDetails property in SQL Server 2012SQL Server 2012 Service Pack 2. 이 속성은 SQL Server 2014SQL Server 2014SQL Server 2016SQL Server 2016에서도 사용할 수 있습니다.The property is also available in SQL Server 2014SQL Server 2014 and in SQL Server 2016SQL Server 2016.

유효한 XML의 샘플 출력Sample output for XML that's valid

아래에는 유효한 XML 파일의 유효성 결과가 포함된 샘플 출력 파일이 나와 있습니다.Here is a sample output file with validation results for a valid XML file.


<root xmlns:ns="http://schemas.microsoft.com/xmltools/2002/xmlvalidation">  
    <metadata>  
        <result>true</result>  
        <errors>0</errors>  
        <warnings>0</warnings>  
        <startTime>2015-05-28T10:27:22.087</startTime>  
        <endTime>2015-05-28T10:29:07.007</endTime>  
        <xmlFile>d:\Temp\TestData.xml</xmlFile>  
        <xsdFile>d:\Temp\TestSchema.xsd</xsdFile>  
    </metadata>  
    <messages />  
</root>  

유효하지 않은 XML의 샘플 출력Sample output for XML that's not valid

아래에는 오류가 많지 않은 XML 파일의 유효성 결과가 포함된 샘플 출력 파일이 나와 있습니다.Here is a sample output file with validation results for an XML file that contains a small number of errors. 텍스트는 <오류 > 요소는 읽기 쉽도록 래핑 되었습니다.The text of the <error> elements has been wrapped for readability.


<root xmlns:ns="http://schemas.microsoft.com/xmltools/2002/xmlvalidation">  
    <metadata>  
        <result>false</result>  
        <errors>2</errors>  
        <warnings>0</warnings>  
        <startTime>2015-05-28T10:45:09.538</startTime>  
        <endTime>2015-05-28T10:45:09.558</endTime>  
        <xmlFile>C:\Temp\TestData.xml</xmlFile>  
        <xsdFile>C:\Temp\TestSchema.xsd</xsdFile>  
    </metadata>  
    <messages>  
        <error line="5" position="26">The 'ApplicantRole' element is invalid - The value 'wer3' is invalid  
    according to its datatype 'ApplicantRoleType' - The Enumeration constraint failed.</error>  
        <error line="16" position="28">The 'Phone' element is invalid - The value 'we3056666666' is invalid  
     according to its datatype 'phone' - The Pattern constraint failed.</error>  
    </messages>  
</root>  

Transact-SQL 쿼리를 통해 XML 유효성 검사 출력 분석Analyze XML validation output with a Transact-SQL query

XML 유효성 검사의 출력에 오류가 많이 포함되어 있으면 Transact-SQLTransact-SQL 쿼리를 사용하여 SQL Server Management StudioSQL Server Management Studio에서 출력을 로드할 수 있습니다.If the output of XML validation contains a large number of errors, you can use a Transact-SQLTransact-SQL query to load the output in SQL Server Management StudioSQL Server Management Studio. 그런 다음 WHERE, GROUP BY, ORDER BY, JOIN 등을 비롯한 T-SQL 언어의 모든 기능을 사용하여 오류 목록을 분석할 수 있습니다.Then you can analyze the error list with all the capabilities of the T-SQL language including WHERE, GROUP BY, ORDER BY, JOIN, and so forth.

DECLARE @xml XML;  

SELECT @xml = XmlDoc     
FROM OPENROWSET (BULK N'C:\Temp\XMLValidation_2016-02-212T10-41-00.xml', SINGLE_BLOB) AS Tab(XmlDoc);  

-- Query # 1, flat list of errors  
-- convert to relational/rectangular  
;WITH XMLNAMESPACES ('http://schemas.microsoft.com/xmltools/2002/xmlvalidation' AS ns), rs AS  
(  
SELECT col.value('@line','INT') AS line  
     , col.value('@position','INT') AS position  
     , col.value('.','VARCHAR(1024)') AS error  
FROM @XML.nodes('/root/messages/error') AS tab(col)  
)  
SELECT * FROM rs;  
-- WHERE error LIKE ‘%whatever_string%’  

-- Query # 2, count of errors grouped by the error message  
-- convert to relational/rectangular  
;WITH XMLNAMESPACES ('http://schemas.microsoft.com/xmltools/2002/xmlvalidation' AS ns), rs AS  
(  
SELECT col.value('@line','INT') AS line  
     , col.value('@position','INT') AS position  
     , col.value('.','VARCHAR(1024)') AS error  
FROM @XML.nodes('/root/messages/error') AS tab(col)  
)  
SELECT COALESCE(error,'Total # of errors:') AS [error], COUNT(*) AS [counter]  
FROM rs  
GROUP BY GROUPING SETS ((error), ())  
ORDER BY 2 DESC, COALESCE(error, 'Z');  

위 텍스트에 나와 있는 두 번째 샘플 쿼리를 Management StudioManagement Studio 에서 표시한 결과는 다음과 같습니다.Here is the result in Management StudioManagement Studio of the second sample query shown in the preceding text.

오류를 그룹화 하려면 XML Management Studio에서 쿼리Query to group XML errors in Management Studio

관련 항목:See Also

XML 태스크 XML Task
XML 태스크 편집기 ( 일반 페이지 )XML Task Editor (General Page)