Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Usare Oracle da SQL Server

Collegare e visualizzare tabelle tra i due sistemi
Collegare e visualizzare tabelle tra i due sistemi
Link copiato negli appunti

La Oracle Corporation è uno dei maggiori vendor di database al mondo. Il suo prodotto di punta, Oracle 8i , è da molti ritenuto il migliore del settore anche se la Microsoft CorporationÃ" con l'ultimo nato, SQL Server 2000, gli dà filo da torcere.

In questo articolo descriveremo come collegare un database Oracle (la versione Personal Edition è scaricabile dal sito http://www.oracle.com) a SQL Server e successivamente come visualizzare le tabelle collegate su pagine ASP. Per raggiungere il nostro obiettivo dobbiamo creare su SQL Server un server collegato detto più correttamente Linked Server.

Tramite un linked server possiamo collegarci da SQL Server alle più disparate
sorgenti dati da OracleÃ’ a Index Server, da Active Directory a Access, da Excel
ad un semplice file di testo ASCII. Una volta creato un server collegato possiamo generare query eterogenee e ad esempio fare una JOIN tra una tabella Oracle ed una su SQL Server oppure usare la flessibilità di T-SQL per interrogare le tabelle su altre sorgenti dati!

Come creare un Linked Server per Oracle

Apriamo il query analyzer, facciamo la login al server, digitanto lo user id
(usiamo sa) e la password corretti, ed assicuriamoci di essere posizionati sul database master, come indicato in figura:

Screenshot

Per creare il linked server dobbiamo eseguire due stored procedure di sistema:

  1. sp_addlinkedserver
  2. sp_addlinkedsrvlogin
    al database Oracle
  3. Passo 1:

    Vediamo la sintassi della procedura di sistema da utilizzare (come da documentazione MS):

    sp_addlinkedserver @server = ' server '

        
    , @srvproduct = ' product_name '

        [ , @provider = ' provider_name '

        [ , @datasrc = ' data_source '

        [ , @location = ' location '

        [ , @provstr = ' provider_string '

        [ , @catalog = ' catalog '

    Aggiunge il linked server, ovviamente dovete sostituire i parametri del mio
    Oracle con i vostri:

    1. OraDemo
    2. Oracle
    3. MSDAORA
    4. orcl

    Premete F5 per far girare la query.

    Passo 2:

    Vediamo la sintassi dell'altra procedura di sistema da utilizzare (come da
    documentazione MS):

    sp_addlinkedsrvlogin @rmtsrvname rmtsrvname
        [ , [ @useself useself
        [ , [ @locallogin locallogin
        [ , [ @rmtuser rmtuser
        [ , [ @rmtpassword rmtpassword

    Server per mappare una login (username e password) tra l'instanza di SQL Server locale e il server collegato remoto.

    1.        OraDemo
    2.        FALSE @rmtuser @rmtpassword
    3.        NULL
    4.        scott
    5.        tiger

    Premete F5 per far girare la query.

    Ora avete creato il vostro Linked Server ad Oracle, come da figura aprite Enterprise Manger e dovreste vedere una nuova voce tra i linked servers:

    Screenshot

    Creiamo una query ad Oracle su SQL Server

    Ora oltre al nostro SQL Server abbiamo un altro server remoto, il database
    Oracle sotto il nome di OraDemo!

    Vediamo come fare la nostra prima query, apriamo il query analyzer connettiamoci ad un database qualsiasi nel mio caso ho scelto pubs e proviamo a digitare la seguente istruzione select:


    INNER JOIN
    OraDemo..SCOTT.DEPT AS B
    ON
    B.DEPTNO = A.DEPTNO

    Premete F5 per far girare la query e dovreste vedere come per magia nel query
    analyzer di SQL Server il contenuto della tabella EMP di Oracle!

    Per rendere più comode le interrogazioni al linked server possiamo creare una
    vista all'interno del database pubs

    CREATE VIEW OracleEmp
    AS
    SELECT A.ENAME, A.JOB, B.DNAME FROM OraDemo..SCOTT.EMP AS A
    INNER JOIN
    OraDemo..SCOTT.DEPT AS B
    ON
    B.DEPTNO = A.DEPTNO

    Ed ora non ci rimane che scrivere la nostra pagina ASP per visualizzare i
    dati, forse la cosa più semplice perché potrete fare tutto come si trattasse di
    una normale vista di SQL Server, senza connettersi ad Oracle:

    response.write "<hr>"
    Set EMP = Server.CreateObject("ADODB.Connection")
    EMP.Open "Provider=SQLOLEDB;Data Source=LUCASQLSRV_1;User ID=sa;Password=ciaociao;Initial
    Catalog=pubs"
    Set rs = EMP.Execute("select * from OracleEmp")
    Do While not rs.eof
    response.write rs(0) & " - " & rs(1) & " - "
    & rs(2) & "<br>"
    rs.movenext
    loop
    Set EMP = nothing
    response.write "<hr>"

    Semplicissimo no! Allegato all'articolo trovere il file sql per creare il
    linked server, ovviamente dovete avere installato anche Oracle sul vostro PC.
    In un prossimo articolo vedremo come fare query al file system del PC dal nostro
    SQL server.

Ti consigliamo anche