Provider Oracle per OLE DB
Data aggiornamento: 14 aprile 2006
Il provider Oracle per OLE DB (8.1.7.3.0) consente di eseguire query distribuite sui dati nei database Oracle. Il tipo di supporto disponibile per tale provider è il seguente:
Oracle a 32 bit |
Solo out-of-process |
Oracle a 64 bit |
Nessuno |
Per creare un server collegato per l'accesso a un'istanza del database Oracle
Verificare che il software client Oracle nel server che esegue Microsoft SQL Server corrisponda al livello richiesto dal provider. Il provider Oracle per OLE DB (8.1.7.3.0) richiede Oracle Client 8.1.7.0.
Nel server che esegue SQL Server creare un nome alias che punta a un'istanza del database Oracle. Per ulteriori informazioni, vedere la documentazione Oracle.
Eseguire sp_addlinkedserver per creare il server collegato, specificando OraOLEDB.Oracle come provider_name e l'alias per il database Oracle come data_source.
Nell'esempio seguente si presuppone che l'alias sia stato definito come
DQORA8
:exec sp_addlinkedserver @server='OrclDB', @srvproduct='Oracle', @provider='OraOLEDB.Oracle', @datasrc='DQORA8'
Nota sulla protezione: In questo esempio non viene utilizzata l'autenticazione di Windows. Le password vengono trasmesse senza essere crittografate ed è possibile che siano 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 connessione. Per ulteriori informazioni sulla protezione specifiche per l'ambiente utilizzato, consultare l'amministratore di rete. Utilizzare sp_addlinkedsrvlogin per creare mapping tra gli account di accesso di SQL Server e gli account di accesso Oracle.
Nell'esempio seguente viene eseguito il mapping tra l'account di accesso
Joe
di SQL Server e il server collegato definito nel passaggio 3 utilizzando l'account di accesso e la password Oracle, ovveroOrclUsr
eOrclPwd
:sp_addlinkedsrvlogin @rmtsrvname = 'OrclDB', @useself = 'false', @locallogin = 'Joe', @rmtuser = 'OrclUsr', @rmtpassword = 'OrclPwd'
Per fare riferimento alle tabelle di un server collegato Oracle, è necessario rispettare le regole seguenti:
Se i nomi della tabella e delle colonne sono stati creati in Oracle senza identificatori tra virgolette, specificare tutti i nomi in lettere maiuscole.
Se i nomi della tabella e delle colonne sono stati creati in Oracle con identificatori tra virgolette, specificare i nomi con la stessa combinazione di maiuscole e minuscole con cui sono stati definiti in Oracle.
Nelle istruzioni INSERT è necessario specificare valori per tutte le colonne di una tabella, anche per colonne NULL o con valori predefiniti.
Questo provider non supporta il passaggio diretto di valori letterali datetime come argomenti nel formato seguente:
EXEC 'string' '<datetime-literal>' AT <oraclelinkedserver>
Ad esempio, l'utilizzo seguente del valore letterale datetime
'14-sep-94'
non è supportato:EXEC('INSERT INTO DYNORCL.SALES(ID, ORD_NO, ORD_DATE, QTY) VALUES (?, ?, ?, ?)', '6380', '6871', '14-sep-94', 5) AT OrclDB
In alternativa, è possibile creare una variabile datetime, assegnarle il valore letterale e chiamare la funzione
EXEC
con la variabile come argomento:DECLARE @v1 datetime SET @v1 = CONVERT(datetime,'14-sep-94') EXEC('INSERT INTO DYNORCL.SALES(ID, ORD_NO, ORD_DATE, QTY) VALUES (?, ?, ?, ?)', '6380', '6871', @v1, 5) AT OrclDB
Restrizioni
SQL Server non supporta l'utilizzo della funzione di aggregazione AVG sulle tabelle Oracle, in quanto il provider Oracle restituisce il tipo OLE DB DBTYPE_VARNUMERIC che non è supportato da SQL Server. Il codice seguente, ad esempio, restituisce un errore:
SELECT AVG(QTY)
FROM ORA..RPUBS.SALES
Per evitare l'errore, utilizzare OPENQUERY
Ad esempio:
SELECT *
FROM OPENQUERY(ORA,
'SELECT CAST (AVG(QTY) AS numeric)
FROM ORA..RPUBS.SALES')
Voci del Registro di sistema
Per consentire l'utilizzo del provider OLE DB per Oracle con il software client Oracle, è necessario modificare il Registro di sistema del client eseguendo un file del Registro di sistema dalla riga di comando. Non è possibile eseguire contemporaneamente più istanze del software client. Questi file sono elencati nella tabella seguente e si trovano nella stessa struttura di directory che contiene l'installazione di Microsoft Data Access Components (MDAC), in genere C:\Program Files\Common Files\System Files\OLE DB.
Client Oracle | Windows NT o 9x | Windows 2000 |
---|---|---|
7.x |
mtxoci7x_winnt.reg |
mtxoci7x_win2k.reg |
8.0 |
mtxoci80_winnt.reg |
mtxoci80_win2k.reg |
8.1 |
mtxoci81_winnt.reg |
mtxoci81_win2k.reg |
Vedere anche
Concetti
Provider OLE DB testati con SQL Server
Query distribuite
Altre risorse
sp_addlinkedserver (Transact-SQL)
Guida in linea e informazioni
Cronologia modifiche
Versione | Cronologia |
---|---|
14 aprile 2006 |
|
5 dicembre 2005 |
|