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, per collegarsi ad Oracle
  2. sp_addlinkedsrvlogin, per mappare una login valida per connettersi
    al database Oracle

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 è il nome del linked server, può essere un nome a vostro piacimento
  2. Oracle è il nome del prodotto
  3. MSDAORA è il nome del provider dati
  4. orcl è il nome della mia istanza globale di oracle (è il nome SQL*NET per la connessione ad Oracle)

EXEC sp_addlinkedserver 'OraDemo', 'Oracle', 'MSDAORA', '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 è il nome del linked server che abbiamo appena creato
  2.        FALSE per poter accedere al server collegato autenticandosi con i parametri specificati sotto (@rmtuser e @rmtpassword)
  3.        NULL lasciate questo valore se volote che tutte le login locali possono accedere al server collegato
  4.        scott è lo username standard di accesso al database demo di Oracle
  5.        tiger è la password standard di accesso al database demo di Oracle

EXEC sp_addlinkedsrvlogin 'OraDemo', 'FALSÈ, NULL, 'scott', '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:

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

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