Artikel-ID: 309681 - Geändert am: Donnerstag, 25. September 2003 - Version: 1.0

SO WIRD'S GEMACHT: Abrufen von Schemainformationen mittels GetOleDbSchemaTable und Visual C# .NET

SystemtippDieser Artikel bezieht sich auf ein anderes Betriebssystem als das von Ihnen verwendete. Für Sie möglicherweise nicht relevante Artikelinhalte wurden deaktiviert.
Dieser Artikel wurde zuvor veröffentlicht unter D309681
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
309681  (http://support.microsoft.com/kb/309681/EN-US/ ) HOW TO: Retrieve Schema Information Using GetOleDbSchemaTable and Visual C# .NET
Eine Version dieses Artikels für Microsoft Visual Basic .NET finden Sie unter 309488  (http://support.microsoft.com/kb/309488/DE/ ) .

Achtung: Die in diesem Artikel aufgeführten Codebeispiele basieren auf den Beispieldatenbanken der englischsprachigen Versionen von Microsoft SQL Server oder Microsoft Access. Sie können diese Beispiele nicht mit den deutschsprachigen Beispieldatenbanken von SQL Server oder Access verwenden. Verwenden Sie entweder die englischsprachigen Versionen dieser Datenbanken, oder passen Sie die Codebeispiele so an, dass sie auf die deutschen Beispieldatenbanken und die deutschsprachigen Datenbankobjekte verweisen.

Hinweis: Die Verwendung der hier aufgeführten Informationen sowie Makro- oder Programmcodes geschieht auf Ihre eigene Verantwortung. Microsoft stellt Ihnen diese Informationen sowie Makro- und Programmlistings ohne Gewähr auf Richtigkeit, Vollständigkeit und/oder Funktionalität sowie ohne Anspruch auf Support zur Verfügung. Die zur Verfügung gestellten Makro- und Programmierungsbeispiele sollen lediglich exemplarisch die Funktionsweise des Beispiels aufzeigen.

Weitere Informationen zu den von Microsoft angebotenen Supportoptionen finden Sie unter folgender Internetadresse:
http://support.microsoft.com/ (http://support.microsoft.com/)
Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.

Auf dieser Seite

Alles erweitern | Alles schließen

Zusammenfassung

Dieser Artikel beschreibt, wie Sie die GetOleDbSchemaTable-Methode des OleDbConnection-Objekts in ADO.NET verwenden können, um Datenbank-Schemainformationen abzurufen. Schemainformationen in einer Datenquelle umfassen Datenbanken oder Kataloge, die von der Datenquelle verfügbar sind, Tabellen und Ansichten in einer Datenbank sowie bestehende Einschränkungen etc. Schemainformationen in einer Tabelle umfassen Primärschlüssel, Spalten und AutoWert-Felder.

Beachten Sie, dass es bei der Verwendung eines SqlClient.SqlConnection-Objekts keine weitere Methode gibt, die GetOleDbSchemaTable entspricht. Der SQL Server .NET-Datenprovider zeigt Backend-Schemainformationen über gespeicherte Prozeduren und informative Ansichten an. Weitere Informationen zu Ansichten und gespeicherten Prozeduren, die über Microsoft SQL Server verfügbar sind, finden Sie in der Transact-SQL-Referenz in der MSDN-Bibliothek.

Voraussetzungen

Im folgenden werden die empfohlene Hardware, Software, Netzwerkinfrastruktur und Service Packs beschrieben, die Sie benötigen:
  • Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server oder Windows NT 4.0 Server
  • Microsoft Visual Studio .NET
Dieser Artikel setzt voraus, dass Sie mit folgenden Themen vertraut sind:
  • Visual Studio .NET
  • ADO.NET-Grundlagen und -Syntax

GetOleDbSchemaTable-Methode des OleDbConnection-Objekts

Der OLE DB .NET-Datenprovider verwendet die GetOleDbSchemaTable-Methode des OleDbConnection-Objekts, um Schemainformationen anzuzeigen. GetOleDbSchemaTable gibt eine DataTable zurück, die die Schemainformationen enthält.

Das erste Argument von GetOleDbSchemaTable ist der Schemaparameter, ein OleDbSchemaGuid-Argument, das bestimmt, welche Schemainformationen (wie Tabellen, Spalten oder Primärschlüssel) zurückgegeben werden sollen. Das zweite Argument ist ein Objektarray aus Einschränkungen, die dazu dienen, die in der Schema-DataTable zurückgegebenen Zeilen zu filtern (Sie können beispielsweise Einschränkungen für Tabellenname, Tabellentyp, Tabellenbesitzer und/oder Tabellenschema definieren).

OleDbSchemaGuid-Member

Das OleDbSchemaGuid-Argument definiert den Typ der Schematabelle für die GetOleDbSchemaTable-Methode. Im folgenden sind einige der OleDbSchemaGuid-Member aufgeführt:
  • Spalten
  • Fremdschlüssel
  • Indizes
  • Primärschlüssel
  • Tabellen
  • Ansichten
Eine vollständige Liste der OleDbSchemaGuid-Member finden Sie auf der Website "OleDbSchemaGuid Members", auf die im Abschnitt Informationsquellen verwiesen wird.

Einschränkungen

Einschränkungen stellen ein Objektarray von Filterwerten dar, von denen jeder zu einer DataColumn in der erstellten DataTable gehört. Das OleDbSchemaGuid-Argument bestimmt die jeweiligen Einschränkungen. Wenn Sie beispielsweise ein OleDbSchemaGuid von Tabellen angeben, sieht das Einschränkungsarray folgendermaßen aus:
{TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE}
Um die verfügbaren Einschränkungen zu inspizieren, klicken Sie auf einen der OleDbSchemaGuid-Member auf der folgenden Microsoft-Website:
OleDbSchemaGuid Members
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdataoledboledbschemaguidmemberstopic.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdataoledboledbschemaguidmemberstopic.asp)
Wenn Sie Werte in das Einschränkungsarray übertragen, fügen Sie das Visual C# .NET-Schlüsselwort null für Arrayelemente ein, die keine Werte enthalten. Wenn Sie beispielsweise Tabellenschemas abrufen wollen, verwenden Sie OleDbSchemaGuid.Tables. Wenn Sie Tabellen angeben, werden jedoch auch Aliase, Synonyme, Ansichten und andere verwandte Objekte zurückgegeben. Verwenden Sie daher, wenn Sie alle Objekte außer Tabellen ausfiltern wollen, die Einschränkung TABLE für TABLE_TYPE. Sie können null für TABLE_CATALOG, TABLE_SCHEMA und TABLE_NAME verwenden, weil Sie nicht nach diesen Objekten filtern:
schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, 
              new Object[] {null, null, null, "TABLE"});

