Sie sind zurzeit offline. Es wird auf die erneute Herstellung einer Internetverbindung gewartet.

Ihr Browser wird nicht unterstützt.

Sie müssen Ihren Browser aktualisieren, um die Website zu verwenden.

Aktualisieren Sie auf die neueste Version von Internet Explorer.

Verwendung von Excel mit SQL Server-Verbindungsserver und verteilte Abfragen

Wichtig: Dieser Artikel wurde maschinell übersetzt und wird dann möglicherweise mithilfe des Community Translation Framework (CTF) von Mitgliedern unserer Microsoft Community nachbearbeitet. Weitere Informationen zu CTF finden Sie unter http://support.microsoft.com/gp/machine-translation-corrections/de.

Den englischen Originalartikel können Sie über folgenden Link abrufen: 306397
Zusammenfassung
Microsoft SQL Server unterstützt Verbindungen mit anderen OLE DB-Datenquellen auf eine ständige oder ad-hoc-Basis. Die beständige Verbindung wird als Verbindungsserver bezeichnet; eine ad-hoc-Verbindung, die um eine einzelne Abfrage erstellt wurde, wird als eine verteilte Abfrage bezeichnet.

Microsoft Excel-Arbeitsmappen sind eine Art von OLE DB-Datenquelle, die Sie auf diese Weise über SQL Server-Abfragen können. Dieser Artikel beschreibt die Syntax, die für die Konfiguration einer Excel-Datenquelle als Verbindungsserver erforderlich ist, sowie die Syntax, die erforderlich ist, verwenden Sie einer verteilten Abfrage zum Abfragen eine Excel-Datenquelle.
Weitere Informationen

Abfragen einer Excel-Datenquelle auf einem Verbindungsserver

Sie können SQL Server Management Studio oder Enterprise Manager, verwenden eine gespeicherte Systemprozedur, SQL-DMO (Distributed Management Objects) oder SMO (SQL Server Management Objects) eine Excel-Datenquelle als SQL Server-Verbindungsserver zu konfigurieren. (SMO sind nur für Microsoft SQL Server 2005 zur Verfügung.) In allen diesen Fällen müssen Sie immer die folgenden vier Eigenschaften festlegen:
  • Der Name , den Sie für den Verbindungsserver verwenden möchten.
  • Der OLE DB- Provider , der für die Verbindung verwendet werden soll.
  • Die Datenquelle oder der vollständige Pfad und Dateiname für die Excel-Arbeitsmappe.
  • Die Providerzeichenfolgeder identifiziert das Ziel als Excel-Arbeitsmappe. Standardmäßig erwartet das Jet-Provider eine Access-Datenbank.
Die gespeicherte Prozedur Sp_addlinkedserver erwartet auch die @srvproduct -Eigenschaft einen Zeichenfolgenwert sein kann.

Hinweis Wenn Sie SQL Server 2005 verwenden, müssen Sie einen Wert angeben, der nicht für die Produktname -Eigenschaft in SQL Server Management Studio oder für die @srvproduct -Eigenschaft in der gespeicherten Prozedur für eine Excel-Datenquelle leer ist.

Mithilfe von SQL Server Management Studio oder Enterprise Manager, eine Excel-Datenquelle als Verbindungsserver konfigurieren

SQL Server Management Studio (SQLServer 2005)
  1. Erweitern Sie in SQL Server Management Studio Serverobjekte im Objekt-Explorer.
  2. Maustaste auf Verbindungsserver, und klicken Sie dann auf neuer Verbindungsserver.
  3. Wählen Sie die Seite Allgemein im linken Bereich, und befolgen Sie diese Schritte:
    1. Geben Sie in das erste Textfeld einen beliebigen Namen für den Verbindungsserver.
    2. Wählen Sie die <b00> </b00>anderen Datenquelle Option.
    3. Klicken Sie in der Liste auf Microsoft Jet 4.0 OLE DB-Provider.
    4. Geben Sie im Feld ArtikelnameExcel für den Namen der OLE DB-Datenquelle.
    5. Geben Sie in das Feld Datenquelle den vollständigen Pfad und Namen der Excel-Datei.
    6. Geben Sie im Feld ProviderzeichenfolgeExcel 8.0 für Excel 2002, Excel 2000 oder Excel 97-Arbeitsmappe.
    7. Klicken Sie auf OK , um den neuen Verbindungsserver erstellen.
