Udostępnij za pośrednictwem


sp_xml_preparedocument (Transact-SQL)

Odczytuje tekst XML podany jako dane wejściowe, bada składnię tekstu za pomocą analizatora języka MSXML (Msxmlsql.dll) oraz udostępnia zbadany dokument w stanie pozwalającym na jego użycie.Dokument po analizie składni ma postać drzewa reprezentującego różne węzły dokumentu XML: elementy, atrybuty, tekst, komentarze itd.

sp_xml_preparedocument zwraca dojście, które mogą być używane do dostępu do nowo utworzonego reprezentacji wewnętrznej dokumentu XML.Ten uchwyt jest prawidłowa w czasie trwania sesja albo do unieważnienia dojścia przez sp_xml_removedocument.

Uwaga

Analizowane dokument jest przechowywany w wewnętrznej pamięci podręcznej SQL Server. Analizator składni MSXML używa jednej ósmej Całkowita pamięć dostępna dla SQL Server. Aby uniknąć działania pamięci, należy uruchomić sp_xml_removedocument , aby zwolnić pamięć.

Uwaga

Do tyłu zgodności sp_xml_preparedocument zwija powrotu KARETKI (char(13)) i LF (char(10)) znaków w atrybutach, nawet jeśli znaki te są entitized.

Uwaga

Wywoływany przez analizator składni XML sp_xml_preparedocument można analizować elementów DTD wewnętrzne i obiekt deklaracji.Ponieważ złośliwie zbudowane elementów DTD a jednostką deklaracji może być używany do wykonania typu odmowa usługa, firma Microsoft zdecydowanie zaleca się że użytkowników bezpośrednio przekazać dokumenty XML z niezaufanych źródeł sp_xml_preparedocument.

Aby zmniejszyć ryzyko ataków przez cykliczne rozwijanie struktury obiektów, procedura sp_xml_preparedocument ogranicza do 10 000 liczbę obiektów, jakie można rozwinąć w węźle jednego obiektu znajdującego się na najwyższym poziomie struktury dokumentu.Ograniczenie nie dotyczy obiektów znakowych ani liczbowych.Limit pozwala na zapisywanie dokumentów z wieloma odwołaniami do obiektów, ale uniemożliwia cykliczne rozwijanie struktur obiektów w łańcuchy przekraczające 10 000 poziomów.

Uwaga

sp_xml_preparedocument ogranicza liczbę elementów, które mogą być otwarte jednocześnie do 256.

Topic link iconKonwencje składni języka Transact-SQL

sp_xml_preparedocument
hdoc 
OUTPUT
[ , xmltext ]
[ , xpath_namespaces ] 

Argumenty

  • hdoc
    Is the handle to the newly created document.hdoc is an integer.

  • [ xmltext ]
    Oryginalny dokument XML.Analizator języka MSXML bada właśnie ten dokument.xmltext jest parametrem tekstowym mogącym przybierać wartość char, nchar, varchar, nvarchar, text, ntext lub xml.Wartość domyślna wynosi NULL i powoduje tworzenie wewnętrznej reprezentacji pustego dokumentu XML.

    Uwaga

    Procedura składowana sp_xml_preparedocument potrafi przetwarzać tylko tekst i dokumenty XML nieuwzględniające typów.Jeśli wystąpienie wartości, które ma pełnić rolę danych wejściowych, już jest dokumentem XML uwzględniającym typy, najpierw należy przenieść ją do nowego wystąpienia dokumentu XML nieuwzględniającego typów lub przekształcić na ciąg tekstowy, a następnie przekazać uzyskaną wartość jako dane wejściowe.Aby uzyskać więcej informacji, zobacz Typed XML Compared to Untyped XML.

  • [ xpath_namespaces ]
    Specifies the namespace declarations that are used in row and column XPath expressions in OPENXML.xpath_namespaces is a text parameter: char, nchar, varchar, nvarchar, text, ntext lub xml.

    The default value is <root xmlns:mp="urn:schemas-microsoft-com:xml-metaprop">.xpath_namespaces provides the namespace URIs for the prefixes used in the XPath expressions in OPENXML by means of a well-formed XML document.xpath_namespaces declares the prefix that must be used to refer to the namespace urn:schemas-microsoft-com:xml-metaprop; this provides metadata about the parsed XML elements.Jako takie jest ostatni LSN, przetwarzane przez proces przechwytywania, gdy zmiany są propagowane do tabel bazy danych zmian.Prefiks CR jest nadal ważny dla URN: schemas-microsoft - com:xml - metaprop even if xpath_namespaces zawiera deklaracja nie.

