Verwendung von Excel mit SQL Server verknüpften Servern und verteilten Abfragen

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 306397 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Microsoft SQL Server unterstützt Verbindungen zu anderen OLE DB-Datenquellen auf eine permanente oder einer ad-hoc-Basis. Ständige Verbindung ist als Verbindungsserver bezeichnet; eine ad-hoc-Verbindung, die aus Gründen der eine einzelne Abfrage vorgenommen wird als eine verteilte Abfrage bezeichnet.

Microsoft Excel-Arbeitsmappen sind eine Art von OLE DB-Datenquelle, die Sie über SQL Server auf diese Weise können. Dieser Artikel beschreibt die Syntax eine Excel-Datenquelle als Verbindungsserver konfiguriert wird, sowie die Syntax notwendig ist, einer verteilten Abfrage, Abfragen verwenden wird eine Excel-Datenquelle.

Weitere Informationen

Abfragen einer Excel-Datenquelle auf einem Verbindungsserver

Können Sie SQL Server Management Studio oder Enterprise Manager, ein System gespeicherten Prozedur, SQL-DMO (Distributed Management Objects) oder SMO (SQL Server Management Objects) so konfigurieren Sie eine Excel-Datenquelle als SQL Server-Verbindungsserver. (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 , Sie für den verknüpften Server verwenden möchten.
  • Der OLE DB -Anbieter , die für die Verbindung verwendet werden.
  • Die Datenquelle oder der vollständige Pfad und Dateiname für die Excel-Arbeitsmappe.
  • Die Providerzeichenfolge , der das Ziel als Excel-Arbeitsmappe identifiziert. Standardmäßig erwartet der Jet-Provider eine Access-Datenbank.
System gespeicherten Prozedur Sp_addlinkedserver erwartet auch @ Srvproduct Eigenschaft, die einen beliebigen Zeichenfolgenwert sein kann.

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

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

SQL Server Management Studio (SQLServer 2005)
  1. Erweitern Sie in SQL Server Management Studio Server-Objekte im Objekt-Explorer .
  2. Klicken Sie mit der rechten Maustaste auf Verbindungsserver , und klicken Sie dann auf Neuer Verbindungsserver .
  3. Wählen Sie im linken Bereich die Allgemeine Seite und gehen Sie folgendermaßen vor:
    1. Geben Sie im ersten Textfeld Namen für den Verbindungsserver.
    2. Die Option andere Datenquelle aus.
    3. Klicken Sie in der Liste Provider auf Microsoft Jet 4.0 OLE DB-Provider .
    4. Geben Sie in das Feld Produktname Excel für den Namen der ODBC-Datenquelle.
    5. Geben Sie im Feld Datenquelle den vollständigen Pfad und Namen der Excel-Datei.
    6. Geben Sie im Feld Provider-Zeichenfolge Excel 8.0 für eine Excel 2002, Excel 2000 oder Excel 97-Arbeitsmappe.
    7. Klicken Sie auf OK , um den neuen Verbindungsserver zu erstellen.
Hinweis: In SQL Server Management Studio können nicht Sie der neuen Verbindungsservername, die Liste der Objekte anzuzeigen, die der Server enthält erweitern.
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 Verbindungsserver , und klicken Sie dann auf Neuer Verbindungsserver .
  3. Gehen Sie auf der Registerkarte Allgemein folgendermaßen vor:
    1. Geben Sie im ersten Textfeld Namen für den Verbindungsserver.
    2. Klicken Sie im Server-Typ auf andere Datenquelle .
    3. Klicken Sie in der Liste Provider Name auf Microsoft Jet 4.0 OLE DB-Provider .
    4. Geben Sie in das Feld Datenquelle den vollständigen Pfad und Namen des Excel-Datei.
    5. Geben Sie im Feld Provider-Zeichenfolge Excel 8.0 für eine Excel 2002, Excel 2000 oder Excel 97-Arbeitsmappe.
    6. Klicken Sie auf OK , um den neuen Verbindungsserver zu erstellen.
  4. Klicken Sie auf, um den neuen Verbindungsservernamen um die Liste der Objekte zu erweitern, die es enthält zu erweitern.
  5. Klicken Sie unter dem neuen Verbindungsservernamen auf Tabellen . Beachten Sie, dass Ihre Arbeitsblätter und benannte Bereiche im rechten Fensterbereich angezeigt werden.

Verwenden eine gespeicherte Prozedur zum Konfigurieren von einer Excel-Datenquelle als Verbindungsserver

Sie können auch System gespeicherten Prozedur Sp_addlinkedserver verwenden, um eine Excel-Datenquelle als Verbindungsserver konfiguriert:
DECLARE @RC int
DECLARE @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 values
SET @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 oben bereits erwähnt, benötigt diese gespeicherte Prozedur einen Wert für zusätzliche, beliebige Zeichenfolge für die @ Srvproduct Argument, das als "Produktname" in Enterprise Manager und SQL Server Management Studio-Konfiguration angezeigt wird. Die @ Position und @ Katalog Argumente werden nicht verwendet.

Verwendung von SQL­DMO eine Excel-Datenquelle als Verbindungsserver konfigurieren

SQL Distributed Management Objects können Sie um eine Excel-Datenquelle als Verbindungsserver programmgesteuert aus Microsoft Visual Basic oder einer anderen Programmiersprache zu konfigurieren. Sie müssen die gleichen 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.Close
End Sub
				

Verwendung von SMO zum eine Excel-Datenquelle als Verbindungsserver konfigurieren

In SQL Server 2005 können Sie SQL Server Management Objects (SMO), um eine Excel-Datenquelle programmgesteuert als Verbindungsserver zu konfigurieren. Zu diesem Zweck können Sie Microsoft Visual Basic .NET oder einer anderen Programmiersprache verwenden. Sie müssen die Argumente angeben, die in der SQL Server Management Studio-Konfiguration erforderlich sind. Das SMO-Objektmodell erweitert und das Objektmodell Distributed Management Objects (SQL-DMO) ersetzt. Because SMO is compatible with SQL Server version 7.0, SQL Server 2000, and SQL Server 2005, you can also use SMO for configuration of SQL Server 2000.
Imports Microsoft.SqlServer.Management.Smo
Imports Microsoft.SqlServer.Management.Common

Public 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 Sub
End Class

Abfragen einer Excel-Datenquelle auf einem Verbindungsserver

Nachdem Sie eine Excel-Datenquelle als Verbindungsserver konfiguriert haben, können Sie problemlos seine Daten aus Query Analyzer oder einer anderen Clientanwendung Abfragen. Der folgende Code verwendet z. B. um die Zeilen der Daten abzurufen, die in Tabelle1 der Excel-Datei gespeichert sind, den verknüpften Server, die Sie mithilfe von SQL-DMO konfiguriert:
SELECT * FROM XLTEST_DMO...Sheet1$
				
Sie können auch OPENQUERY verwenden, um den verknüpften Excel-Server in einer Weise "Passthrough" wie folgt Abfragen:
SELECT * FROM OPENQUERY(XLTEST_DMO, 'SELECT * FROM [Sheet1$]')
				
das erste Argument, die OPENQUERY erwartet ist der Name des Verbindungsservers. Trennzeichen sind für das Arbeitsblattnamen erforderlich, wie oben gezeigt.

Sie können auch eine Liste aller Tabellen, die auf dem Verbindungsserver Excel verfügbar, sind mithilfe der folgenden Abfrage abrufen:
EXECUTE SP_TABLES_EX 'XLTEST_DMO'
				

Abfragen einer Excel-Datenquelle mithilfe von verteilte Abfragen

Sie können verteilte SQL Server-Abfragen und die OPENDATASOURCE oder OPENROWSET-Funktion zu Abfrage, die selten zugegriffen Excel-Datenquellen auf einer ad-hoc-Basis verwenden.

Hinweis: Wenn Sie SQL Server 2005 verwenden, stellen Sie sicher, dass Sie die Ad-hoc-verteilte Abfragen Option mithilfe von SQL Server-Oberflächenkonfiguration, wie im folgenden Beispiel aktiviert haben:
SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
   'Data Source=c:\book1.xls;Extended Properties=Excel 8.0')...Sheet1$
				
