Al momento sei offline in attesa che la connessione Internet venga ristabilita

L'utilizzo di Excel con SQL Server server collegati e query distribuite

IMPORTANTE: il presente articolo è stato tradotto tramite un software di traduzione automatica di Microsoft ed eventualmente revisionato dalla community Microsoft tramite la tecnologia CTF (Community Translation Framework) o da un traduttore professionista. Microsoft offre articoli tradotti manualmente e altri tradotti automaticamente e rivisti dalla community con l’obiettivo di consentire all'utente di accedere a tutti gli articoli della Knowledge Base nella propria lingua. Tuttavia, un articolo tradotto automaticamente, anche se rivisto dalla community, non sempre è perfetto. Potrebbe contenere errori di vocabolario, di sintassi o di grammatica. Microsoft declina ogni responsabilità per imprecisioni, errori o danni causati da una traduzione sbagliata o dal relativo utilizzo da parte dei clienti. Microsoft aggiorna frequentemente il software e gli strumenti di traduzione automatica per continuare a migliorare la qualità della traduzione.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 306397
Sommario
Microsoft SQL Server supporta connessioni ad altre origini di dati OLE DB in un oggetto persistente o in base ad hoc. Connessione permanente è noto come server collegato; una connessione ad hoc viene effettuata a fini di una singola query è nota come una query distribuita.

Cartelle di lavoro Microsoft Excel sono un tipo di origine dati OLE DB che è possibile eseguire una query tramite SQL Server in questo modo. Questo articolo descrive la sintassi è necessaria configurare un'origine dati Excel come server collegato, nonché la sintassi che è necessaria utilizzare una query distribuita in tale query un'origine dati di Excel.
Informazioni

Query su un'origine dati di Excel in un server collegato

È possibile utilizzare SQL Server Management Studio o Enterprise Manager, stored procedure, SQL-DMO (Distributed Management Objects) o SMO (SQL Server Management Objects) per configurare un'origine dati Excel come server collegato SQL Server di un sistema. (SMO sono solo disponibili per Microsoft SQL Server 2005). In tutti questi casi, è necessario impostare sempre le seguenti quattro proprietà:
  • Il nome che si desidera utilizzare per il server collegato.
  • OLE DB Provider che deve essere utilizzato per la connessione.
  • L'origine dati o il nome completo di percorso e il file per la cartella di lavoro di Excel.
  • La stringa del provider, che identifica la destinazione come una cartella di lavoro di Excel. Per impostazione predefinita, il Provider Jet prevede un database di Access.
La procedura di sistema archiviata sp_addlinkedserver prevede inoltre la proprietà @srvproduct , che può essere qualsiasi valore di stringa.

Nota Se si utilizza SQL Server 2005, è necessario specificare un valore non vuoto per la proprietà del nome del prodotto in SQL Server Management Studio o per la proprietà @srvproduct nella stored procedure per un'origine dati di Excel.

Utilizzando SQL Server Management Studio o Enterprise Manager per configurare un'origine dati Excel come server collegato

SQL Server Management Studio (SQL Server 2005)
  1. In SQL Server Management Studio, espandere Oggetti Server in Esplora oggetti.
  2. Destro del mouse su Server collegatie quindi fare clic su nuovo server collegato.
  3. Nel riquadro di sinistra, selezionare la scheda Generale e quindi attenersi alla seguente procedura:
    1. Nella prima casella di testo, digitare un nome per il server collegato.
    2. Selezionare il <b00> </b00>altra origine dati opzione.
    3. Nell'elenco dei Provider , fare clic su Provider OLE DB Microsoft Jet 4.0.
    4. Nella casella nome prodotto digitare Excel per il nome dell'origine dati OLE DB.
    5. Nella casella origine dati , digitare il percorso e il nome completo del file di Excel.
    6. Digitare nella stringa del ProviderExcel 8.0 per una cartella di lavoro Excel 2002, Excel 2000 o Excel 97.
    7. Fare clic su OK per creare il nuovo server collegato.
Nota In SQL Server Management Studio, è possibile espandere il nuovo nome di server collegato per visualizzare l'elenco di oggetti che contiene il server.
Enterprise Manager (SQL Server 2000)
  1. In Enterprise Manager, fare clic per espandere la cartella protezione .
  2. Destro del mouse su Server collegatie quindi fare clic su nuovo server collegato.
  3. Nella scheda Generale , attenersi alla seguente procedura:
    1. Nella prima casella di testo, digitare un nome per il server collegato.
    2. Nella casella tipo di Server , fare clic su altra origine dati.
    3. Nell'elenco nome del Provider , fare clic su Provider OLE DB Microsoft Jet 4.0.
    4. Nella casella origine dati , digitare il percorso e il nome completo del file di Excel.
    5. Digitare nella stringa del ProviderExcel 8.0 per una cartella di lavoro Excel 2002, Excel 2000 o Excel 97.
    6. Fare clic su OK per creare il nuovo server collegato.
  4. Fare clic per espandere il nuovo nome di server collegato per espandere thelist di oggetti che contiene.
  5. Con il nuovo nome di server collegato, fare clic su tabelle. Si noti che i fogli di lavoro e intervalli denominati vengono visualizzati nel rightpane.

