Udostępnij za pośrednictwem


SQLXML obciążenia luzem w.Środowisko netto

W tym temacie wyjaśniono sposób używania funkcji obciążenia luzem XML w.Środowisko netto.Szczegółowe informacje dotyczące obciążenia luzem XML, zobacz Wykonywanie zbiorczego ładowania danych XML (SQLXML 4.0).

Aby użyć obiektu COM obciążenia luzem SQLXML z zarządzanego środowiska, należy dodać odwołanie projektu do tego obiektu.Generuje interfejs otoka zarządzana wokół obiektu COM obciążenia luzem.

Ostrzeżenie

Zarządzane obciążenia luzem XML nie działa z zarządzanych strumieni i wymaga opakowaniowy strumieni macierzystym.Składnik SQLXML luzem obciążenia nie będzie działać w środowisku wielowątkowych ("[MTAThread]" atrybut).Jeśli użytkownik spróbuje uruchomić składnik obciążenia luzem w środowisku multi-wątek, InvalidCastException wyjątek następujące informacje dodatkowe: "QueryInterface dla interfejs SQLXMLBULKLOADLib.ISQLXMLBulkLoad nie powiodło się". Obejścia problemu jest obiekt zawierający zbiorczego ładowania obiektu pojedynczego wątek dostępne (na przykład za pomocą [STAThread] atrybut, przedstawiony w próbce).

W tym temacie przedstawiono pracy aplikacji C# próbki do ładowanie zbiorcze w bazie danych XML.Aby utworzyć próbki roboczej, wykonaj następujące kroki:

  1. Utwórz następujące tabele:

    CREATE TABLE Ord (
             OrderID     int identity(1,1)  PRIMARY KEY,
             CustomerID  varchar(5))
    GO
    CREATE TABLE Product (
             ProductID   int identity(1,1) PRIMARY KEY,
             ProductName varchar(20))
    GO
    CREATE TABLE OrderDetail (
           OrderID     int FOREIGN KEY REFERENCES Ord(OrderID),
           ProductID   int FOREIGN KEY REFERENCES Product(ProductID),
                       CONSTRAINT OD_key PRIMARY KEY (OrderID, ProductID))
    GO
    
  2. Następującego schematu należy zapisać w pliku (schema.xml):

    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
    <xsd:annotation>
      <xsd:appinfo>
        <sql:relationship name="OrderOD"
              parent="Ord"
              parent-key="OrderID"
              child="OrderDetail"
              child-key="OrderID" />
    
        <sql:relationship name="ODProduct"
              parent="OrderDetail"
              parent-key="ProductID"
              child="Product"
              child-key="ProductID" 
              inverse="true"/>
      </xsd:appinfo>
    </xsd:annotation>
    
      <xsd:element name="Order" sql:relation="Ord" 
                                sql:key-fields="OrderID" >
       <xsd:complexType>
         <xsd:sequence>
            <xsd:element name="Product" sql:relation="Product" 
                         sql:key-fields="ProductID"
                         sql:relationship="OrderOD ODProduct">
              <xsd:complexType>
                 <xsd:attribute name="ProductID" type="xsd:int" />
                 <xsd:attribute name="ProductName" type="xsd:string" />
              </xsd:complexType>
            </xsd:element>
         </xsd:sequence>
            <xsd:attribute name="OrderID"   type="xsd:integer" /> 
            <xsd:attribute name="CustomerID"   type="xsd:string" />
        </xsd:complexType>
      </xsd:element>
    </xsd:schema>
    
  3. Zapisz następujący przykładowy dokument XML w pliku (data.xml):

    <ROOT>  
      <Order OrderID="11" CustomerID="ALFKI">
        <Product ProductID="11" ProductName="Chai" />
        <Product ProductID="22" ProductName="Chang" />
      </Order>
      <Order OrderID="22" CustomerID="ANATR">
         <Product ProductID="33" ProductName="Aniseed Syrup" />
        <Product ProductID="44" ProductName="Gumbo Mix" />
      </Order>
    </ROOT>
    
  4. Uruchom program Visual Studio.

  5. Tworzy aplikację konsoli C#.

  6. Z projektu menu wybierz Dodaj odwołanie.

  7. W COM karcie Wybierz Biblioteki typów 4.0 Microsoft SQLXML Bulkload (xblkld4.dll) i kliknij przycisk OK.Pojawi się Interop.SQLXMLBULKLOADLib wirtualny plik dziennika utworzone w projekcie.

  8. Poniższy kod należy zastąpić metoda Main().Aktualizacja ConnectionString właściwość i ścieżka do plików schematu i danych.

    [STAThread]
       static void Main(string[] args)
       {   
             try
             {
                SQLXMLBULKLOADLib.SQLXMLBulkLoad4Class objBL = new SQLXMLBULKLOADLib.SQLXMLBulkLoad4Class();
                objBL.ConnectionString = "Provider=sqloledb;server=server;database=databaseName;integrated security=SSPI";
                objBL.ErrorLogFile = "error.xml";
                objBL.KeepIdentity = false;
                objBL.Execute ("schema.xml","data.xml");
             }
             catch(Exception e)
             {
             Console.WriteLine(e.ToString());
             }
       }
    
  9. Załadować kodu XML w tabela utworzono, tworzenie i uruchamianie projektu.

    Ostrzeżenie

    Odwołanie do składnika obciążenia luzem (xblkld4.dll) można również dodawać za pomocą narzędzie tlbimp.exe, który jest dostępny jako część.NET framework.To narzędzie tworzy otoka zarządzana na macierzystego DLL (xblkld4.dll), które następnie mogą być wykorzystywane w dowolnym.Projekt netto.Na przykład:

       c:\>tlbimp xblkld4.dll
    

    Tworzy zarządzanej otoki biblioteki DLL (SQLXMLBULKLOADLib.dll), który można użyć w.NET Framework projektu.W.NET Framework Dodaj odwołanie projektu do nowo utworzonego pliku DLL.