Giu 24

Integrazione di Oracle in SQL Server

Poco tempo fa mi sono trovato a dover integrare i dati di un database Oracle 11g con SQL Server 2008 utilizzando i server collegati. Di per se la procedura non è particolarmente complessa, ma io stesso mi sono dovuto districare tra varie guide, praticamente tutte in inglese, talvolta anche contrastanti tra loro.
Prima di cominciare bisogna aver presente quali architetture sono in uso sui due sistemi. Nel mio caso la macchina SQL Server (MSSQL) è un cluster fisico a 64bit, mentre quella Oracle è una macchina virtuale a 32bit.

Installazione del client Oracle
Il primo passo è installare sulla macchina MSSQL il client Oracle reperibile su technet.oracle.com, fornisce le librerie di rete necessarie a stabilire la connessione con Oracle.
Nel mio caso ho scaricato il file 11107_w2k8_x64_production_client.zip.
Durante l’installazione, alla schermata Select Installation Type, scegliete l’opzione Runtime e completate l’installazione scegliendo dove installare il software.

Configurazione
Per configurare il client Oracle, eseguire Oracle Net Configuration Assistant selezionando Start, Tutti i programmi, Oracle – OraClient11g_home, Configuration and Migration Tools, e infine Net Configuration Assistant.
Cliccare su Next finche non viene proposta l’opzione Local Net Service Name, per creare una nuova configurazione, selezionare Add e ancora su Next.
Vi verrà richiesto di immettere il nome del servizio (Questo nome viene creato automaticamente durante l’installazione del server Oracle 11g. Il valore predefinito è ORCL, ma questo nome può essere cambiato. Se non si conosce il nome del servizio Oracle, sarà possibile trovarlo sul server Oracle e selezionando Start, Tutti i programmi, Oracle – OraDb11g_home1, Configuration and Migration Tools, Administration Assistant for Windows. Una volta avviato, espandere il nodo Computers e quindi il nodo dell’host locale e fare clic sul nodo Databases. I nomi dei servizi di database Oracle verranno visualizzati nel riquadro destro), una volta fatto, proseguire e selezionare il protocollo TCP, verrà chiesto di configurare la connessione. Nel campo host inserire l’hostname del server Oracle o il suo indirizzo IP; la porta predefinita di Oracle è la 1521, modificarla se necessario con l’apposita funzione. Ora possiamo fare un test della connessione, se abbiamo fatto tutto correttamente, otterremo il messaggio Test Succesfull

Configurazione del server collegato
Apriamo il nostro SQL Server Management Studio (SSMS), ora abbiamo 2 possibilità per creare il nostro collegamento. Il primo metodo utilizza la creazione guidata dal nodo Oggetti server (Server Object), ma io sconsiglio questo metodo perché a me ha causato un crash dell’agent di SQL mentre sceglievo il tipo di connettore.
Il secondo metodo utilizza poche istruzione T-SQL che rendono il processo molto più veloce e sicuro, non vi spaventate non serve che siate esperti, basta modificare il nome con quello del servizio che abbiamo configurato prima e dare un nome che ci piace al server collegato nel primo comando, e sostituire USER e PWD nel secondo con i parametri di accesso corretti:

EXEC master.dbo.sp_addlinkedserver @server = N'NOME_LINKED_SERVER', 
@srvproduct=N'OraOLEDB', @provider=N'OraOLEDB.Oracle', 
@datasrc=N'NOME_SERVZIO_ORACLE'
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'NOME_LINKED_SERVER',
@useself=N'False', @locallogin=NULL,@rmtuser=N'USER_ORACLE',
@rmtpassword='PWD_ORACLE'

Ecco ora possiamo finalmente fare la nostra prima query al nostro server collegato Oracle:

SELECT *
FROM [NOME_LINKED_SERVER]..[NOME_DB].[NOME_TABELLA]

Spero che questa guida vi sia utile
Alla prossima

Basato sulla guida di Michael Otey

Apr 21

Web-Designers vs Web-Developers

Apr 20

Coffee vs Tea

Feb 09

Infografica

Infografica

Infografica

Designed by Colin Harman

Mi ha fatto davvero ridere quando l’ho vista

Gen 25

Calcolare check-digit degli EAN 13 con PHP

Questa funzione permette di calcolare il check digit degli EAN13, utile sia dovendo generarlo che dovendo verificarne la lettura corretta

function get_ean_checkdigit($ean12, $full){
 
	$ean12 =(string)$ean12;
	// 1. Sommo le posizioni dispari
	$even_sum = $ean12{1} + $ean12{3} + $ean12{5} + $ean12{7} + $ean12{9} + $ean12{11};
	// 2. le moltiplico x 3
	$even_sum_three = $even_sum * 3;
	// 3. Sommo le posizioni pari
	$odd_sum = $ean12{0} + $ean12{2} + $ean12{4} + $ean12{6} + $ean12{8} + $ean12{10};
	// 4. Sommo i parziali precedenti
	$total_sum = $even_sum_three + $odd_sum;
	// 5. Il check digit è il numero più piccolo sottomultiplo di 10
	$next_ten = (ceil($total_sum/10))*10;
	$check_digit = $next_ten - $total_sum;
 
	if($full==true) { // Ritorna tutto l'ean
		return $ean12.$check_digit;
	}
	else { // Ritorna solo il check-digit
		return $check_digit;
	}
}

Post precedenti «

» Post successivi