Zurückgegebene DataTable

Die von der GetOleDbSchemaTable-Methode zurückgegebene DataTable weist eine Zeile für jedes Objekt auf, das dem OleDbSchemaGuid-Typ und den Einschränkungskriterien entspricht. Die DataTable weist eine Spalte für jede Einschränkungsspalte auf, gefolgt von zusätzlichen Schemainformationen, die auf dem OleDbSchemaGuid-Feld basieren.

Wenn Sie beispielsweise den folgenden Code verwenden, ist jede in der DataTable zurückgegebene Zeile eine Datenbanktabelle:
schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, 
              new Object[] {null, null, null, "TABLE"});
Die in der DataTable zurückgegebenen Spalten sind die Einschränkungsspalten (TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE), gefolgt von den zusätzlichen Schemaspalten TABLE_GUID, DESCRIPTION, TABLE_PROPID, DATE_CREATED und DATE_MODIFIED.

Um diese Liste mit Spaltennamen (das heißt, die Feldbeschreibung wie TABLE_CATALOG, TABLE_SCHEMA oder TABLE_NAME) zu erhalten, können Sie die Ordinalposition der Spalten verwenden. Beachten Sie, dass das Columns-Array nullbasiert ist:
for (int i = 0; i < schemaTable.Columns.Count; i++) {
   Console.WriteLine(schemaTable.Columns[i].ToString());
}
Um die Werte in jeder Spalte (das heißt, die tatsächlichen Tabellennamen wie Kategorien, Kunden oder Personal) zu erhalten, können Sie die Ordinalposition im ItemArray der Zeile verwenden. Beachten Sie, dass das ItemArray nullbasiert ist:
for (int i = 0; i < schemaTable.Rows.Count; i++) {
   Console.WriteLine(schemaTable.Rows[i].ItemArray[2].ToString());
}

Auflisten von Tabellen in einer Datenbank

