Udostępnij za pośrednictwem


Wprowadzenie do XML ładowanie zbiorcze (SQLXML 4.0)

ładowanie zbiorcze XML jest autonomiczny obiektu COM, który pozwala na załadowanie semistructured danych XML do programu Microsoft SQL Server tabele.

Można wstawić dane XML SQL Server bazy danych za pomocą instrukcja INSERT i funkcja OPENXML; jednak narzędzie ładowanie zbiorcze zapewnia lepszą wydajność, gdy trzeba wstawiać duże ilości danych XML.

The Execute metoda of the XML ładowanie zbiorcze object model takes two parameters:

  • Adnotacjami schematu definicji schematu XML (XSD) lub zmniejszonej dane XML (XDR).Narzędzie XML ładowanie zbiorcze interpretuje ten schemat mapowania i adnotacje, które są określone w schemacie w rozpoznaniu tabele programu SQL Server, do której jest dane XML do wstawienia.

  • Dokument XML lub fragment dokumentu (fragment dokumentu jest dokument bez pojedynczy element najwyższego poziom).Można określić nazwę pliku lub strumienia, z którego mogą czytać XML ładowanie zbiorcze.

XML zbiorcze ładowanie interpretuje mapowanie schematu i identyfikuje tabela (s) do danych XML jest do wstawienia.

Zakłada się, że czytelnik jest obeznany z następującymi SQL Server funkcje:

Strumieniowe przesyłanie danych XML

Ponieważ urządzenie źródłowe dokumentu XML może być duża, cały dokument nie jest odczytywany do pamięci w celu ładowanie zbiorcze przetwarzania.Zamiast tego XML ładowanie zbiorcze interpretuje jako strumień danych XML i odczytuje go.Jak narzędzie odczytuje dane, to identyfikuje tabele bazy danych, generuje odpowiednie rekordy ze urządzenie źródłowe danych XML, a następnie wysyła następującą liczbę rekordów do SQL Server do wstawiania.

Na przykład następujący dokument XML urządzenie źródłowe składa się z <Odbiorcy> elementy i <Zamówienia> elementy podrzędność:

<Customer ...>
    <Order.../>
    <Order .../>
     ...
</Customer>
...

As XML Bulk Load reads the <Customer> element, it generates a record for the Customertable.Kiedy odczytuje </ Odbiorcę> Zakończenie tagu XML ładowanie zbiorcze wstawia tego rekordu do tabela SQL Server. In the same way, when it reads the <Order> element, XML Bulk Load generates a record for the Ordertable, and then inserts that record into the SQL Server table upon reading the </Order> end tag.

Transakcji i Nontransacted XML ładowanie zbiorcze operacji

ładowanie zbiorcze XML może działać w transakcyjnego lub trybie nontransacted.Wydajność jest zazwyczaj optymalny, w przypadku zbiorczego ładowania w trybie nontransacted: oznacza to, Transaction Właściwość jest zestaw FALSE) i spełniony jest jeden z następujących warunków:

  • Tabele, do którego dane są zbiorczego ładowania są puste z nie indeksów.

  • Tabele mają dane i indeksy unikatowe.

Jeśli wystąpią problemy w nontransacted podejście nie gwarantuje wycofywanie ładowanie zbiorcze przetwarzania (chociaż może się zdarzyć, częściowe wycofywanie zmian).The nontransacted ładowanie zbiorcze jest wówczas, gdy baza danych jest pusta.W związku z tym jeżeli coś, co nieprawidłowe, można oczyścić bazę danych i ponownie uruchomić XML ładowanie zbiorcze.

Uwaga

W trybie nontransacted XML ładowanie zbiorcze używa domyślnego transakcję wewnętrzną i przekazuje go.Gdy Transaction Właściwość jest zestaw na wartość TRUE, XML ładowanie zbiorcze nie wywołuje zatwierdzanie dla tej transakcji.

Jeśli Transaction Właściwość jest ustawiona na wartość TRUE, XML ładowanie zbiorcze tworzy pliki tymczasowe, jeden dla każdej tabela, która jest identyfikowana w schemacie mapowania. XML ładowanie zbiorcze najpierw zapisuje rekordy ze urządzenie źródłowe dokumentu XML w tych plików tymczasowych.Następnie, Transact-SQL Instrukcja BULK INSERT pobiera te rekordy z plików i przechowuje je w odpowiednich tabelach. Można określić lokalizacji tych plików tymczasowych za pomocą TempFilePath Właściwość. Należy się upewnić, że SQL Server konto używane z danymi XML ładowanie zbiorcze ma dostęp do tej ścieżka. Jeśli TempFilePath Właściwość nie została określona, domyślna ścieżka pliku jest określona w zmiennej środowiskowej TEMP służy do tworzenia plików tymczasowych.

Jeśli Transaction Właściwość jest zestaw na wartość FALSE (domyślne zestaw ting), XML ładowanie zbiorcze korzysta z interfejs OLE DB IRowsetFastLoad Aby ładowanie zbiorcze danych.

Jeśli ConnectionString Właściwość ustawia ciąg połączenia, Transaction Właściwość jest ustawiona na wartość true (PRAWDA), XML obciążenia zbiorcze działa w kontekście jej własnej transakcji. (Na przykład XML ładowanie zbiorcze uruchamia własny transakcji i zatwierdza lub toczy się ponownie, odpowiednio.)

Jeśli ConnectionCommand Właściwość ustawia połączenie z istniejącym obiektem połączenia oraz Transaction Właściwość jest ustawiona na wartość TRUE, XML ładowanie zbiorcze nie wydaje instrukcja zatwierdzanie lub ROLLBACK, z wyjątkiem sukcesu lub awaria, odpowiednio. Jeśli występuje błąd, XML ładowanie zbiorcze zwraca odpowiedni komunikat.Decyzja o wydaniu instrukcja zatwierdzanie lub ROLLBACK pozostawia się do klient, który zainicjował ładowanie zbiorcze.Obiekt połączenia, który jest używany do ładowania zbiorcze XML powinien być typu ICommand lub polecenie Obiekt ADO.

W SQLXML 4.0 ConnectionObject Nie można używać z Transaction Właściwość jest ustawiona na wartość FALSE. Tryb nontransacted nie jest obsługiwany z ConnectionObject ponieważ nie można otworzyć więcej niż jeden IRowsetFastLoad Interfejs przekazany w sesja.