Utilizzo di una stored procedure per configurare un'origine dati Excel come un server collegato

Inoltre, è possibile utilizzare la procedura di sistema archiviata sp_addlinkedserver per configurare un'origine dati Excel come server collegato:
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				
Come accennato in precedenza, la stored procedure richiede un valore di stringa arbitrario, aggiuntive per l'argomento @srvproduct , che viene visualizzato come "Nome prodotto" nella configurazione di Enterprise Manager e SQL Server Management Studio. Non vengono utilizzati gli argomenti @location e @catalog .

Utilizzo di SQL-DMO per configurare un'origine dati Excel come un server collegato

SQL Distributed Management Objects consente di configurare un'origine dati Excel come un server collegato a livello di codice da Microsoft Visual Basic o un altro linguaggio di programmazione. È necessario fornire gli stessi quattro argomenti richiesti nella configurazione di Enterprise Manager e 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				

Utilizzo di SMO per configurare un'origine dati Excel come un server collegato

In SQL Server 2005, è possibile utilizzare SQL Server Management Objects (SMO) per configurare un'origine dati Excel come server collegato a livello di codice. A tale scopo, è possibile utilizzare Microsoft Visual Basic .NET o un altro linguaggio di programmazione. È necessario fornire gli argomenti richiesti nella configurazione di SQL Server Management Studio. Il modello di oggetti SMO estende e sostituisce il modello a oggetti Distributed Management Objects (SQL-DMO). Perché SMO è compatibile con SQL Server versione 7.0, SQL Server 2000 e SQL Server 2005, è inoltre possibile utilizzare SMO per la configurazione di 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 su un'origine dati di Excel in un server collegato

Dopo aver configurato un'origine dati Excel come server collegato, è possibile richiedere in modo semplice i dati da Query Analyzer o un'altra applicazione client. Ad esempio, per recuperare le righe di dati memorizzati nel Foglio1 del file di Excel, il codice seguente utilizza il server collegato è configurato utilizzando SQL-DMO:
SELECT * FROM XLTEST_DMO...Sheet1$				
È inoltre possibile utilizzare la funzione OPENQUERY per eseguire una query al server collegato di Excel in modo "passthrough" come segue:
SELECT * FROM OPENQUERY(XLTEST_DMO, 'SELECT * FROM [Sheet1$]')				
Il primo argomento che prevede OPENQUERY è il nome del server collegato. I delimitatori sono necessari per i nomi di foglio di lavoro, come illustrato in precedenza.

È inoltre possibile ottenere un elenco di tutte le tabelle sono disponibili nel server collegato di Excel utilizzando la seguente query:
EXECUTE SP_TABLES_EX 'XLTEST_DMO'				

Query su un'origine dati di Excel utilizzando query distribuite

È possibile utilizzare le query distribuite di SQL Server e la funzione OPENDATASOURCE o OPENROWSET per origini dati Excel di query che non si accede in base ad hoc.

Nota Se si utilizza SQL Server 2005, assicurarsi di aver attivato l'opzione di Query ad Hoc Distributed utilizzando Configurazione superficie di attacco di SQL Server, come illustrato nell'esempio riportato di seguito:
SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',   'Data Source=c:\book1.xls;Extended Properties=Excel 8.0')...Sheet1$				
Si noti che OPENROWSET utilizza una sintassi comune per il secondo argomento ("stringa del Provider"):
SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',    'Excel 8.0;Database=c:\book1.xls', Sheet1$)				
La sintassi che può prevedere uno sviluppatore di ActiveX Data Objects (ADO) da utilizzare per il secondo argomento ("stringa del Provider") con OPENROWSET:
SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',    'Data Source=c:\book1.xls;Extended Properties=Excel 8.0', Sheet1$)				
Questa sintassi genera il seguente errore dal Provider Jet:
Impossibile trovare ISAM installabile.
Nota Questo errore si verifica anche se si immette Origine dati invece di Origine dati. Ad esempio, non è corretto il seguente argomento:
SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'DataSource=c:\book1.xls;Extended Properties=Excel 8.0', Sheet1$) 				
Riferimenti
Poiché SQL Server server collegati e distributed query utilizzano il Provider OLE DB, gli orientamenti generali e valgono le avvertenze sull'utilizzo di ADO con Excel. Per ulteriori informazioni, fare clic sul seguente numero di articolo per visualizzare l'articolo della Microsoft Knowledge Base:
257819 L'utilizzo di ADO con dati di Excel da Visual Basic o VBA
Per ulteriori informazioni sugli oggetti di gestione di SQL Server, visitare il seguente sito Web Microsoft Developer Network (MSDN):Per ulteriori informazioni su come attivare l'opzione di Query ad Hoc Distributed , visitare il seguente sito Web MSDN:

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 306397 - Ultima revisione: 03/15/2015 05:56:00 - Revisione: 7.0

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

  • kbsqlsetup kbdatabase kbhowto kbjet kbmt KB306397 KbMtit
Feedback