XML 데이터에 비즈니스 논리 추가
적용 대상:SQL ServerAzure SQL Database
비즈니스 논리를 여러 가지 방식으로 XML 데이터에 추가할 수 있습니다.
XML 데이터의 삽입 및 수정 중에 도메인 특정 제약 조건을 강화하도록 행 또는 열 제약 조건을 작성할 수 있습니다.
열에 값을 삽입하거나 업데이트할 때 발생하는 XML 열에 트리거를 작성할 수 있습니다. 트리거는 도메인별 유효성 검사 규칙을 포함하거나 속성 테이블을 채울 수 있습니다.
데이터베이스 엔진에는 관리 코드를 실행하는 기능이 포함되어 있습니다. 이 CLR(공용 언어 런타임) 통합을 사용하여 XML 값을 전달하는 관리 코드에 함수를 작성하고 System.Xml 네임스페이스에서 제공하는 XML 처리 기능을 사용할 수 있습니다. 예제는 XML 데이터에 XSL 변환을 적용하는 것입니다. 또는 하나 이상의 관리되는 클래스로 XML을 역직렬화하고 관리 코드를 사용하여 해당 클래스에서 작동할 수 있습니다.
비즈니스 요구에 맞게 XML 열에서 처리를 시작하는 Transact-SQL 저장 프로시저와 함수를 작성할 수 있습니다.
예: XSL 변환 적용
XML 데이터 형식 인스턴스와 파일에 저장된 XSL 변환을 수락하고, 변환을 XML 데이터에 적용한 다음, 결과에서 변환된 XML을 반환하는 CLR 함수 TransformXml()
를 고려합니다. 다음은 C#으로 작성된 기초 함수입니다.
public static SqlXml TransformXml (SqlXml XmlData, string xslPath) {
// Load XSL transformation
XslCompiledTransform xform = new XslCompiledTransform();
XPathDocument xslDoc = new XPathDocument (xslPath);
xform.Load(xslDoc);
// Load XML data
XPathDocument xDoc = new XPathDocument (XmlData.CreateReader());
// Return the transformed value
MemoryStream xsltResult = new MemoryStream();
xform.Transform(xDoc, null, xsltResult);
SqlXml retSqlXml = new SqlXml(xsltResult);
return (retSqlXml);
}
어셈블리가 등록되고 사용자 정의 Transact-SQL 함수가 만들어지면 SqlXslTransform()
TransformXml()
다음 쿼리와 같이 Transact-SQL에서 함수를 호출할 수 있습니다.
SELECT SqlXslTransform (xCol, 'C:\MyFile\xsltransform.xsl')
FROM T
WHERE xCol.exist('/book/title/text()[contains(.,"custom")]') = 1;
쿼리 결과에는 변환된 XML의 행 집합이 포함됩니다.
SQL Server에 CLR 통합은 XML 데이터를 테이블 또는 속성 승격으로 분해하고 System.Xml 네임스페이스의 관리되는 클래스를 사용하여 XML 데이터를 쿼리할 수 있는 가능성을 확장합니다. 자세한 내용은 XML 데이터(SQL Server)를 참조하세요.
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기