Excel gebruiken met gekoppelde SQL Server-servers en gedistribueerde query's

Samenvatting

Microsoft SQL Server ondersteunt verbindingen met andere OLE DB-gegevensbronnen op een permanente of een ad-hocbasis. De permanente verbinding wordt een gekoppelde server genoemd. een AD-hocverbinding die wordt gemaakt omwille van een enkele query wordt een gedistribueerde query genoemd. Microsoft Excel-werkmappen zijn één type OLE DB-gegevensbron die u op deze manier via SQL Server opvragen. Dit artikel beschrijft de syntaxis die nodig is voor het configureren van een Excel-gegevensbron als een gekoppelde server, evenals de syntaxis die nodig is voor het gebruik van een gedistribueerde query die een Excel-gegevensbron opvragen.

Meer informatie

Query's uitvoeren op een Excel-gegevensbron op een gekoppelde server

U SQL Server Management Studio of Enterprise Manager, een systeem opgeslagen procedure, SQL-DMO (Distributed Management Objects) of SMO (SQL Server Management Objects) gebruiken om een Excel-gegevensbron te configureren als een gekoppelde SQL Server-server. (SMO is alleen beschikbaar voor Microsoft SQL Server 2005.) In al deze gevallen moet u altijd de volgende vier eigenschappen instellen:

  • De naam die u wilt gebruiken voor de gekoppelde server.

  • De OLE DB- provider die voor de verbinding moet worden gebruikt.

  • De gegevensbron of het volledige pad en de bestandsnaam voor de Excel-werkmap.

  • De provider-tekenreeks, die het doel als een Excel-werkmap identificeert. Standaard verwacht de Jet-provider een Access-database.

De opgeslagen procedure van het systeem sp_addlinkedserver verwacht ook de @srvproduct eigenschap, die een willekeurige tekenreekswaarde kan zijn. Opmerking Als u SQL Server 2005 gebruikt, moet u een waarde opgeven die niet leeg is voor de eigenschap product naam in SQL Server Management Studio of voor de eigenschap @srvproduct in de opgeslagen procedure voor een Excel-gegevensbron.

SQL Server Management Studio of Enterprise Manager gebruiken om een Excel-gegevensbron te configureren als gekoppelde server

SQL Server Management Studio (SQL Server 2005)
  1. Vouw in SQL Server Management Studio serverobjecten uit in object Verkenner.

  2. Klik met de rechtermuisknop op gekoppelde serversen klik vervolgens op nieuwe gekoppelde server.

  3. Selecteer de pagina Algemeen in het linkerdeelvenster en voer de volgende stappen uit:

    1. Typ in het eerste tekstvak een willekeurige naam voor de gekoppelde server.

    2. Selecteer de optie andere gegevensbron .

    3. Klik in de lijst provider op microsoft Jet 4,0 OLE DB provider.

    4. Typ Excel in het vak product naam voor de naam van de OLE DB-gegevensbron.

    5. Typ in het vak gegevensbron het volledige pad en de bestandsnaam van het Excel-bestand.

    6. Typ in het vak provider tekenreeksExcel 8,0 voor een werkmap van excel 2002, excel 2000 of Excel 97.

    7. Klik op OK om de nieuwe gekoppelde server te maken.

Opmerking In SQL Server Management Studio u de naam van de nieuwe gekoppelde server niet uitvouwen om de lijst met objecten weer te geven die de server bevat.

Enterprise Manager (SQL Server 2000)
  1. Klik in Enterprise Manager op om de map Security uit te vouwen.

  2. Klik met de rechtermuisknop op gekoppelde serversen klik vervolgens op nieuwe gekoppelde server.

  3. Voer de volgende stappen uit op het tabblad Algemeen :

    1. Typ in het eerste tekstvak een willekeurige naam voor de gekoppelde server.

    2. Klik in het vak server type op andere gegevensbron.

    3. Klik in de lijst providernaam op microsoft Jet 4,0 OLE DB provider.

    4. Typ in het vak gegevensbron het volledige pad en de bestandsnaam van het Excel-bestand.

    5. Typ in het vak provider tekenreeksExcel 8,0 voor een werkmap van excel 2002, excel 2000 of Excel 97.

    6. Klik op OK om de nieuwe gekoppelde server te maken.

  4. Klik hierop om de naam van de nieuwe gekoppelde server uit te vouwen om de lijst met objecten die deze bevat uit te vouwen.

  5. Klik onder de naam van de nieuwe gekoppelde server op tabellen. U ziet dat uw werkbladen en benoemde bereiken in het rechterdeelvenster worden weergegeven.

Een opgeslagen procedure gebruiken om een Excel-gegevensbron te configureren als gekoppelde server

U ook de opgeslagen procedure van het systeem sp_addlinkedserver gebruiken om een Excel-gegevensbron te configureren als een gekoppelde server:

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