Hinweis In SQL Server Management Studio kann nicht erweitern, den neuen Verbindungsservernamen zu die Liste der Objekte anzeigen, die der Server enthält.
Enterprise Manager (SQL Server 2000)
  1. Klicken Sie in Enterprise Manager, erweitern Sie den Ordner Sicherheit .
  2. Maustaste auf Verbindungsserver, und klicken Sie dann auf neuer Verbindungsserver.
  3. Gehen Sie auf der Registerkarte Allgemein folgendermaßen vor:
    1. Geben Sie in das erste Textfeld einen beliebigen Namen für den Verbindungsserver.
    2. Klicken Sie im Feld Typ auf andere Datenquelle.
    3. Klicken Sie in der Liste Name des Anbieters auf Microsoft Jet 4.0 OLE DB-Provider.
    4. Geben Sie in das Feld Datenquelle den vollständigen Pfad und Namen der Excel-Datei.
    5. Geben Sie im Feld ProviderzeichenfolgeExcel 8.0 für Excel 2002, Excel 2000 oder Excel 97-Arbeitsmappe.
    6. Klicken Sie auf OK , um den neuen Verbindungsserver erstellen.
  4. Erweitern Sie die Liste von Objekten, die es enthält, erweitern den neuen Verbindungsservernamen klicken.
  5. Klicken Sie unter dem neuen Namen der Verbindungsserver auf Tabellen. Beachten Sie, dass die Arbeitsblätter und benannten Bereiche in der Rightpane angezeigt werden.

Mithilfe einer gespeicherten Prozedur zu eine Excel-Datenquelle als Verbindungsserver konfigurieren

Die gespeicherte Prozedur Sp_addlinkedserver können auch eine Excel-Datenquelle als Verbindungsserver konfigurieren:
DECLARE @RC intDECLARE @server nvarchar(128)DECLARE @srvproduct nvarchar(128)DECLARE @provider nvarchar(128)DECLARE @datasrc nvarchar(4000)DECLARE @location nvarchar(4000)DECLARE @provstr nvarchar(4000)DECLARE @catalog nvarchar(128)-- Set parameter valuesSET @server = 'XLTEST_SP'SET @srvproduct = 'Excel'SET @provider = 'Microsoft.Jet.OLEDB.4.0'SET @datasrc = 'c:\book1.xls'SET @provstr = 'Excel 8.0'EXEC @RC = [master].[dbo].[sp_addlinkedserver] @server, @srvproduct, @provider, @datasrc, @location, @provstr, @catalog				
Wie bereits erwähnt, erfordert diese gespeicherte Prozedur einen zusätzliche, beliebige String-Wert für das @srvproduct -Argument, das als "Produktname" in der Konfiguration von Enterprise Manager und SQL Server Management Studio angezeigt wird. Die Argumente @location und @catalog werden nicht verwendet.

Mithilfe von SQL-DMO zu eine Excel-Datenquelle als Verbindungsserver konfigurieren

SQL Distributed Management Objects können Sie eine Excel-Datenquelle programmgesteuert aus Microsoft Visual Basic oder einer anderen Programmiersprache als Verbindungsserver konfigurieren. Sie müssen die gleichen vier Argumente angeben, die in der Konfiguration von Enterprise Manager und SQL Server Management Studio erforderlich sind.
Private Sub Command1_Click()    Dim s As SQLDMO.SQLServer    Dim ls As SQLDMO.LinkedServer    Set s = New SQLDMO.SQLServer    s.Connect "(local)", "sa", "password"    Set ls = New SQLDMO.LinkedServer    With ls        .Name = "XLTEST_DMO"        .ProviderName = "Microsoft.Jet.OLEDB.4.0"        .DataSource = "c:\book1.xls"        .ProviderString = "Excel 8.0"    End With    s.LinkedServers.Add ls    s.CloseEnd Sub				

So konfigurieren Sie eine Excel-Datenquelle als Verbindungsserver unter Verwendung von SMO

In SQL Server 2005 können Sie SQL Server Management Objects (SMO) eine Excel-Datenquelle programmgesteuert als Verbindungsserver konfigurieren. Zu diesem Zweck können Sie Microsoft Visual Basic .NET oder einer anderen Programmiersprache. Sie müssen die Argumente angeben, die in SQL Server Management Studio-Konfiguration erforderlich sind. Das SMO-Objektmodell erweitert und ersetzt das Objektmodell Distributed Management Objects (SQL-DMO). SMO ist kompatibel mit SQL Server, Version 7.0, SQL Server 2000 und SQL Server 2005 können Sie auch SMO für die Konfiguration von SQL Server 2000 verwenden.
Imports Microsoft.SqlServer.Management.SmoImports Microsoft.SqlServer.Management.CommonPublic Class Form1    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click        Dim s As Server        Dim conn As ServerConnection        Dim ls As LinkedServer        conn = New ServerConnection("ServerName\InstanceName", "YourUesrName", "YourPassword")        s = New Server(conn)        Try            ls = New LinkedServer(s, "XLTEST_DMO")            With ls                .ProviderName = "Microsoft.Jet.OLEDB.4.0"                .ProductName = "Excel"                .DataSource = "c:\book1.xls"                .ProviderString = "Excel 8.0"            End With            ls.Create()            MessageBox.Show("New linked Server has been created.")        Catch ex As SmoException            MessageBox.Show(ex.Message)        Finally            ls = Nothing            If s.ConnectionContext.IsOpen = True Then                s.ConnectionContext.Disconnect()            End If        End Try    End SubEnd Class

