Sintassi Openquery SQL

In SQL Server di Microsoft è possibile accedere a motori di database e sorgenti dati esterni, come MySql e AS400.

Per fare ciò occorre definire un Linked Server tramite SQL Management Studio, dove si andrà a specificare la fonte dati e le credenziali di accesso.

In seguito si usa un comando di T-SQL chiamato OpenQuery per poter accedere alle tabelle offerte dal linked server, sia in lettura che in scrittura (se abilitato). Inoltre è possibile eseguire procedure sul sistema collegato.

Per comodità riporto la sintassi dei vari utilizzi di OpenQuery.
Attenzione agli apici e tenere presente che il codice SQL tra apici non è T-SQL ma SQL del sistema a cui ci stiamo collegando.

Lettura dati

SELECT * FROM OPENQUERY (LINKED_SERVER, 'SELECT * FROM TABELLA_HOST WHERE CAMPO = ''A'' AND CAMPO1 = 1')

Inserimento

INSERT INTO OPENQUERY (LINKED_SERVER, 'SELECT * FROM TABELLA_HOST')
(CAMPO1, CAMPO2, CAMPON)
SELECT 'V1', 'V2', 123

Cancellazione

DELETE OPENQUERY (LINKED_SERVER, 'SELECT * FROM TABELLA_HOST WHERE CAMPO = ''123''')

Aggiornamento

UPDATE OPENQUERY (LINKED_SERVER, 'SELECT * FROM TABELLA_HOST WHERE CAMPO = ''0''')
SET CAMPO1 = 3

UPDATE A
SET CAMPO = VALORE
FROM OPENQUERY (LINKED_SERVER, 'SELECT * FROM TABELLA_HOST WHERE CAMPO1 = ''VALORE1''') AS A
INNER JOIN TABELLA B ON A.CAMPO2 = B.CAMPO2

oppure:

EXEC ('UPDATE TABELLA_HOST  SET CAMPO = VALORE WHERE CAMPO1 = VALORE1') AT LINKED_SERVER

Esecuzione

EXEC ('CALL NOMEPROCEDURA (''ARGOMENTO'')') AT LINKED_SERVER

 

Autore: Sergio Roberto Boarina