Wprowadzenie do XML obciążenia luzem (SQLXML 4.0)
Załadować luzem XML jest autonomiczny obiektu COM, który pozwala załadować semistructured danych XML do programu Microsoft SQL Server tabele.
Można wstawić dane XML do SQL Server bazy danych przy użyciu instrukcja INSERT i funkcja OPENXML; jednak narzędzie luzem obciążenia zapewnia lepszą wydajność, gdy trzeba wstawić dużych ilości danych XML.
Execute metoda modelu obiektów XML luzem obciążenia przyjmuje dwa parametry:
Adnotacjami schematu XML Schema Definition (XSD) lub danych XML (XDR).Narzędzie obciążenia luzem XML interpretuje to mapowanie schematu i adnotacje, które są określone w schemacie w identyfikacji tabele programu SQL Server, w których dane XML jest wstawiany.
Dokument XML lub fragment dokumentu (fragment dokumentu jest dokument bez elementu najwyższego poziom).Należy określić nazwę pliku lub strumienia, z którego można odczytać obciążenia luzem XML.
Ładowanie danych XML luzem interpretuje mapowanie schematu i identyfikuje tabela(s), do którego XML jest wstawiany.
Zakłada się, że czytelnik jest obeznany z następującymi SQL Server funkcje:
Adnotacjami schematów XSD i XDR.Aby uzyskać więcej informacji na temat schematów XSD adnotacjami, zobacz Wprowadzenie do adnotacjami schematów XSD (SQLXML 4.0).Informacje schematy XDR adnotacjami, zobacz Adnotacjami schematy XDR (zaniechane w SQLXML 4.0).
SQL Serverluzem Wstaw mechanizmów, takich jak Transact-SQL Instrukcja WSTAW luzem i narzędzia bcp.Aby uzyskać więcej informacji, zobacz BULK INSERT (Transact-SQL) i Narzędzie bcp.
Strumieniowe przesyłanie danych XML
Ponieważ źródło dokumentu XML może być duża, cały dokument nie jest odczytywany w pamięci dla ładowanie zbiorcze przetwarzania.Zamiast tego obciążenia luzem XML interpretuje się jako strumień danych XML i odczytuje go.Jako narzędzie odczytuje dane, identyfikuje bazę danych tabela(s), generuje odpowiednie rekordy ze źródło danych XML, a następnie wysyła rekordu(rekordów) na SQL Server do wstawiania.
Na przykład, następujący dokument XML źródło składa się z <klienta> elementów i <zamówienia> elementów podrzędność:
<Customer ...>
<Order.../>
<Order .../>
...
</Customer>
...
As XML Bulk Load reads the <Customer> element, it generates a record for the Customertable.Kiedy odczytuje </Customer> end tag, wstawia obciążenia luzem XML, które rejestrowania do tabela w SQL Server.In the same way, when it reads the <Order> element, XML Bulk Load generates a record for the Order table, and then inserts that record into the SQL Server table upon reading the </Order> end tag.
Transakcyjnych i Nontransacted operacje ładowania zbiorcze XML
Obciążenia luzem XML może działać w transakcyjnych lub tryb nontransacted.Wydajność jest zazwyczaj optymalnej są załadunku luzem w trybie nontransacted: oznacza to, że Transaction właściwość jest zestaw na FALSE) i jest spełniony jeden z następujących warunków:
Tabele, do których dane są ładowane luzem są puste z żadnych indeksów.
Tabele mają unikatowe indeksy i danych.
Nontransacted podejście nie gwarantuje wycofywania, jeśli nieprawidłowość w ładowanie zbiorcze procesu (chociaż może się zdarzyć, częściowego cofnięcia).Nontransacted ładowanie zbiorcze jest odpowiednia, jeśli baza danych jest pusta.Dlatego jeśli coś rzadko, można oczyścić bazę danych i ponownie uruchomić ładowanie danych XML luzem.
Ostrzeżenie
W trybie nontransacted obciążenia luzem XML używa domyślnego wewnętrzną transakcję i przekazuje go.Gdy Transaction właściwość jest zestaw ma wartość TRUE, obciążenia luzem XML nie wywołać przekazania dla zatwierdzanie.
Jeśli Transaction właściwość jest zestaw ma wartość TRUE, obciążenia luzem XML tworzy pliki tymczasowe, jeden dla każdej tabela, którą jest identyfikowany w schemacie mapowania.Ładowanie danych XML luzem najpierw przechowuje rekordy ze źródło dokumentu XML w te pliki tymczasowe.Następnie, Transact-SQL Instrukcja WSTAW luzem pobiera rekordy z plików i przechowuje je w odpowiednich tabelach.Można określić lokalizację dla tych plików tymczasowych za pomocą TempFilePath właściwość.Musi zapewnić, że SQL Server konto używane przy obciążeniu luzem XML ma dostęp do tej ścieżka.Jeśli TempFilePath właściwość nie jest określony, domyślna ścieżka pliku określona w zmiennej środowiskowej TEMP jest używany do tworzenia plików tymczasowych.
Jeśli Transaction właściwość ma wartość FALSE (zestaw domyślne), załadować luzem XML używa interfejs OLE DB IRowsetFastLoad do ładowanie zbiorcze danych.
Jeśli ConnectionString Ustawia właściwości połączeń ciągoraz Transaction właściwość ma wartość TRUE, obciążenia luzem XML działa w kontekście własnej transakcji.(Na przykład obciążenia luzem XML uruchamia własny transakcji i zatwierdza lub wycofuje odpowiednio.)
Jeśli ConnectionCommand właściwość ustawia połączenie z istniejącym obiektem połączenia i Transaction właściwość ma wartość TRUE, obciążenia luzem XML nie wydaje COMMIT lub ROLLBACK instrukcja w odniesieniu do sukcesu lub niepowodzenia, odpowiednio.Jeśli błąd XML luzem obciążenia zwraca odpowiedni komunikat.Decyzję o wydaniu instrukcja COMMIT lub ROLLBACK pozostawia się do klient, który zainicjował ładowanie zbiorcze.Obiekt połączenia używany do ładowania luzem XML powinien być typu ICommand lub obiektu polecenia ADO.
W wersji 4.0 SQLXML ConnectionObject nie można używać z Transaction Właściwość zestaw na FALSE.Tryb nontransacted nie jest obsługiwany z ConnectionObject , ponieważ jest niemożliwe otworzyć więcej niż jeden IRowsetFastLoad interfejs przekazany w sesja.