Abfragen einer Excel-Datenquelle auf einem Verbindungsserver

Nachdem Sie eine Excel-Datenquelle als Verbindungsserver konfiguriert haben, können Sie einfach seine Daten aus Query Analyzer oder einer anderen Clientanwendung Abfragen. Der folgende Code verwendet zum Beispiel zum Abrufen von Datenzeilen, die in Tabelle1 der Excel-Datei gespeichert sind, den Verbindungsserver, den Sie mithilfe von SQL-DMO konfiguriert:
SELECT * FROM XLTEST_DMO...Sheet1$				
OPENQUERY können auch den Excel-Verbindungsserver in einer Weise "Passthrough" folgendermaßen Abfragen:
SELECT * FROM OPENQUERY(XLTEST_DMO, 'SELECT * FROM [Sheet1$]')				
Das erste Argument, das OPENQUERY erwartet ist der Name des Verbindungsservers. Trennzeichen sind erforderlich für Arbeitsblattnamen, wie oben dargestellt.

Sie können auch eine Liste aller Tabellen abrufen, die in der Excel-Verbindungsserver mithilfe der folgenden Abfrage:
EXECUTE SP_TABLES_EX 'XLTEST_DMO'				

Abfragen einer Excel-Datenquelle mit verteilten Abfragen

Verteilte SQL Server-Abfragen und die OPENDATASOURCE oder OPENROWSET-Funktion können selten verwendete Abfrage Excel-Datenquellen auf ad-hoc-Basis.

Hinweis Wenn Sie SQL Server 2005 verwenden, stellen Sie sicher, dass Sie die Option Ad Hoc Distributed Queries aktiviert haben, mithilfe von SQL Server-Oberflächenkonfiguration, wie im folgenden Beispiel:
SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',   'Data Source=c:\book1.xls;Extended Properties=Excel 8.0')...Sheet1$				
Beachten Sie, dass OPENROWSET für das zweite Argument ("Provider String") eine ungewöhnliche Syntax verwendet:
SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',    'Excel 8.0;Database=c:\book1.xls', Sheet1$)				
Die Syntax, die ein Entwickler ActiveX Data Objects (ADO) für das zweite Argument ("Provider String") mit OPENROWSET verwenden erwarten kann:
SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',    'Data Source=c:\book1.xls;Extended Properties=Excel 8.0', Sheet1$)				
Diese Syntax wird der folgenden Fehler vom Jet-Provider:
Installierbares ISAM nicht gefunden.
Hinweis Dieser Fehler tritt auch auf, wenn Sie eingeben DataSource anstelle von Datenquelle. Das folgende Argument ist z. B. falsch:
SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'DataSource=c:\book1.xls;Extended Properties=Excel 8.0', Sheet1$) 				
Informationsquellen
Da SQL Server-Verbindungsserver und verteilte Abfragen verwenden die OLE DB-Provider, die Richtlinien und Hinweise zum Verwenden von ADO mit Excel gelten hier. Klicken Sie für weitere Informationen auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
257819 Gewusst wie: Verwenden von ADO mit Excel-Daten von Visual Basic oder VBA
Weitere Informationen über SQL Server Management Objects finden Sie auf der folgenden Microsoft Developer Network (MSDN)-Website:Weitere Informationen zum Aktivieren der Option Ad Hoc Distributed Queries finden Sie auf der folgenden MSDN-Website:

Warnung: Dieser Artikel wurde automatisch übersetzt.

Eigenschaften

Artikelnummer: 306397 – Letzte Überarbeitung: 03/15/2015 04:07:00 – Revision: 7.0

  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • kbsqlsetup kbdatabase kbhowto kbjet kbmt KB306397 KbMtde
Feedback
y>ow.location.protocol) + "//c.microsoft.com/ms.js'><\/script>"); t=">