Mit dem folgenden Beispielcode werden Tabellen in der SQL Server Northwind-Datenbank aufgelistet.

OleDbSchemaGuid.Tables gibt die Tabellen (einschließlich Ansichten) zurück, die für eine bestimmte Anmeldung zugänglich sind. Wenn Sie als Objektarray {null, null, null, "TABLE"} angeben, wird so gefiltert, dass nur TABLE als TABLE_TYPE enthalten ist. Anschließend wird der Tabellenname (TABLE_NAME) jeder Zeile in der zurückgegebenen Schematabelle aufgelistet.
  1. Öffnen Sie Visual Studio .NET.
  2. Erstellen Sie ein neues Visual C#-Konsolenanwendungsprojekt. Class1.cs wird standardmäßig zu dem Projekt hinzugefügt.
  3. Öffnen Sie das Codefenster für Class1. Fügen Sie den folgenden Code oben in das Codefenster über der Namespace-Deklaration ein:
    using System.Data;
    using System.Data.OleDb;
  4. Fügen Sie im Codefenster den folgenden Code in die Main-Funktion ein:
    OleDbConnection cn = new OleDbConnection();
    DataTable schemaTable;
    
    //Connect to the Northwind database in SQL Server.
    //Be sure to use an account that has permission to list tables.
    cn.ConnectionString = "Provider=SQLOLEDB;Data Source=server;User ID=sa;
                           Password=password;Initial Catalog=Northwind";
    cn.Open();
    
    //Retrieve schema information about tables.
    //Because tables include tables, views, and other objects,
    //restrict to just TABLE in the Object array of restrictions.
    schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, 
                  new Object[] {null, null, null, "TABLE"});
    
    //List the table name from each row in the schema table.
    for (int i = 0; i < schemaTable.Rows.Count; i++) {
       Console.WriteLine(schemaTable.Rows[i].ItemArray[2].ToString());
    }
    
    //Explicitly close - don't wait on garbage collection.
    cn.Close();
    
    //Pause
    Console.ReadLine();
  5. Ändern Sie den ConnectionString, um die Verbindung zu Ihrem SQL Server mit einem Konto herzustellen, das berechtigt ist, Tabellen in der Northwind-Datenbank aufzulisten.
  6. Drücken Sie die Taste [F5], um das Projekt zu kompilieren und auszuführen. Beachten Sie, dass die Tabellen im Konsolenfenster aufgelistet werden.
  7. Drücken Sie die Eingabetaste, um die Konsolenanwendung zu beenden und zur IDE (Integrated Development Environment) zurückzugehen.

Abrufen eines Schemas für eine Tabelle

Mit dem folgenden Beispielcode werden Schemainformationen für die Tabelle Personal in der SQL Server Northwind-Datenbank aufgelistet.

OleDbSchemaGuid.Tables gibt die Tabellen (einschließlich Ansichten) zurück, die für eine bestimmte Anmeldung zugänglich sind. Wenn Sie als Objektarray {null, null, "Employees", "TABLE"} angeben, wird so gefiltert, dass nur eine Tabelle mit dem Namen Personal enthalten ist. Anschließend werden die Schemainformationen für die zurückgegebene Schematabelle aufgelistet.
  1. Erstellen Sie ein neues Visual C#-Konsolenanwendungsprojekt. Class1.cs wird standardmäßig zu dem Projekt hinzugefügt.
  2. Öffnen Sie das Codefenster für Class1. Fügen Sie den folgenden Code oben in das Codefenster über der Namespace-Deklaration ein:
    using System.Data;
    using System.Data.OleDb;
  3. Fügen Sie im Codefenster den folgenden Code in die Main-Funktion ein:
    OleDbConnection cn = new OleDbConnection();
    DataTable schemaTable;
    
    //Connect to the Northwind database in SQL Server.
    //Be sure to use an account that has permission to retrieve table schema.
    cn.ConnectionString = "Provider=SQLOLEDB;Data Source=server;User ID=sa;
                          Password=password;Initial Catalog=Northwind";
    cn.Open();
    
    //Retrieve schema information about the Employees table.
    schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, 
                  new Object[] {null, null, "Employees", "TABLE"});
    
    //List the schema info for the Employees table
    //in the format Field Descriptor : Field Value.
    for(int i = 0; i < schemaTable.Columns.Count; i++) {
       Console.WriteLine(schemaTable.Columns[i].ToString() + " : " + 
                         schemaTable.Rows[0].ItemArray[i].ToString());
    }
    
    //Explicitly close - don't wait on garbage collection.
    cn.Close();
    
    //Pause
    Console.ReadLine();
  4. Ändern Sie den ConnectionString, um die Verbindung zu Ihrem SQL Server mit einem Konto herzustellen, das berechtigt ist, das Schema für die Tabelle Personal abzurufen.
  5. Drücken Sie die Taste [F5], um das Projekt zu kompilieren und auszuführen. Beachten Sie, dass die Tabellen im Konsolenfenster aufgelistet werden.
  6. Drücken Sie die Eingabetaste, um die Konsolenanwendung zu beenden und zur IDE zurückzugehen.

