Come impostare e risolvere i problemi relativi a un server collegato a un database Oracle in SQL Server

Traduzione articoli Traduzione articoli
Identificativo articolo: 280106 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

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 basilari per errori comuni che possono verificarsi quando si configura un server collegato a Oracle.

Passaggi per impostare un server collegato a Oracle

  1. ╚ necessario installare il software client Oracle nel thecomputer che esegue SQL Server cui Ŕ impostato il server collegato.
  2. Installa il driver desiderato nel computer che esegue SQL Server.Microsoft supporta solo MicrosoftOLE DB Provider per Oracle e il Driver Microsoft ODBC per Oracle. Se si utilizza un provider di terze parti o un toconnect di driver di terze parti per Oracle, Ŕ necessario contattare il rispettivo fornitore per eventuali problemi che possono verificarsi con i provider o driver.
  3. Se si utilizza MicrosoftOLE DB Provider per Oracle e il Driver Microsoft ODBC per Oracle, considerare quanto segue:
    • Il provider OLE DB e il driver ODBC forniti con Microsoft Data Access Components (MDAC) richiedono SQL * Net 2.3.xo versione successiva. ╚ necessario installare Oracle 7.3.il software client x o versioni successive, sul computer client. Il computer client Ŕ il computer che esegue SQL Server.
    • Assicurarsi di disporre di MDAC 2.5 o versione successiva installato nel computer che esegue SQL Server. Con MDAC 2.1 o con una versione precedente, Ŕ Impossibile connettersi al database che utilizzano Oracle 8.x o versione successiva.
    • Per attivare MDAC 2.5 o versioni successive, per lavorare con il software client Oracle, Ŕ necessario modificare il Registro di sistema sul computer client che esegue SQL Server come indicato nella seguente tabella.
                 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 l'installazione di software client theOracle.
  5. Nel computer che esegue SQL Server, impostare un server collegato utilizzando uno script thefollowing.
    -- 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 parametro @datasrc per specificare un nome DSN. Per una connessione senza DSN, la stringa del provider viene fornita tramite il parametro @provstr . Con il Provider Microsoft OLE DB per Oracle, utilizzare l'alias del server Oracle configurato nel file tnsnames ora per il parametro @datasrc . Per ulteriori informazioni, vedere l'argomento "sp_addlinkedserver" nella documentazione in linea di SQL Server.

Messaggi di errore comuni e come risolverli

Importante Questa sezione, metodo o attivitÓ contiene passaggi su come modificare il Registro di sistema. Tuttavia, pu˛ causare seri problemi la modifica del Registro di sistema in modo non corretto. Pertanto, assicurarsi di seguire attentamente i passaggi. 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 ripristinare il Registro di sistema, fare clic sul numero dell'articolo riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base:
322756 Eseguire il backup e ripristino del Registro di sistema in Windows


╚ possibile utilizzare uno dei metodi descritti di seguito per recuperare informazioni estese sugli eventuali errori che si verificano quando si esegue una query distribuita.
  • Metodo 1
    In Query Analyzer, eseguire il codice riportato di seguito per attivare il flag di traccia 7300.
    DBCC Traceon(7300)
  • Metodo 2
    Acquisire l'evento "Errori di OLE DB" che si trova nella categoria di evento "AndWarnings errori" in SQL Profiler. Il formato del messaggio di errore Ŕ thefollowing:
    Interface::Method non riuscita con codice di errore esadecimale.
    ╚ possibile cercare il codice di errore esadecimale nel file Oledberr tale isincluded con MDAC Software Development Kit (SDK).
Di seguito Ŕ riportato un elenco dei dieci messaggi di errore comuni che possono verificarsi 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 uguali a essi in SQL Server 2000. Di conseguenza, consentano di identificare per l'ID dell'errore.

