Mit Microsoft anmelden
Melden Sie sich an, oder erstellen Sie ein Konto.
Hallo,
Wählen Sie ein anderes Konto aus.
Sie haben mehrere Konten.
Wählen Sie das Konto aus, mit dem Sie sich anmelden möchten.

Zusammenfassung

Microsoft SQL Server unterstützt Verbindungen zu anderen OLE DB-Datenquellen auf persistenter oder Ad-hoc-Basis. Die persistente Verbindung wird als verknüpfter Server bezeichnet. Eine Ad-hoc-Verbindung, die für eine einzelne Abfrage hergestellt wird, wird als verteilte Abfrage bezeichnet. Microsoft Excel-Arbeitsmappen sind ein Typ von OLE DB-Datenquelle, die Sie auf diese Weise über SQL Server abfragen können. In diesem Artikel wird die Syntax beschrieben, die zum Konfigurieren einer Excel-Datenquelle als verknüpfter Server erforderlich ist, sowie die Syntax, die erforderlich ist, um eine verteilte Abfrage zu verwenden, die eine Excel-Datenquelle abfragt.

Weitere Informationen

Abfragen einer Excel-Datenquelle auf einem verknüpften Server

Sie können SQL Server Management Studio oder Enterprise Manager, eine gespeicherte Systemprozedur, SQL-DMO (Verteilte Verwaltungsobjekte) oder SMO (SQL Server Management Objects) verwenden, um eine Excel-Datenquelle als verknüpften SQL Server zu konfigurieren. (SMO sind nur für Microsoft SQL Server 2005 verfügbar.) In allen diesen Fällen müssen Sie immer die folgenden vier Eigenschaften festlegen:

  • Der Name, den Sie für den verknüpften Server verwenden möchten.

  • Der OLE DB-Anbieter, der für die Verbindung verwendet werden soll.

  • Die Datenquelle oder der vollständige Pfad- und Dateiname für die Excel-Arbeitsmappe.

  • Die Anbieterzeichenfolge, die das Ziel als Excel-Arbeitsmappe identifiziert. Standardmäßig erwartet der Jet-Anbieter eine Access-Datenbank.

Die gespeicherte Systemprozedur sp_addlinkedserver erwartet auch die @srvproduct-Eigenschaft, die ein beliebiger Zeichenfolgenwert sein kann. Hinweis Wenn Sie SQL Server 2005 verwenden, müssen Sie einen Wert angeben, der für die Product name-Eigenschaft in SQL Server Management Studio oder für die @srvproduct-Eigenschaft in der gespeicherten Prozedur für eine Excel-Datenquelle nicht leer ist.

Verwenden von SQL Server Management Studio oder Enterprise Manager zum Konfigurieren einer Excel-Datenquelle als verknüpfter Server

SQL Server Management Studio (SQL Server 2005)
  1. Erweitern Sie in SQL Server Management Studio Serverobjekte im Objekt-Explorer.

  2. Klicken Sie mit der rechten Maustaste auf Verknüpfte Server, und klicken Sie dann auf Neuer verknüpfter Server.

  3. Wählen Sie im linken Bereich die Seite Allgemein aus, und führen Sie dann die folgenden Schritte aus:

    1. Geben Sie im ersten Textfeld einen beliebigen Namen für den verknüpften Server ein.

    2. Wählen Sie die Option Andere Datenquelle aus.

    3. Klicken Sie in der Liste Anbieter auf Microsoft Jet 4.0 OLE DB Provider.

    4. Geben Sie im Feld ProduktnameExcel für den Namen der OLE DB-Datenquelle ein.

    5. Geben Sie im Feld Datenquelle den vollständigen Pfad und Dateinamen der Excel-Datei ein.

    6. Geben Sie im Zeichenfolgenfeld AnbieterExcel 8.0 für eine Excel 2002-, Excel 2000- oder Excel 97-Arbeitsmappe ein.

    7. Klicken Sie auf OK, um den neuen verknüpften Server zu erstellen.

Hinweis In SQL Server Management Studio können Sie den neuen verknüpften Servernamen nicht erweitern, um die Liste der vom Server enthaltenen Objekte anzuzeigen.

Enterprise Manager (SQL Server 2000)
  1. Klicken Sie in Enterprise Manager auf , um den Ordner Sicherheit zu erweitern.

  2. Klicken Sie mit der rechten Maustaste auf Verknüpfte Server, und klicken Sie dann auf Neuer verknüpfter Server.

  3. Führen Sie auf der Registerkarte Allgemein die folgenden Schritte aus:

    1. Geben Sie im ersten Textfeld einen beliebigen Namen für den verknüpften Server ein.

    2. Klicken Sie im Feld Servertyp auf Andere Datenquelle.

    3. Klicken Sie in der Liste Anbietername auf Microsoft Jet 4.0 OLE DB Provider.

    4. Geben Sie im Feld Datenquelle den vollständigen Pfad und Dateinamen der Excel-Datei ein.

    5. Geben Sie im Zeichenfolgenfeld AnbieterExcel 8.0 für eine Excel 2002-, Excel 2000- oder Excel 97-Arbeitsmappe ein.

    6. Klicken Sie auf OK, um den neuen verknüpften Server zu erstellen.

  4. Klicken Sie hierauf, um den neuen verknüpften Servernamen zu erweitern, um die Liste der darin enthaltenen Objekte zu erweitern.

  5. Klicken Sie unter dem neuen verknüpften Servernamen auf Tabellen. Beachten Sie, dass Ihre Arbeitsblätter und benannten Bereiche im rechten Bereich angezeigt werden.

