DetailPage-MSS-KB

Microsoft Knowledge Base

Identificativo articolo: 280106 - Ultima modifica: venerdì 23 dicembre 2005 - Revisione: 7.7

 

In questa pagina

Sommario

In questo articolo viene descritto come impostare un server collegato da un computer che esegue Microsoft SQL Server a un database Oracle e fornisce inoltre procedure di risoluzione dei problemi di base per errori comuni che possono verificarsi quando si imposta un server collegato a Oracle.

Procedura per configurare un server collegato a Oracle

  1. È necessario installare il software client Oracle nel computer che esegue SQL Server in cui il server collegato è impostato.
  2. Installare il driver desiderato nel computer in cui è in esecuzione SQL Server. Microsoft supporta solo Provider Microsoft OLE DB per Oracle e Driver Microsoft ODBC per Oracle. Se si utilizza un provider di terze parti o un driver di terze per connettersi a Oracle, è necessario contattare il fornitore rispettivo per eventuali problemi che possono verificarsi utilizzando i provider o driver.
  3. Se si utilizza Provider Microsoft OLE DB per Oracle e Driver Microsoft ODBC per Oracle, considerare quanto segue:
    • Sia il provider OLE DB che il driver ODBC forniti con Microsoft Data Access Components (MDAC) richiedono delle SQL * NET 2.3. x o versione successiva. È necessario installare il Oracle 7.3. x o versione successiva, sul computer client. Il computer client è il computer che esegue SQL Server.
    • Assicurarsi di avere MDAC 2.5 o versione successiva, installato nel computer che esegue SQL Server. Con MDAC 2.1 o con una versione precedente, è Impossibile connettersi ai database utilizzano Oracle 8. x o versione successiva.
    • Per consentire a MDAC 2.5 o versioni successive, di lavorare con Oracle software client, il Registro di sistema deve essere modificato sul computer client che esegue SQL Server come indicato nella tabella seguente.
                 Microsoft Windows NT,
      Oracle     Microsoft Windows 95,
      Client     Windows 98, and Windows 98 SE    Microsoft Windows 2000 
      --------------------------------------------------------------------------
      
      7.x        [HKEY_LOCAL_MACHINE\SOFTWARE     [HKEY_LOCAL_MACHINE\SOFTWARE  
                 \Microsoft\TransactionServer     Microsoft\MSDTC\MTxOCI]
                 \Local Computer\My Computer]     "OracleXaLib"="xa73.dll"
                 "OracleXaLib"="xa73.dll"         "OracleSqlLib"="SQLLib18.dll"
                 "OracleSqlLib"="SQLLib18.dll"    "OracleOciLib"="ociw32.dll"
                 "OracleOciLib"="ociw32.dll"   
      
      8.0        [HKEY_LOCAL_MACHINE\SOFTWARE     [HKEY_LOCAL_MACHINE\SOFTWARE
                 \Microsoft\Transaction Server    \Microsoft\MSDTC\MTxOCI]
                 \Local Computer\My Computer]     "OracleXaLib"="xa80.dll"
                 "OracleXaLib"="xa80.dll"         "OracleSqlLib"="sqllib80.dll" 
                 "OracleSqlLib"="sqllib80.dll"    "OracleOciLib"="oci.dll"
                 "OracleOciLib"="oci.dll" 
      
      8.1        [HKEY_LOCAL_MACHINE\SOFTWARE     [HKEY_LOCAL_MACHINE\SOFTWARE
                 \Microsoft\Transaction Server    \Microsoft\MSDTC\MTxOCI]
                 \Local Computer\My Computer]     "OracleXaLib"="oraclient8.dll" 
                 "OracleXaLib"="oraclient8.dll"   "OracleSqlLib"="orasql8.dll"  
                 "OracleSqlLib"="orasql8.dll"     "OracleOciLib"="oci.dll"
                 "OracleOciLib"="oci.dll"
  4. Riavviare il computer che esegue SQL Server dopo aver installato il software client Oracle.
  5. On the computer that is running SQL Server, set up a linked server by using the following script.
    -- Adding linked server (from SQL Server Books Online):
    /* sp_addlinkedserver [@server =] 'server' 
        [, [@srvproduct =] 'product_name']
        [, [@provider =] 'provider_name'] 
        [, [@datasrc =] 'data_source'] 
        [, [@location =] 'location'] [, [@provstr =] 'provider_string'] 
        [, [@catalog =] 'catalog']
    */ 
    
    EXEC sp_addlinkedserver   'Ora817Link',  'Oracle',  'MSDAORA',  'oracle817'
    
    -- Adding linked server login:
    /* sp_addlinkedsrvlogin [@rmtsrvname =] 'rmtsrvname'
        [,[@useself =] 'useself']
        [,[@locallogin =] 'locallogin']
        [,[@rmtuser =] 'rmtuser']
        [,[@rmtpassword =] 'rmtpassword']
    */ 
    
    EXEC sp_addlinkedsrvlogin 'Ora817Link', 'FALSE',NULL, 'scott', 'tiger'
    
    -- Help on the linked server:
    EXEC sp_linkedservers
    EXEC sp_helpserver
    select * from sysservers