Zoals hierboven vermeld, vereist deze opgeslagen procedure een extra, willekeurige tekenreekswaarde voor het argument @srvproduct , dat wordt weergegeven als ' product naam ' in de configuratie van Enterprise Manager en SQL Server Management Studio. De argumenten @location en @catalog worden niet gebruikt.

SQL-DMO gebruiken om een Excel-gegevensbron te configureren als gekoppelde server

U SQL Distributed Management-objecten gebruiken om een Excel-gegevensbron als een gekoppelde server programmatisch te configureren vanuit Microsoft Visual Basic of een andere programmeertaal. U moet dezelfde vier argumenten leveren die vereist zijn in de configuratie van Enterprise Manager en SQL Server Management Studio.

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

SMO gebruiken om een Excel-gegevensbron te configureren als gekoppelde server

In SQL Server 2005 u SQL Server Management Objects (SMO) gebruiken om een Excel-gegevensbron als een gekoppelde server programmatisch te configureren. Hiervoor u Microsoft Visual Basic .NET of een andere programmeertaal gebruiken. U moet de argumenten die vereist zijn in de configuratie van SQL Server Management Studio leveren. Het SMO-object model breidt uit en vervangt het object model Distributed Management Objects (SQL-DMO). Omdat SMO compatibel is met SQL Server versie 7,0, SQL Server 2000 en SQL Server 2005, u ook SMO gebruiken voor de configuratie van SQL Server 2000.

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

Query's uitvoeren op een Excel-gegevensbron op een gekoppelde server

Nadat u een Excel-gegevensbron hebt geconfigureerd als een gekoppelde server, u de gegevens van Query Analyzer of een andere clienttoepassing eenvoudig opvragen. Als u bijvoorbeeld de rijen met gegevens wilt ophalen die zijn opgeslagen in Sheet1 van uw Excel-bestand, gebruikt de volgende code de gekoppelde server die u hebt geconfigureerd met behulp van SQL-DMO:

SELECT * FROM XLTEST_DMO...Sheet1$

U open query ook gebruiken om een query uit te voeren op de gekoppelde Excel-server in een ' passthrough-manier ', als volgt:

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

Het eerste argument dat OPENQUERY verwacht, is de naam van de gekoppelde server. Scheidingstekens zijn vereist voor werkbladnamen, zoals hierboven weergegeven. U ook een lijst opvragen van alle tabellen die beschikbaar zijn op de gekoppelde Excel-Server met behulp van de volgende query:

EXECUTE SP_TABLES_EX 'XLTEST_DMO'

Query's uitvoeren op een Excel-gegevensbron met behulp van gedistribueerde query's

U SQL Server gedistribueerde query's en de functie OPENDATASOURCE of OPENROWSET gebruiken voor het opvragen van zelden gebruikte Excel-gegevensbronnen op ad-hocbasis. Opmerking Als u van SQL Server 2005 gebruikmaakt, zorg ervoor dat u hebt ingeschakeld de ad hoc gedistribueerde query's optie met behulp van SQL Server Surface Area Configuration, zoals in het volgende voorbeeld:

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

Houd er rekening mee dat OPENROWSET een ongewone syntaxis voor het tweede argument (' provider tekenreeks ') gebruikt:

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

De syntaxis die een ActiveX Data Objects (ADO) Developer kan verwachten te gebruiken voor de tweede ("provider string")-argument met OPENROWSET:

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

Deze syntaxis genereert de volgende fout van de Jet-provider:

Kan installeerbare ISAM niet vinden.

Opmerking Deze fout treedt ook op als u Data source in plaats vangegevensbroninvoert. Het volgende argument is bijvoorbeeld onjuist:

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

Verwijzingen

Omdat SQL server gekoppelde servers en gedistribueerde query's de OLE DB-provider gebruiken, zijn de algemene richtlijnen en waarschuwingen over het gebruik van ADO met Excel hier van toepassing. Klik voor meer informatie op het volgende artikelnummer, zodat het artikel in de Microsoft Knowledge Base wordt weergegeven:

257819 het gebruik van ADO met Excel-gegevens uit Visual Basic of VBAGa naar de volgende MSDN-website (Microsoft Developer Network) voor meer informatie over SQL Server Management Objects:

http://msdn2.microsoft.com/en-us/library/ms162169(ide).aspxGa naar de volgende MSDN-website voor meer informatie over het inschakelen van de ad hoc gedistribueerde query's optie:

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

Meer hulp nodig?

Uw vaardigheden uitbreiden
Training verkennen
Als eerste nieuwe functies krijgen
Deelnemen aan Microsoft insiders

Was deze informatie nuttig?

Bedankt voor uw feedback.

Hartelijk dank voor uw feedback! Het lijkt ons een goed idee om u in contact te brengen met een van onze Office-ondersteuningsagenten.

×