Verwenden einer gespeicherten Prozedur zum Konfigurieren einer Excel-Datenquelle als verknüpfter Server

Sie können auch die gespeicherte Systemprozedur verwenden, sp_addlinkedserver, um eine Excel-Datenquelle als verknüpften Server zu 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ätzlichen, beliebigen Zeichenfolgenwert für das argument @srvproduct, der in der Enterprise Manager- und SQL Server Management Studio-Konfiguration als "Produktname" angezeigt wird. Die @location- und @catalog-Argumente werden nicht verwendet.

Verwenden von SQL-DMO zum Konfigurieren einer Excel-Datenquelle als verknüpfter Server

Sie können SQL Distributed Management Objects verwenden, um eine Excel-Datenquelle als verknüpften Server programmgesteuert aus Microsoft Visual Basic oder einer anderen Programmiersprache zu konfigurieren. Sie müssen dieselben vier Argumente angeben, die in der Enterprise Manager- und SQL Server Management Studio-Konfiguration 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

Verwenden von SMO zum Konfigurieren einer Excel-Datenquelle als verknüpfter Server

In SQL Server 2005 können Sie SQL Server Management Objects (SMO) verwenden, um eine Excel-Datenquelle programmgesteuert als verknüpften Server zu konfigurieren. Dazu können Sie Microsoft Visual Basic .NET oder eine andere Programmiersprache verwenden. Sie müssen die Argumente angeben, die in der SQL Server Management Studio-Konfiguration erforderlich sind. Das SMO-Objektmodell erweitert und ersetzt das SQL-DMO-Objektmodell (Distributed Management Objects). Da SMO mit SQL Server Version 7.0, SQL Server 2000 und SQL Server 2005 kompatibel ist, können Sie SMO auch 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 verknüpften Server

Nachdem Sie eine Excel-Datenquelle als verknüpften Server konfiguriert haben, können Sie ihre Daten einfach von Query Analyzer oder einer anderen Clientanwendung abfragen. Um beispielsweise die Datenzeilen abzurufen, die in Sheet1 Ihrer Excel-Datei gespeichert sind, verwendet der folgende Code den verknüpften Server, den Sie mithilfe von SQL-DMO konfiguriert haben:

SELECT * FROM XLTEST_DMO...Sheet1$

Sie können OPENQUERY auch verwenden, um den mit Excel verknüpften Excel-Server wie folgt "passthrough" abzufragen:

SELECT * FROM OPENQUERY(XLTEST_DMO, 'SELECT * FROM [Sheet1$]')

Das erste Argument, das OPENQUERY erwartet, ist der verknüpfte Servername. Trennzeichen sind für Arbeitsblattnamen erforderlich, wie oben gezeigt. Sie können auch eine Liste aller Tabellen abrufen, die auf dem verknüpften Excel-Server verfügbar sind, indem Sie die folgende Abfrage verwenden:

EXECUTE SP_TABLES_EX 'XLTEST_DMO'

Abfragen einer Excel-Datenquelle mithilfe verteilter Abfragen

Sie können verteilte SQL Server-Abfragen und die OpenDATASOURCE- oder OPENROWSET-Funktion verwenden, um selten abgerufene Excel-Datenquellen ad hoc abzufragen. Hinweis Wenn Sie SQL Server 2005 verwenden, stellen Sie sicher, dass Sie die Option Ad hoc Distributed Queries aktiviert haben, indem Sie die SQL Server-Oberflächenkonfiguration verwenden, 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 eine ungewöhnliche Syntax für das zweite Argument ("Provider String") verwendet:

SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',    'Excel 8.0;Database=c:\book1.xls', Sheet1$)

Die Syntax, die ein ActiveX Data Objects (ADO)-Entwickler für das zweite Argument ("Provider String") mit OPENROWSET verwenden kann:

SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',    'Data Source=c:\book1.xls;Extended Properties=Excel 8.0', Sheet1$)

Diese Syntax löst den folgenden Fehler des Jet-Anbieters aus:

IsAM konnte nicht gefunden werden.

Hinweis Dieser Fehler tritt auch auf, wenn Sie DataSource anstelle von Data Sourceeingeben. 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-verknüpfte Server und verteilte Abfragen den OLE DB-Anbieter verwenden, gelten hier die allgemeinen Richtlinien und Warnungen zur Verwendung von ADO mit Excel. Weitere Informationen erhalten Sie, um den Artikel in der Microsoft Knowledge Base anzuzeigen:

257819 Verwenden von ADO mit Excel-Daten aus Visual Basic oder VBAWeitere Informationen zu SQL Server-Verwaltungsobjekten finden Sie auf der folgenden MSDN-Website (Microsoft Developer Network):

http://msdn2.microsoft.com/en-us/library/ms162169(ide).aspxWeitere Informationen zum Aktivieren der Ad-hoc-Option Verteilte Abfragen finden Sie auf der folgenden MSDN-Website:

http://msdn2.microsoft.com/en-us/library/ms189978(ide).aspx

Benötigen Sie weitere Hilfe?

Ihre Office-Fähigkeiten erweitern

Schulungen erkunden >

Neue Funktionen als Erster erhalten

Microsoft Insider beitreten >

War diese Information hilfreich?

Wie zufrieden sind Sie mit der Sprachqualität?
Was hat Ihre Erfahrung beeinflusst?

Vielen Dank für Ihr Feedback!

×