Nota Se si utilizza il Driver Microsoft ODBC per Oracle, è possibile utilizzare il @ datasrc parametro per specificare un nome DSN. Per un DSN - meno connessione, la stringa del provider viene fornita tramite il @ provstr parametro. Provider Microsoft OLE DB per Oracle, utilizzare l'alias del server Oracle configurato nel file del @ datasrc TNSNames.Ora parametro. Per ulteriori informazioni, vedere l'argomento di "sp_addlinkedserver" nella documentazione in linea di SQL Server.

Messaggi di errore comuni e come risolverli

importante Questa sezione, metodo o l'attività sono contenute procedure viene illustrato come modificare il Registro di sistema. Tuttavia, possono causare seri problemi se si modifica il Registro di sistema in modo errato. Pertanto, assicurarsi che questa procedura con attenzione. Per maggiore protezione, è eseguire il backup del Registro di sistema prima di modificarlo. È quindi possibile ripristinare il Registro di sistema se si verifica un problema. Per ulteriori informazioni su come eseguire il backup e ripristino del Registro di sistema, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
322756  (http://support.microsoft.com/kb/322756/ ) Come eseguire il backup e il ripristino del Registro di sistema in Windows


È possibile utilizzare uno dei seguenti due metodi per recuperare informazioni estese su ogni errore che si verifica quando si esegue una query distribuita.
  • metodo 1
    In Query Analyzer, eseguire il seguente codice per attivare il flag di traccia 7300.
    DBCC Traceon(7300)
  • metodo 2
    Consente di acquisire l'evento "Errori di OLE DB" in cui si trova la categoria di eventi "Errori e avvisi" in SQL Profiler. Il formato del messaggio errore è il seguente:
    Interface::Method non riuscita con codice di errore esadecimale.
    È possibile cercare il codice esadecimale-errore nel file Oledberr.h incluso con Software Development Kit (SDK) di MDAC.
Di seguito è riportato un elenco di dieci messaggi di errore comuni che possono verificarsi, insieme con informazioni su come risolvere il messaggio di errore.

Nota Se si utilizza SQL Server 2005, questi messaggi di errore potrebbero essere leggermente diversi. Tuttavia, gli ID di errore di questi messaggi di errore sono come tali in SQL Server 2000. Di conseguenza, è possibile identificare tali dall'ID di errore.

Nota Per problemi correlati alle prestazioni, cercare l'argomento "Ottimizzazione delle query distribuite" documentazione in linea di SQL Server.
  • messaggio 1
    Errore 7399: Provider OLE DB '% 1!' errore. % 1!
    Consente di attivare il flag di traccia 7300 oppure utilizzare SQL Profiler per acquisire l'evento di "Errore OLEDB" per recuperare le informazioni di errore estese di OLE DB.
  • messaggio 2a
    "ORA-12154: TNS: Impossibile risolvere il servizio nome"
    messaggio 2b
    "Impossibile trovare i componenti client e di rete di Oracle (TM). Questi componenti vengono forniti da Oracle Corporation e fanno parte di Oracle versione 7.3.3 (o superiore) installazione del software client "
    Per ulteriori informazioni su come risolvere i problemi di connettività Oracle, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
    259959  (http://support.microsoft.com/kb/259959/ ) Tecniche di debug di problemi di connettività a un server Oracle utilizzando il driver ODBC e il provider OLE DB
  • messaggio 3
    Errore 7302: Impossibile creare un'istanza di provider OLE DB 'MSDAORA'
    Assicurarsi che il file MSDAORA.dll è registrato correttamente. (Il file MSDAORA.dll è il provider Microsoft OLE DB per Oracle file). Consente di utilizzare RegSvr32.exe per registrare il Provider Microsoft OLE DB per Oracle. Se la registrazione non riesce, reinstallare Data Access Components (MDAC). Per ulteriori informazioni su MDAC, visitare il seguente sito Web MSDN (informazioni in lingua inglese):
    http://msdn.microsoft.com/data/Default.aspx (http://msdn.microsoft.com/data/Default.aspx)
    Nota Se si utilizza un provider Oracle di terze parti, Impossibile eseguire il provider Oracle all'esterno di un processo di SQL Server, attivare l'esecuzione in-process modificando le opzioni provider. Per modificare le opzioni di provider, utilizzare uno dei seguenti metodi.
    • metodo 1
      Individuare la seguente chiave di registro. Quindi, modificare il valore della voce AllowInProcess (DWORD) su 1. Questa chiave del Registro di sistema si trova sotto il corrispondente nome provider:
      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\ProviderName
    • metodo 2
      Consente di impostare l'opzione Consenti InProcess direttamente tramite SQL Server Enterprise Manager quando si aggiunge un nuovo server collegato. Fare clic su Opzioni Provider e quindi per selezionare la casella di controllo Consenti InProcess .
  • messaggio 4
    Errore 7303: Impossibile inizializzare l'oggetto di origine dati del provider OLE DB 'MSDAORA'. [Provider OLE DB ha restituito il messaggio: ORA-01017: nome utente/password non valida; accesso negato] Traccia di errore OLE DB [IDBInitialize:: Initialize 'MSDAORA' del provider OLE DB restituito 0x80040e4d].
    Questo messaggio di errore indica che il server collegato non dispone di mapping di accesso corretto. È possibile eseguire la procedura di sp_helplinkedsrvlogin memorizzate per impostare correttamente le informazioni di accesso. Inoltre, verificare di aver specificato i parametri corretti per la configurazione di server collegato.
  • messaggio di 5
    Errore 7306: Impossibile aprire la tabella '% 1!' dal provider OLE DB 'MSDAORA'. La tabella specificata non esiste. [Provider OLE DB ha restituito il messaggio: tabella non esiste.][Provider OLE DB ha restituito il messaggio: ORA-00942: tabella o visualizzazione non esiste] Traccia di errore OLE DB [IOpenRowset:: OpenRowset 'MSDAORA' del provider OLE DB restituito 0x80040e37: la tabella specificata non esiste.].
    Errore 7312: Utilizzo non valido di schema e/o catalogo per provider OLE DB '% 1!'. È stato specificato un nome composto da quattro parti, ma il provider non espone le interfacce necessarie per utilizzare un catalogo e/o schema.
    Errore 7313: Non valido dello schema o catalogo specificato per il provider '% 1!'.
    Errore 7314: Provider OLE DB '% 1!' non contiene la tabella '% 1!'
    Se si ricevono i messaggi di errore, una tabella potrebbe essere mancante nello schema Oracle o è possibile che non si disponga delle autorizzazioni sul tale tabella. Verificare che sia stato digitato il nome dello schema utilizzando lettere maiuscole. Deve essere il caso alfabetico, della tabella e delle colonne come specificato nelle tabelle di sistema Oracle.

    Nei server Oracle, una tabella o una colonna che viene creata senza le virgolette doppie è memorizzata in lettere maiuscole. Se la tabella o la colonna è racchiuso tra virgolette doppie, come viene memorizzata nella tabella o la colonna.

    La chiamata riportata di seguito viene illustrato se la tabella esiste nello schema Oracle. Questa chiamata è inoltre illustrato il nome di tabella esatta.
    sp_tables_ex  @table_server=Ora817Link, @table_schema='your_schema_name'
    Per ulteriori informazioni sui messaggi di errore 7306, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
    240340  (http://support.microsoft.com/kb/240340/ ) Query distribuite di SQL con Oracle provoca errore "Impossibile aprire la tabella"
  • messaggio 6
    Errore 7413: Impossibile eseguire un accesso autenticato di Windows NT perché non è disponibile la delega.
    Messaggio 18456, livello 14, stato 1, riga 1 accesso non riuscito per l'utente ' \ '.
    Le informazioni seguenti sono dalla documentazione in linea:
    Questo messaggio di errore indica che si sta tentando una query distribuita per un account di accesso autenticato di Microsoft Windows senza un mapping di accesso esplicite. In un ambiente di sistema operativo di protezione, delega non è supportata, verrà autenticato gli account di accesso necessario un mapping esplicito a un account di accesso remoto e la password creata tramite sp_addlinkedsrvlogin .
  • messaggio 7
    Errore 7354: OLE DB provider 'MSDAORA' fornito metadati non validi per la colonna '% 1!'. Il tipo di dati non è supportato.
    Se viene visualizzato questo messaggio di errore, è possibile che si verifichino il bug descritto nell'articolo della Microsoft Knowledge Base riportato di seguito:
    243027  (http://support.microsoft.com/kb/243027/ ) FIX: Numero di colonna in Oracle causa errore 7354
  • messaggio 8
    Errore 7356: OLE DB provider 'MSDAORA' fornito metadati inconsistenti per una colonna. Le informazioni dei metadati è state modificate in fase di esecuzione.
    Se la query del server collegato utilizza una visualizzazione di Oracle, è possibile che si verifichino il problema descritto nel seguente articolo della Microsoft Knowledge Base:
    251238  (http://support.microsoft.com/kb/251238/ ) Le query distribuite restituiscano errore 7356 con MSDAORA
  • messaggio 9
    Errore 7391: L'operazione può essere eseguita non perché il provider OLE DB 'MSDAORA' non supporta le transazioni distribuite. Traccia di errore OLE DB [OLE DB provider 'MSDAORA' ITransactionJoin::JoinTransaction restituito 0x8004d01b]
    Verificare che le versioni OCI sono registrate correttamente come descritto precedentemente in questo articolo.

    Nota Se le voci del Registro di sistema sono tutti corrette, viene caricato il file MtxOCI.dll. Se non viene caricato il file MtxOCI.dll, non è possibile eseguire transazioni distribuite in Oracle, utilizzare Provider Microsoft OLE DB per Oracle oppure utilizza il Driver Microsoft ODBC per Oracle. Se si utilizza un provider di terze parti e viene visualizzato l'errore 7391, verificare che il provider di OLE DB che si sta utilizzando supporta le transazioni distribuite. Se il provider OLE DB supporta transazioni distribuite, è necessario verificare che Microsoft Distributed Transaction Coordinator (MSDTC) è in esecuzione.
  • messaggio 10
    Errore 7392: Impossibile avviare una transazione per il provider OLE DB 'MSDAORA'. Traccia di errore OLE DB [OLE/DB ITransactionLocal:: StartTransaction 'MSDAORA' restituito 0x8004d013: ISOLEVEL = 4096].
    Le informazioni seguenti sono dalla documentazione in linea:
    Il provider OLE DB errore 7392 perché solo una transazione può essere attiva per questa sessione. Questo errore indica che un'istruzione di modifica dei dati si sta tentando con un provider OLE DB quando la connessione è in una transazione esplicita o implicita e il provider OLE DB non supporta transazioni nidificate. SQL Server richiede il supporto in modo che, a determinate condizioni di errore, è possibile terminare gli effetti dell'istruzione di modifica dei dati mentre si continua con la transazione.
    Se SET XACT_ABORT è ON, SQL Server non richiede supporto transazione nidificata il provider OLE DB. Eseguire di conseguenza, SET XACT_ABORT ON prima di eseguire istruzioni di modifica dei dati su tabelle remote in una transazione implicita o esplicita. Eseguire questa operazione nel caso in cui il provider OLE DB che si sta utilizzando non supporta transazioni nidificate.

Riferimenti

Per ulteriori informazioni, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportato di seguito:
244661  (http://support.microsoft.com/kb/244661/ ) Limitazioni del driver Microsoft Oracle ODBC e provider OLE DB
259959  (http://support.microsoft.com/kb/259959/ ) Tecniche di debug di problemi di connettività a un server Oracle utilizzando il driver ODBC e il provider OLE DB
239719  (http://support.microsoft.com/kb/239719/ ) Supporto del provider Microsoft ODBC driver/OLE DB per Oracle w.r.t Oracle 8.x
193893  (http://support.microsoft.com/kb/193893/ ) Informazioni sull'utilizzo di Oracle con componenti COM + e Microsoft Transaction Server
191168  (http://support.microsoft.com/kb/191168/ ) Errore "-2147168246 (8004d00a)" integrazione sulla chiamata transazione dell'oggetto non riuscita
Per ulteriori informazioni sull'utilizzo di un server collegato DB2 con, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportato di seguito:
218590  (http://support.microsoft.com/kb/218590/ ) Configurazione di origini dati per il provider Microsoft OLE DB per DB2
216428  (http://support.microsoft.com/kb/216428/ ) Configurazione Driver Microsoft ODBC per DB2

Le informazioni in questo articolo si applicano a:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 64-bit Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Workgroup Edition
Chiavi: 
kbmt kbhowtomaster KB280106 KbMtit
Traduzione automatica articoliTraduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell’articolo: 280106  (http://support.microsoft.com/kb/280106/en-us/ )
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.
Condividi
Altre opzioni per il supporto
Forum del supporto di Microsoft Community
Contattaci direttamente
Ricerca di un partner certificato Microsoft
Microsoft Store