Auflisten von Spalten in einer Tabelle

Mit dem folgenden Beispielcode werden die Namen von Spalten der Tabelle Personal in der SQL Server Northwind-Datenbank aufgelistet.

OleDbSchemaGuid.Columns gibt die Spalten in Tabellen und Ansichten zurück, die für eine bestimmte Anmeldung zugänglich sind. Wenn Sie als Objektarray {null, null, "Employees", null} angeben, wird so gefiltert, dass nur die Spalten für die Tabelle Personal enthalten sind.
  1. Erstellen Sie ein neues Visual C#-Konsolenanwendungsprojekt. Class1.cs wird standardmäßig zu dem Projekt hinzugefügt.
  2. Öffnen Sie das Codefenster für Class1. Fügen Sie den folgenden Code oben in das Codefenster über der Namespace-Deklaration ein:
    using System.Data;
    using System.Data.OleDb;
  3. Fügen Sie im Codefenster den folgenden Code in die Main-Funktion ein:
    OleDbConnection cn = new OleDbConnection();
    DataTable schemaTable;
    
    //Connect to the Northwind database in SQL Server.
    //Be sure to use an account that has permission to list the columns in the Employees table.
    cn.ConnectionString = "Provider=SQLOLEDB;Data Source=server;User ID=sa;
                           Password=password;Initial Catalog=Northwind";
    cn.Open();
    
    //Retrieve schema information about columns.
    //Restrict to just the Employees TABLE.
    schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, 
                  new Object[] {null, null, "Employees", null});
    
    //List the column name from each row in the schema table.
    for (int i = 0; i < schemaTable.Rows.Count; i++) {
       Console.WriteLine(schemaTable.Rows[i].ItemArray[3].ToString());
    }
    
    //Explicitly close - don't wait on garbage collection.
    cn.Close();
    
    //Pause
    Console.ReadLine();
  4. Ändern Sie den ConnectionString, um die Verbindung zu Ihrem SQL Server mit einem Konto herzustellen, das berechtigt ist, Spalten in der Tabelle Personal aufzulisten.
  5. Drücken Sie die Taste [F5], um das Projekt zu kompilieren und auszuführen. Beachten Sie, dass die Spalten der Tabelle Personal im Konsolenfenster aufgelistet werden.
  6. Drücken Sie die Eingabetaste, um die Konsolenanwendung zu beenden und zur IDE zurückzugehen.

Auflisten von Primärschlüsseln in einer Tabelle

Mit dem folgenden Beispielcode werden die Primärschlüssel der Tabelle Personal in der SQL Server Northwind-Datenbank und der Tabelle Personal in der SQL Server Pubs-Datenbank aufgelistet.

OleDbSchemaGuid.Primary_Keys gibt die Primärschlüssel in einem Katalog zurück, die für eine bestimmte Anmeldung zugänglich sind. Bei diesem Beispielcode besteht die OleDbConnection zu SQL Server, jedoch nicht zu einer bestimmten SQL Server-Datenbank:
cn.ConnectionString = "Provider=SQLOLEDB;Data Source=server;User ID=sa;
                       Password=password;"
Stattdessen gibt dieser Code die Northwind- oder Pubs-Datenbank als TABLE_CATALOG im Einschränkungsarray an. Dieser Code gibt den Tabellenbesitzer "dbo" für die TABLE_SCHEMA-Einschränkung an. Zusätzlich gibt dieser Code die Tabellennamen für die Einschränkung TABLE_NAME an.

Um den Primärschlüssel der Tabelle Personal in der Northwind-Datenbank zu erhalten, verwenden Sie als Objektarray {"Northwind", "dbo", "Employees"}:
schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys, 
              new Object[] {"Northwind", "dbo", "Employees"});
