Provider OLE DB per Jet

Il provider Microsoft OLE DB per Jet implementa un'interfaccia OLE DB per i database di Microsoft Access e consente di eseguire query distribuite su tali database e sui fogli di lavoro di Excel in SQL Server 2005 e versioni successive.

Per scaricare i driver di Microsoft Office 2007, vedere 2007 Office System Driver: Data Connectivity Components.

SuggerimentoSuggerimento

Per eseguire la connessione a Microsoft Access, in SQL Server deve essere avviato il Motore di database di Microsoft Access. Diversamente dalla maggior parte degli altri provider, Microsoft Access non è un provider lightweight, ma rappresenta l'intero Motore di database di Microsoft Access. L'apertura di Microsoft Access nello spazio di processo di SQL Server può causare errori dovuti alla mancanza di risorse del disco, del processore o di memoria. I possibili errori includono "Impossibile inizializzare l-oggetto origine dei dati del provider OLE DB". Per evitare errori di memoria insufficiente, configurare il provider per l'apertura all'esterno dello spazio di processo della memoria di SQL Server.

Per eseguire Microsoft Access all'esterno dello spazio di memoria di SQL Server

  1. In Esplora oggetti di SQL Server Management Studio espandere il nome SQL Server, Oggetti server, Server collegati e Provider, fare clic con il pulsante destro del mouse su Microsoft.ACE.OLEDB.12.0 o Microsoft.Jet.OLEDB.4.0 relativo al provider per Microsoft Access, quindi fare clic su Proprietà.

  2. Nella casella Opzioni provider deselezionare Consenti in-process.

  3. Fare clic su OK.

Per creare un server collegato per l'accesso a un database di Access

  1. Eseguire sp_addlinkedserver per creare il server collegato, specificando Microsoft.Jet.OLEDB.4.0 per provider_name e il percorso completo del file di database con estensione mdb di Access per data_source. Il file di database con estensione mdb deve essere disponibile nel server. L'origine dei dati specificata in data_source viene valutata nel server, non nel client. Il percorso corrispondente deve essere pertanto un percorso valido nel server.

    Ad esempio, per creare il server collegato Nwind che opera sul database di Access Nwind.mdb disponibile nella directory c:\mydata directory, è necessario utilizzare la sintassi seguente:

    sp_addlinkedserver 'Nwind', 'Access', 'Microsoft.Jet.OLEDB.4.0', 
       'c:\mydata\Nwind.mdb'
    
  2. Per accedere a un database di Access non protetto, è necessario che per gli account di accesso di SQL Server venga definito un mapping dell'account di accesso per il nome utente Admin senza password.

    Nell'esempio seguente viene abilitato l'accesso per l'utente locale Joe al server collegato Nwind.

    sp_addlinkedsrvlogin 'Nwind', false, 'Joe', 'Admin', NULL
    

    Per accedere a un database Access protetto, configurare il Registro di sistema in REGEDIT per l'utilizzo del file di informazioni sul gruppo di lavoro utilizzato da Access. Tramite l'Editor del Registro di sistema, aggiungere il percorso completo di tale file alla voce di registro seguente:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\SystemDB

  3. Dopo avere configurato la voce del Registro di sistema, eseguire sp_addlinkedsrvlogin per creare i mapping tra gli account di accesso locali e gli account di accesso di Access:

    sp_addlinkedsrvlogin 'Nwind', false, 'Joe',
        'AccessUser', '034fhd99dl'
    
Nota sulla sicurezzaNota sulla sicurezza

In questo esempio non viene utilizzata l'autenticazione di Windows. Le password verranno trasmesse senza essere crittografate. Le password possono essere visibili nelle definizioni delle origini dei dati e negli script salvati su disco, nei backup e nei file di log. Non utilizzare mai una password di amministratore per questo tipo di connessioni. Per ulteriori informazioni sulla sicurezza specifiche al proprio ambiente, contattare l'amministratore di rete.

I database di Access non includono nomi di cataloghi e di schemi. Per fare riferimento alle tabelle di un server collegato basato su Access nelle query distribuite, è pertanto possibile utilizzare un nome composto da quattro parti nel formato linked_server**...**table_name.

Nell'esempio seguente vengono recuperate tutte le righe della tabella Employees del server collegato Nwind.

SELECT * 
FROM Nwind...Employees

Per creare un server collegato per un foglio di calcolo di Excel:

Il provider Microsoft OLE DB per Jet 4.0 consente di accedere ai fogli di calcolo di Microsoft Excel.

  • Per creare un server collegato che accede a fogli di calcolo di Excel, utilizzare la sintassi illustrata nell'esempio seguente:

    EXEC sp_addlinkedserver EXCEL,
         'Jet 4.0',
         'Microsoft.Jet.OLEDB.4.0',
         'c:\data\MySheet.xls', 
          NULL,
         'Excel 5.0;'
    
    GO
    
  • Per accedere ai dati di un foglio di calcolo di Excel, assegnare un nome a un intervallo di celle. Per accedere a un intervallo a cui è stato assegnato un nome, è possibile utilizzare il nome dell'intervallo come nome di tabella. Per accedere a un intervallo denominato SalesData che utilizza il server collegato creato nell'esempio precedente, è possibile utilizzare la query seguente:

    SELECT *
    FROM EXCEL...SalesData
    GO
    

Le righe aggiunte a un intervallo di celle denominato vengono inserite dopo l'ultima riga dell'intervallo. Se si desidera inserire la riga rA dopo l'intestazione della colonna, è pertanto necessario assegnare un nome alle celle dell'intestazione e utilizzare tale nome come nome di tabella. L'intervallo di celle si espande automaticamente man mano che vengono inserite righe.

Per creare un server collegato per un file di testo formattato

Il provider Microsoft OLE DB per Jet consente di accedere a file di testo ed eseguire query.

  • Per creare un server collegato e accedere direttamente a file di testo senza collegare i file come tabelle in un file di Access con estensione mdb, eseguire sp_addlinkedserver come illustrato nell'esempio seguente.

    Il provider è Microsoft.Jet.OLEDB.4.0 e la stringa del provider è 'Text'. L'origine dei dati corrisponde al nome e al percorso completo della directory in cui sono archiviati i file di testo. Nella stessa directory dei file di testo deve essere presente un file Schema.ini, che descrive la struttura del file di testo. Per ulteriori informazioni sulla creazione di un file Schema.ini, vedere la documentazione del motore di database Jet.

    --Create a linked server.
    EXEC sp_addlinkedserver txtsrv, 'Jet 4.0', 
       'Microsoft.Jet.OLEDB.4.0',
       'c:\data\distqry',
       NULL,
       'Text'
    GO
    
    --Set up login mappings.
    EXEC sp_addlinkedsrvlogin txtsrv, FALSE, NULL, Admin, NULL
    GO
    
    --List the tables in the linked server.
    EXEC sp_tables_ex txtsrv
    GO
    
    --Query one of the tables: file1#txt
    --by using a four-part name. 
    SELECT * 
    FROM txtsrv...[file1#txt]