Hinweis, dass OPENROWSET eine ungewöhnlich Syntax für das zweite Argument ("Provider Zeichenfolge") 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) erwarten kann, für das zweite Argument ("Provider Zeichenfolge") mit OPENROWSET verwenden:
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 von der Jet-Provider:
Das installierbare ISAM wurde nicht gefunden.
Hinweis: Dieser Fehler tritt auch auf, wenn Sie die DataSource anstelle der Datenquelle eingeben. 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 Servern verknüpften und verteilte Abfragen verwenden den OLE DB-Provider, die allgemeinen Richtlinien und Vorsichtsmaßnahmen zum Verwenden von ADO mit Excel gelten hier. Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
257819Verwendung von ADO mit Excel-Daten aus Visual Basic oder VBA
Weitere Informationen zu SQL Server Management Objects der folgenden Microsoft Developer Network (MSDN)-Website:
http://msdn2.microsoft.com/en-us/library/ms162169(ide).aspx
Weitere Informationen dazu, wie die Ad-hoc-verteilte Abfragen -Option aktivieren, finden Sie auf folgenden MSDN-Website:
http://msdn2.microsoft.com/en-us/library/ms189978(ide).aspx

Eigenschaften

Artikel-ID: 306397 - Geändert am: Freitag, 2. November 2007 - Version: 6.4
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Personal Edition
  • Microsoft SQL Server 2000 Workgroup Edition
  • Microsoft SQL Server 7.0 Standard Edition
Keywords: 
kbmt kbdatabase kbhowto kbjet KB306397 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 306397
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.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com