Um den Primärschlüssel der Tabelle Personal in der Pubs-Datenbank zu erhalten, verwenden Sie als Objektarray {"Pubs", "dbo", "Employee"}:
schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys, 
              new Object[] {"Pubs", "dbo", "Employee"});
Gehen Sie folgendermaßen vor, um den Beispielcode zu erstellen:
  1. Erstellen Sie ein neues Visual C#-Konsolenanwendungsprojekt. Class1.cs wird standardmäßig zu dem Projekt hinzugefügt.
  2. Öffnen Sie das Codefenster für Class1. Fügen Sie den folgenden Code oben in das Codefenster über der Namespace-Deklaration ein:
    using System.Data;
    using System.Data.OleDb;
  3. Fügen Sie im Codefenster den folgenden Code in die Main-Funktion ein:
    OleDbConnection cn = new OleDbConnection();
    DataTable schemaTable;
    
    //Connect to SQL Server.
    //Be sure to use an account that has permissions to list primary keys
    //in both the Northwind and Pubs databases.
    cn.ConnectionString = "Provider=SQLOLEDB;Data Source=server;User ID=sa;
                           Password=password;";
    cn.Open();
    
    //Retrieve schema information about primary keys.
    //Restrict to just the Employees TABLE in the Northwind CATALOG.
    schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys, 
                  new Object[] {"Northwind", "dbo", "Employees"});
    
    //List the primary key for the first row in the schema table.
    //The first three items in the ItemArray in the row are catalog, schema, and table.
    //The fourth item is the primary key.
    Console.WriteLine(schemaTable.Rows[0].ItemArray[3].ToString());
    
    //Retrieve primary key for the Employee TABLE in the Pubs CATALOG.
    schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys, 
                  new Object[] {"Pubs", "dbo", "Employee"});
    
    //List the primary key for the first row in the schema table.
    Console.WriteLine(schemaTable.Rows[0].ItemArray[3].ToString());
    
    //Explicitly close - don't wait on garbage collection.
    cn.Close();
    
    //Pause
    Console.ReadLine();
  4. Ändern Sie den ConnectionString, um die Verbindung zu Ihrem SQL Server mit einem Konto herzustellen, das berechtigt ist, die Primärschlüssel aufzulisten.
  5. Drücken Sie die Taste [F5], um das Projekt zu kompilieren und auszuführen. Beachten Sie, dass die Primärschlüssel für die Tabelle Personal in der Northwind-Datenbank und die Tabelle Personal in der Pubs-Datenbank im Konsolenfenster aufgelistet werden.
  6. Drücken Sie die Eingabetaste, um die Konsolenanwendung zu beenden und zur IDE zurückzugehen.

Verweise

Eine vollständige Liste der OleDbSchemaGuid-Member finden Sie unter dem folgenden Thema in der Microsoft .NET Framework Software Development Kit (SDK)-Dokumentation. Um eine Liste der verfügbaren Einschränkungen zu erhalten, klicken Sie auf einen der OleDbSchemaGuid-Member:
OleDbSchemaGuid Members
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdataoledboledbschemaguidmemberstopic.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdataoledboledbschemaguidmemberstopic.asp)
Weitere Informationen erhalten Sie unter den folgenden Themen in der .NET Framework SDK-Dokumentation:
Obtaining Schema Information from a Database
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconobtainingschemainformationfromdatabase.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconobtainingschemainformationfromdatabase.asp)

OleDbConnection.GetOleDbSchemaTable Method
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdataoledboledbconnectionclassgetoledbschematabletopic.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdataoledboledbconnectionclassgetoledbschematabletopic.asp)

OleDbSchemaGuid.Tables Field
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdataoledboledbschemaguidclasstablestopic.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdataoledboledbschemaguidclasstablestopic.asp)

OleDbSchemaGuid.Columns Field
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdataoledboledbschemaguidclasscolumnstopic.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdataoledboledbschemaguidclasscolumnstopic.asp)

OleDbSchemaGuid.Primary_Keys Field
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdataoledboledbschemaguidclassprimary_keystopic.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdataoledboledbschemaguidclassprimary_keystopic.asp)

Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft ADO.NET 1.1
  • Microsoft ADO.NET 1.0
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Keywords: 
kbhowtomaster KB309681
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.