Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:programu SQL Server
Azure SQL Database
Logikę biznesową można dodać do danych XML na kilka sposobów:
Ograniczenia dotyczące wierszy lub kolumn można napisać, aby wymusić ograniczenia specyficzne dla domeny podczas wstawiania i modyfikowania danych XML.
Wyzwalacz można napisać w kolumnie XML, która jest uruchamiana podczas wstawiania lub aktualizowania wartości w kolumnie. Wyzwalacz może zawierać reguły walidacji specyficzne dla domeny lub wypełnić tabele właściwości.
Aparat bazy danych umożliwia wykonywanie kodu zarządzanego. Tej integracji środowiska uruchomieniowego języka wspólnego (CLR) można używać do pisania funkcji w kodzie zarządzanym, do którego są przekazywane wartości XML, i korzystać z możliwości przetwarzania XML udostępnianych przez przestrzeń nazw System.Xml. Przykładem jest zastosowanie transformacji XSL do danych XML. Alternatywnie można deserializować kod XML w co najmniej jedną klasę zarządzaną i wykonywać na nich operacje przy użyciu kodu zarządzanego.
Można napisać procedury składowane i funkcje w Transact-SQL, które rozpoczynają przetwarzanie kolumny XML do potrzeb biznesowych.
Przykład: stosowanie transformacji XSL
Rozważ funkcję CLR TransformXml()
, która akceptuje wystąpienie typu danych XML i przekształcenie XSLT przechowywane w pliku, stosuje przekształcenie do danych XML, a następnie zwraca przekształcony XML w wyniku. Poniżej znajduje się szkieletowa funkcja napisana w 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);
}
Po zarejestrowaniu zestawu i utworzeniu funkcji Transact-SQL zdefiniowanej przez użytkownika SqlXslTransform()
odpowiadającej TransformXml()
można wywołać funkcję z Transact-SQL, jak pokazano w poniższym zapytaniu:
SELECT SqlXslTransform (xCol, 'C:\MyFile\xsltransform.xsl')
FROM T
WHERE xCol.exist('/book/title/text()[contains(.,"custom")]') = 1;
Wynik zapytania zawiera zestaw wierszy przekształconego kodu XML.
Integracja środowiska CLR z programem SQL Server rozszerza możliwości przekształcania danych XML w tabele lub promowania właściwości oraz wykonywania zapytań dotyczących danych XML przy użyciu klas zarządzanych w przestrzeni nazw System.Xml. Aby uzyskać więcej informacji, zobacz XML Data (SQL Server).