Nota Per problemi di prestazioni, cercare l'argomento "Ottimizzazione delle query distribuite" BooksOnline di SQL Server.
  • Messaggio 1
    Errore 7399: Provider OLE DB ' % ls'reported un errore. %ls
    Attivare il flag di traccia 7300 o utilizzare SQL Profiler per catturare l'evento "Errori di OLE DB" per recuperare informazioni estese di errore OLE DB.
  • Messaggio 2a
    "ORA-12154: TNS: impossibile non resolveservice nome"
    Messaggio 2b
    "Il client Oracle (TM) e networkingcomponents non sono stati trovati. Questi componenti vengono forniti da Oracle Corporationand sono parte di Oracle versione 7.3.3 (o maggiore) softwareinstallation client "
    Per ulteriori informazioni su come risolvere problemi di connettivitÓ Oracle, fare clic sul numero dell'articolo riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base:
    259959 Tecniche per eseguire il debug di problemi di connessione a un server Oracle utilizzando il driver ODBC e provider OLE DB
  • Messaggio 3
    Errore 7302: Impossibile creare aninstance del provider OLE DB 'MSDAORA'
    Assicurarsi che il file MSDAORA.dll sia registrato correttamente. (Il file MSDAORA.dll Ŕ il provider Microsoft OLE DB per il file di Oracle). Utilizzare RegSvr32.exe per registrare il Provider Microsoft OLE DB per Oracle. Se la registrazione ha esito negativo, Ŕ necessario reinstallare Microsoft Data Access Components (MDAC). Per ulteriori informazioni su MDAC, visitare il seguente sito Web Microsoft Developer Network (MSDN):
    http://msdn.microsoft.com/data/default.aspx
    Nota Se si utilizza un provider terzo di Oracle, e il provider per Oracle non pu˛ essere eseguito di fuori di un processo di SQL Server, consentono l'esecuzione in-process per le opzioni del provider changingthe. Per modificare le opzioni del provider, utilizzare uno dei metodi descritti di seguito.
    • Metodo 1
      Individuare la seguente chiave del Registro di sistema. Quindi, modificare il valore della voce AllowInProcess (DWORD) 1. Questa chiave del Registro di sistema Ŕ locatedunder il nome del provider corrispondente:
      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\ProviderName
    • Metodo 2
      Impostare l'opzione Consenti InProcess direttamente tramite SQL Server Enterprise Manager quando collegato un nuovo youadd server. Fare clic su Opzioni del Providere quindi fare clic per selezionare la casella di controllo Consenti InProcess .
  • Messaggio 4
    Errore 7303: Impossibile initializedata oggetto dal codice sorgente del provider OLE DB 'MSDAORA'. [Returnedmessage del provider OLE DB: ORA-01017: nome utente/password non valida, accesso negato] Analisi di errore OLE DB [OLE DB Provider 'MSDAORA' IDBInitialize:: Initialize restituito 0x80040e4d].
    Questo messaggio di errore indica che il server collegato non dispone di mapping di accesso corretto. ╚ possibile eseguire la procedura sp_helplinkedsrvlogin memorizzate per impostare correttamente le informazioni di accesso. Inoltre, verificare di aver specificato i parametri corretti per la configurazione l'oggetto linkedserver.
  • Messaggio di 5
    Errore 7306: Impossibile aprire la tabella '%ls' dal provider OLE DB 'MSDAORA'. La tabella specificata non esiste.[Messaggio restituito dal provider OLE DB: la tabella non esiste.][Messaggio providerreturned OLE DB: ORA-00942: tabella o visualizzazione inesistente] Analisi di errore OLE DB [OLE DB Provider 'MSDAORA' IOpenRowset:: OPENROWSET restituito 0x80040e37: la tabella Thespecified non esiste.].
    Errore 7312:Invalid utilizzo di schema e/o catalogo per il provider OLE DB '%ls'. ╚ stato fornito un partname quattro, ma il provider non espone le interfacce necessarie utilizzare un catalogo e/o schema.
    Errore durante 7313:Invalid schema o catalogo specificato per il provider '%ls'.
    Errore 7314: Provider OLE DB '%ls' non contiene la tabella '%ls'
    Se vengono visualizzati questi messaggi di errore, una tabella potrebbe essere manca nello schema Oracle oppure non si disponga delle autorizzazioni su tale tabella. Verificare che il nome dello schema Ŕ stato digitato utilizzando lettere maiuscole. Dovrebbe essere il caso in ordine alfabetico della tabella e delle colonne come indicato nelle tabelle di sistema Oracle.

    Sul lato Oracle, una tabella o una colonna che viene creata senza virgolette doppie viene memorizzata in lettere maiuscole. Se la tabella o la colonna Ŕ racchiuso tra virgolette doppie, la tabella o la colonna viene archiviata come.

    La chiamata seguente mostra se la tabella esiste nello schema di Oracle. Questa chiamata indica anche il nome esatto.
    sp_tables_ex  @table_server=Ora817Link, @table_schema='your_schema_name'
    Per ulteriori informazioni sul messaggio di errore 7306, fare clic sul seguente numero di articolo per visualizzare l'articolo della Microsoft Knowledge Base:
    240340 Query distribuite di SQL con Oracle provoca errore "Impossibile aprire la tabella"
  • Messaggio 6
    Errore 7413: Impossibile eseguire l'accesso con autenticazione di aWindows NT delega non Ŕ disponibile.
    Messaggio 18456, livello 14, stato 1, riga 1 Loginfailed per l'utente ' \'.
    Sono le seguenti informazioni dalla documentazione in linea di SQL Server:
    Questo messaggio di errore indica che si sta eseguendo una query distribuita per un account di accesso di Microsoft Windows autenticato senza un mapping di accesso esplicito. In un ambiente di sistema operativo di protezione non Ŕ supportata la delega, Windows NT autenticati 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 '%ls'. Il tipo di dati Ŕ notsupported.
    Se viene visualizzato questo messaggio di errore, Ŕ possibile che si sia riscontrato il bug descritto nell'articolo della Microsoft Knowledge Base riportato di seguito:
    243027 FIX: Colonna numerica in Oracle provoca errore 7354
  • Messaggio 8
    Errore 7356: OLE DB provider'MSDAORA' fornito metadati inconsistenti per una colonna. Waschanged di informazioni metadati in fase di esecuzione.
    Se nella query di server collegato viene utilizzata una visualizzazione di Oracle, si verifica il problema descritto nel seguente articolo della Microsoft Knowledge Base:
    251238 Le query distribuite restituiscano errore 7356 con MSDAORA
  • Messaggio 9
    Errore 7391: L'operazione potrebbe notbe eseguita perchÚ il provider OLE DB 'MSDAORA' non supporta distributedtransactions. Analisi di errore OLE DB [OLE DB Provider 'MSDAORA' ITransactionJoin::JoinTransaction restituito 0x8004d01b]
    Verificare che le versioni theOCI siano registrate correttamente, come descritto precedentemente in questo articolo.

    Nota Se le voci del Registro di sistema sono tutte corrette, il Mtxoci file isloaded. Se non viene caricato il file Mtxoci, Ŕ possibile eseguire distributedtransactions con Oracle utilizzando il Provider Microsoft OLE DB per Oracle orby utilizzando il Driver Microsoft ODBC per Oracle. Se si utilizza un provider di terze parti e riceve 7391 di errore, verificare che il provider OLE DB che si utilizzino transazioni supportsdistributed. Se il provider OLE DB supporta distributedtransactions, verificare che sia in esecuzione la Microsoft Distributed Transaction Coordinator(MSDTC).
  • Messaggio 10
    Errore 7392: Impossibile avviare atransaction per il provider OLE DB 'MSDAORA'. Analisi di errore OLE DB [OLE DB Provider'MSDAORA' ITransactionLocal:: StartTransaction restituito 0x8004d013:ISOLEVEL = 4096].
    Sono le seguenti informazioni dalla documentazione in linea di SQL Server:
    Il provider OLE DB ha restituito l'errore 7392 perchÚ solo una transazione pu˛ essere attiva per questa sessione. Questo errore indica che si sta tentando un'istruzione di modifica dati rispetto a 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 questo 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 l'opzione SET XACT_ABORT Ŕ ON, SQL Server non necessita del supporto di nestedtransaction dal provider OLE DB. Pertanto, eseguire SET XACT_ABORT ONbefore si eseguono istruzioni di modifica dei dati in tabelle remote in animplicit o transazione esplicita. Eseguire questa operazione nel caso in cui il provider OLE DB che si sta utilizzando molto supporto transazioni nidificate.