Wartości kodów powrotnych

Aby uzyskać więcej informacji na temat zmiany przechwytywania danych z osi czasu Zobacz >.

Uprawnienia

Członkostwo w grupie wymaga publiczne roli.

Przykłady

A.Funkcja jest zazwyczaj używany do uzyskiwania punkt końcowy wysokiej odpowiednie interwału kwerendy.

Zwraca maksymalną wartość LSNW poniższym przykładzie zwraca maksymalną LSN dla wszystkich wystąpień przechwytywania w sp_xml_preparedocument Baza danych.

DECLARE @hdoc int
DECLARE @doc varchar(1000)
SET @doc ='
<ROOT>
<Customer CustomerID="VINET" ContactName="Paul Henriot">
   <Order CustomerID="VINET" EmployeeID="5" OrderDate="1996-07-04T00:00:00">
      <OrderDetail OrderID="10248" ProductID="11" Quantity="12"/>
      <OrderDetail OrderID="10248" ProductID="42" Quantity="10"/>
   </Order>
</Customer>
<Customer CustomerID="LILAS" ContactName="Carlos Gonzlez">
   <Order CustomerID="LILAS" EmployeeID="3" OrderDate="1996-08-16T00:00:00">
      <OrderDetail OrderID="10283" ProductID="72" Quantity="3"/>
   </Order>
</Customer>
</ROOT>'
--Create an internal representation of the XML document.
EXEC sp_xml_preparedocument @hdoc OUTPUT, @doc
-- Remove the internal representation.
exec sp_xml_removedocument @hdoc

B.Ustawienie wysoki punkt końcowy zakres kwerendy

W przykładzie poniżej następuje zwrócenie dojścia do nowo utworzonej wewnętrznej reprezentacji dokumentu XML wskazanego jako dane wejściowe.Procedura składowana sprawdza poprawność załadowanego dokumentu względem zawartej w nim jego definicji typu.Procedura sp_xml_preparedocument jest wywoływana przy użyciu domyślnego przyporządkowania prefiksu przestrzeni nazw.

DECLARE @hdoc int
DECLARE @doc varchar(2000)
SET @doc = '
<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE root 
[<!ELEMENT root (Customers)*>
<!ELEMENT Customers EMPTY>
<!ATTLIST Customers CustomerID CDATA #IMPLIED ContactName CDATA #IMPLIED>]>
<root>
<Customers CustomerID="ALFKI" ContactName="Maria Anders"/>
</root>'

EXEC sp_xml_preparedocument @hdoc OUTPUT, @doc

C.sp_helpremotelogin (języka Transact-SQL)

Zwraca maksymalną wartość LSNWywołanie sp_xml_preparedocument zachowuje mp Prefiks metaproperty mapowanie obszaru nazw, a następnie dodaje xyz Prefiks mapowania do przestrzeni nazw urn:MyNamespace.

DECLARE @hdoc int
DECLARE @doc varchar(1000)
SET @doc ='
<ROOT>
<Customer CustomerID="VINET" ContactName="Paul Henriot">
   <Order CustomerID="VINET" EmployeeID="5" 
           OrderDate="1996-07-04T00:00:00">
      <OrderDetail OrderID="10248" ProductID="11" Quantity="12"/>
      <OrderDetail OrderID="10248" ProductID="42" Quantity="10"/>
   </Order>
</Customer>
<Customer CustomerID="LILAS" ContactName="Carlos Gonzlez">
   <Order CustomerID="LILAS" EmployeeID="3" 
           OrderDate="1996-08-16T00:00:00">
      <OrderDetail OrderID="10283" ProductID="72" Quantity="3"/>
   </Order>
</Customer>
</ROOT>'
--Create an internal representation of the XML document.
EXEC sp_xml_preparedocument @hdoc OUTPUT, @doc, '<ROOT xmlns:xyz="urn:MyNamespace"/>'