Riferimenti

Per ulteriori informazioni, fare clic sui numeri per visualizzare gli articoli della Microsoft Knowledge Base:
244661 Limitazioni dei driver Microsoft ODBC per Oracle e il provider OLE DB
259959 Tecniche per eseguire il debug di problemi di connessione a un server Oracle utilizzando il driver ODBC e provider OLE DB
239719 PossibilitÓ di supporto del provider Microsoft ODBC driver/OLE DB per Oracle w.r.t Oracle 8. x
193893 Informazioni sull'utilizzo di Oracle con componenti COM+ e Microsoft Transaction Server
191168 Integrazione nella transazione dell'oggetto chiamante di errore "-2147168246 (8004d00a)" non riuscita.
Per ulteriori informazioni sull'utilizzo di un server collegato e DB2, fare clic sui numeri per visualizzare gli articoli della Microsoft Knowledge Base:
218590 Configurazione delle origini dati per il provider Microsoft OLE DB per DB2
216428 Configurazione driver Microsoft ODBC per DB2

ProprietÓ

Identificativo articolo: 280106 - Ultima modifica: lunedý 22 dicembre 2014 - Revisione: 8.0
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:á
kbsqlsetup kbhowtomaster kbmt KB280106 KbMtit
Traduzione automatica articoli
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: 280106
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.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com